Add tacker installation

This patch provides the necessary files and changes in existing files to
deploy tacker component. Tacker is an orchestrator and VNF manager, which
is widely used as MANO component in NFV type of deployments

Change-Id: I339c9cc032f871766a89e24c2ada38063fc7ac39
This commit is contained in:
Manuel Buil 2017-07-19 17:46:36 +02:00
parent 1450119e86
commit bd79f0720a
12 changed files with 199 additions and 1 deletions

View File

@ -198,3 +198,7 @@
scm: git
src: https://git.opendaylight.org/gerrit/p/integration/packaging/ansible-opendaylight.git
version: master
- name: os_tacker
scm: git
src: https://git.openstack.org/openstack/openstack-ansible-os_tacker
version: master

View File

@ -0,0 +1,4 @@
---
mano_hosts:
aio1:
ip: 172.29.236.100

View File

@ -156,3 +156,8 @@ designate_service_password:
## Molteniron Options:
molteniron_container_mysql_password:
## Tacker options
tacker_rabbitmq_password:
tacker_service_password:
tacker_container_mysql_password:

View File

@ -10,7 +10,7 @@
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# limitations under the License
haproxy_default_services:
- service:
@ -274,3 +274,12 @@ haproxy_default_services:
haproxy_backend_options:
- "httpchk GET /"
haproxy_whitelist_networks: "{{ haproxy_octavia_whitelist_networks }}"
- service:
haproxy_service_name: tacker
haproxy_backend_nodes: "{{ groups['tacker_all'] | default([]) }}"
haproxy_port: 8888
haproxy_balance_type: http
haproxy_backend_options:
- "forwardfor"
- "httpchk"
- "httplog"

24
group_vars/all/tacker.yml Normal file
View File

@ -0,0 +1,24 @@
---
# Copyright 2017, SUSE LINUX GmbH
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
tacker_service_user_name: tacker
tacker_service_tenant_name: service
tacker_rabbitmq_userid: tacker
tacker_rabbitmq_vhost: /tacker
tacker_rabbitmq_port: "{{ rabbitmq_port }}"
tacker_rabbitmq_use_ssl: "{{ rabbitmq_use_ssl }}"
tacker_rabbitmq_servers: "{{ rabbitmq_servers }}"
tacker_rabbitmq_host_group: "{{ rabbitmq_host_group }}"

36
group_vars/tacker_all.yml Normal file
View File

@ -0,0 +1,36 @@
---
# Copyright 2017, SUSE LINUX GmbH
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
tacker_service_publicuri: "{{ openstack_service_publicuri_proto|default(tacker_service_proto) }}://{{ external_lb_vip_address }}:{{ tacker_service_port }}"
tacker_service_adminurl: "{{ tacker_service_adminuri }}/"
tacker_service_region: "{{ service_region }}"
tacker_service_in_ldap: "{{ service_ldap_backend_enabled }}"
tacker_aodh_enabled: "{{ groups['aodh_all'] is defined and groups['aodh_all'] | length > 0 }}"
tacker_gnocchi_enabled: "{{ groups['gnocchi_all'] is defined and groups['gnocchi_all'] | length > 0 }}"
# NOTE: these and their swift_all.yml counterpart should be moved back to all.yml once swift with tacker gets proper SSL support
# swift_rabbitmq_telemetry_port: "{{ rabbitmq_port }}"
# swift_rabbitmq_telemetry_use_ssl: "{{ rabbitmq_use_ssl }}"
# Ensure that the package state matches the global setting
tacker_package_state: "{{ package_state }}"
# venv fetch configuration
tacker_venv_tag: "{{ venv_tag }}"
tacker_venv_download_url: "{{ venv_base_download_url }}/tacker-{{ openstack_release }}-{{ ansible_architecture | lower }}.tgz"
# locations for fetching the default files from the git source
tacker_git_config_lookup_location: "{{ openstack_repo_url }}/openstackgit/tacker"

View File

@ -210,3 +210,8 @@ octavia_git_project_group: octavia_all
molteniron_git_repo: https://git.openstack.org/openstack/molteniron
molteniron_git_install_branch: 094276cda77d814d07ad885e7d63de8d1243750a # HEAD of "master" as of 15.08.2017
molteniron_git_project_group: molteniron_all
## Tacker service
tacker_git_repo: https://git.openstack.org/openstack/tacker
tacker_git_install_branch: f718d453ae0d35c2c016f52f9c5a3d98c328b58f # HEAD of "master" as of 15.08.2017
tacker_git_project_group: tacker_all

View File

@ -0,0 +1,36 @@
---
# Copyright 2017, SUSE Linux GmbH
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
component_skel:
tacker_server:
belongs_to:
- tacker_all
container_skel:
tacker_container:
belongs_to:
- mano_containers
contains:
- tacker_server
physical_skel:
mano_containers:
belongs_to:
- all_containers
mano_hosts:
belongs_to:
- hosts

View File

@ -0,0 +1,63 @@
---
# Copyright 2017, SUSE LINUX GmbH.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Install the tacker components
hosts: tacker_all
gather_facts: "{{ gather_facts | default(True) }}"
max_fail_percentage: 20
user: root
pre_tasks:
- include: common-tasks/os-lxc-container-setup.yml
- include: common-tasks/rabbitmq-vhost-user.yml
static: no
vars:
user: "{{ tacker_rabbitmq_userid }}"
password: "{{ tacker_rabbitmq_password }}"
vhost: "{{ tacker_rabbitmq_vhost }}"
_rabbitmq_host_group: "{{ tacker_rabbitmq_host_group }}"
when:
- inventory_hostname == groups['tacker_all'][0]
- groups[tacker_rabbitmq_host_group] | length > 0
- include: common-tasks/os-log-dir-setup.yml
vars:
log_dirs:
- src: "/openstack/log/{{ inventory_hostname }}-tacker"
dest: "/var/log/tacker"
- include: common-tasks/mysql-db-user.yml
static: no
vars:
user_name: "{{ tacker_galera_user }}"
password: "{{ tacker_container_mysql_password }}"
login_host: "{{ tacker_galera_address }}"
db_name: "{{ tacker_galera_database }}"
when: inventory_hostname == groups['tacker_all'][0]
- include: common-tasks/package-cache-proxy.yml
roles:
- role: "os_tacker"
- role: "openstack_openrc"
tags:
- openrc
- role: "rsyslog_client"
rsyslog_client_log_rotate_file: tacker_log_rotate
rsyslog_client_log_dir: "/var/log/tacker"
rsyslog_client_config_name: "99-tacker-rsyslog-client.conf"
tags:
- rsyslog
vars:
is_metal: "{{ properties.is_metal|default(false) }}"
tacker_galera_address: "{{ internal_lb_vip_address }}"
environment: "{{ deployment_environment_variables | default({}) }}"
tags:
- tacker

View File

@ -39,6 +39,7 @@
- include: os-sahara-install.yml
- include: os-molteniron-install.yml
- include: os-octavia-install.yml
- include: os-tacker-install.yml
- include: os-tempest-install.yml
when: (tempest_install | default(False)) | bool or (tempest_run | default(False)) | bool

View File

@ -65,6 +65,11 @@
- name: neutron.yml.aio
- name: nova.yml.aio
- name: octavia.yml.aio
tacker:
- name: keystone.yml.aio
- name: heat.yml.aio
- name: tacker.yml.aio
sftp_subsystem: "{{ (ansible_pkg_mgr == 'apt') | ternary('sftp /usr/lib/openssh/sftp-server','sftp /usr/libexec/openssh/sftp-server') }}"
sshd:
ListenAddress:

View File

@ -256,6 +256,9 @@ class TestAnsibleInventoryFormatConstraints(unittest.TestCase):
'magnum-infra_hosts',
'magnum_all',
'magnum_container',
'mano_all',
'mano_containers',
'mano_hosts',
'octavia-infra_hosts',
'octavia_all',
'octavia-api',
@ -388,6 +391,9 @@ class TestAnsibleInventoryFormatConstraints(unittest.TestCase):
'swift_remote',
'swift_remote_all',
'swift_remote_container',
'tacker_all',
'tacker_container',
'tacker_server',
'unbound',
'unbound_all',
'unbound_container',