diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one index f9c6de918b..58ee74b831 100644 --- a/ansible/inventory/all-in-one +++ b/ansible/inventory/all-in-one @@ -574,3 +574,9 @@ skydive compute network +# Tacker +[tacker-server:children] +tacker + +[tacker-conductor:children] +tacker diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode index c319219ce3..6bb1a49b2c 100644 --- a/ansible/inventory/multinode +++ b/ansible/inventory/multinode @@ -591,3 +591,10 @@ skydive [skydive-agent:children] compute network + +# Tacker +[tacker-server:children] +tacker + +[tacker-conductor:children] +tacker diff --git a/ansible/roles/common/templates/conf/filter/01-rewrite.conf.j2 b/ansible/roles/common/templates/conf/filter/01-rewrite.conf.j2 index 2ca4ab71c0..956203f176 100644 --- a/ansible/roles/common/templates/conf/filter/01-rewrite.conf.j2 +++ b/ansible/roles/common/templates/conf/filter/01-rewrite.conf.j2 @@ -30,4 +30,5 @@ rewriterule27 programname ^(gnocchi-api|gnocchi-statsd|gnocchi-metricd|gnocchi-upgrade)$ openstack_python rewriterule28 programname ^(ironic-api|ironic-conductor)$ openstack_python rewriterule29 programname ^(panko-api|panko-dbsync)$ openstack_python + rewriterule30 programname ^(tacker-server|tacker-conductor)$ openstack_python diff --git a/ansible/roles/tacker/defaults/main.yml b/ansible/roles/tacker/defaults/main.yml index 297c71ad64..891f7cd037 100644 --- a/ansible/roles/tacker/defaults/main.yml +++ b/ansible/roles/tacker/defaults/main.yml @@ -2,13 +2,22 @@ project_name: "tacker" tacker_services: - tacker: - container_name: "tacker" - group: "tacker" + tacker-server: + container_name: "tacker_server" + group: "tacker-server" enabled: true - image: "{{ tacker_image_full }}" + image: "{{ tacker_server_image_full }}" volumes: - - "{{ node_config_directory }}/tacker/:{{ container_config_directory }}/:ro" + - "{{ node_config_directory }}/tacker-server/:{{ container_config_directory }}/:ro" + - "/etc/localtime:/etc/localtime:ro" + - "kolla_logs:/var/log/kolla/" + tacker-conductor: + container_name: "tacker_conductor" + group: "tacker-conductor" + enabled: true + image: "{{ tacker_conductor_image_full }}" + volumes: + - "{{ node_config_directory }}/tacker-conductor/:{{ container_config_directory }}/:ro" - "/etc/localtime:/etc/localtime:ro" - "kolla_logs:/var/log/kolla/" @@ -22,9 +31,16 @@ tacker_database_address: "{{ kolla_internal_fqdn }}:{{ database_port }}" ######## # Docker ######## -tacker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-tacker" +tacker_install_type: "{{ kolla_install_type }}" tacker_tag: "{{ openstack_release }}" -tacker_image_full: "{{ tacker_image }}:{{ tacker_tag }}" + +tacker_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ tacker_install_type }}-tacker-server" +tacker_server_tag: "{{ tacker_tag }}" +tacker_server_image_full: "{{ tacker_server_image }}:{{ tacker_server_tag }}" + +tacker_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ tacker_install_type }}-tacker-conductor" +tacker_conductor_tag: "{{ tacker_tag }}" +tacker_conductor_image_full: "{{ tacker_conductor_image }}:{{ tacker_conductor_tag }}" #################### # OpenStack diff --git a/ansible/roles/tacker/handlers/main.yml b/ansible/roles/tacker/handlers/main.yml index 718e26a4de..5cdef69a23 100644 --- a/ansible/roles/tacker/handlers/main.yml +++ b/ansible/roles/tacker/handlers/main.yml @@ -1,12 +1,12 @@ --- -- name: Restart tacker container +- name: Restart tacker-conductor container vars: - service_name: "tacker" + service_name: "tacker-conductor" service: "{{ tacker_services[service_name] }}" config_json: "{{ tacker_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" tacker_conf: "{{ tacker_confs.results|selectattr('item.key', 'equalto', service_name)|first }}" policy_json: "{{ tacker_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" - tacker_container: "{{ check_tacker_containers.results|selectattr('item.key', 'equalto', service_name)|first }}" + tacker_conductor_container: "{{ check_tacker_containers.results|selectattr('item.key', 'equalto', service_name)|first }}" kolla_docker: action: "recreate_or_restart_container" common_options: "{{ docker_common_options }}" @@ -20,4 +20,27 @@ - config_json.changed | bool or tacker_conf.changed | bool or policy_json.changed | bool - or tacker_container.changed | bool + or tacker_conductor_container.changed | bool + +- name: Restart tacker-server container + vars: + service_name: "tacker-server" + service: "{{ tacker_services[service_name] }}" + config_json: "{{ tacker_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" + tacker_conf: "{{ tacker_confs.results|selectattr('item.key', 'equalto', service_name)|first }}" + policy_json: "{{ tacker_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" + tacker_server_container: "{{ check_tacker_containers.results|selectattr('item.key', 'equalto', service_name)|first }}" + kolla_docker: + action: "recreate_or_restart_container" + common_options: "{{ docker_common_options }}" + name: "{{ service.container_name }}" + image: "{{ service.image }}" + volumes: "{{ service.volumes|reject('equalto', '')|list }}" + when: + - action != "config" + - inventory_hostname in groups[service.group] + - service.enabled | bool + - config_json.changed | bool + or tacker_conf.changed | bool + or policy_json.changed | bool + or tacker_server_container.changed | bool diff --git a/ansible/roles/tacker/tasks/bootstrap.yml b/ansible/roles/tacker/tasks/bootstrap.yml index 96ce9a402d..2cf830713b 100644 --- a/ansible/roles/tacker/tasks/bootstrap.yml +++ b/ansible/roles/tacker/tasks/bootstrap.yml @@ -10,7 +10,7 @@ name: "{{ tacker_database_name }}" register: database run_once: True - delegate_to: "{{ groups['tacker'][0] }}" + delegate_to: "{{ groups['tacker-server'][0] }}" - name: Creating tacker database user and setting permissions kolla_toolbox: @@ -26,7 +26,7 @@ priv: "{{ tacker_database_name }}.*:ALL" append_privs: "yes" run_once: True - delegate_to: "{{ groups['tacker'][0] }}" + delegate_to: "{{ groups['tacker-server'][0] }}" - include: bootstrap_service.yml when: database.changed diff --git a/ansible/roles/tacker/tasks/bootstrap_service.yml b/ansible/roles/tacker/tasks/bootstrap_service.yml index b81e2fccf1..6826236755 100644 --- a/ansible/roles/tacker/tasks/bootstrap_service.yml +++ b/ansible/roles/tacker/tasks/bootstrap_service.yml @@ -1,7 +1,7 @@ --- - name: Running tacker bootstrap container vars: - tacker: "{{ tacker_services.tacker }}" + tacker_server: "{{ tacker_services['tacker-server'] }}" kolla_docker: action: "start_container" common_options: "{{ docker_common_options }}" @@ -9,11 +9,11 @@ environment: KOLLA_BOOTSTRAP: KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" - image: "{{ tacker.image }}" + image: "{{ tacker_server.image }}" labels: BOOTSTRAP: name: "bootstrap_tacker" restart_policy: "never" - volumes: "{{ tacker.volumes|reject('equalto', '')|list }}" + volumes: "{{ tacker_server.volumes|reject('equalto', '')|list }}" run_once: True - delegate_to: "{{ groups[tacker.group][0] }}" + delegate_to: "{{ groups[tacker_server.group][0] }}" diff --git a/ansible/roles/tacker/tasks/config.yml b/ansible/roles/tacker/tasks/config.yml index fcfbc3416c..6702bcd20c 100644 --- a/ansible/roles/tacker/tasks/config.yml +++ b/ansible/roles/tacker/tasks/config.yml @@ -19,7 +19,8 @@ - inventory_hostname in groups[item.value.group] - item.value.enabled notify: - - Restart tacker container + - Restart tacker-server container + - Restart tacker-conductor container - name: Copying over tacker.conf vars: @@ -40,7 +41,8 @@ - inventory_hostname in groups[item.value.group] - item.value.enabled | bool notify: - - Restart tacker container + - Restart tacker-server container + - Restart tacker-conductor container - name: Check if policies shall be overwritten local_action: stat path="{{ node_custom_config }}/tacker/policy.json" @@ -58,7 +60,8 @@ - tacker_policy.stat.exists with_dict: "{{ tacker_services }}" notify: - - Restart tacker container + - Restart tacker-server containers + - Restart tacker-conductor container - name: Check tacker container kolla_docker: @@ -73,4 +76,5 @@ register: check_tacker_containers with_dict: "{{ tacker_services }}" notify: - - Restart tacker container + - Restart tacker-server container + - Restart tacker-conductor container diff --git a/ansible/roles/tacker/tasks/deploy.yml b/ansible/roles/tacker/tasks/deploy.yml index 864362ba5f..0b9233a0ae 100644 --- a/ansible/roles/tacker/tasks/deploy.yml +++ b/ansible/roles/tacker/tasks/deploy.yml @@ -1,9 +1,13 @@ --- - include: register.yml + when: inventory_hostname in groups['tacker-server'] - include: config.yml + when: inventory_hostname in groups['tacker-server'] or + inventory_hostname in groups['tacker-conductor'] - include: bootstrap.yml + when: inventory_hostname in groups['tacker-server'] - name: Flush handlers meta: flush_handlers diff --git a/ansible/roles/tacker/tasks/precheck.yml b/ansible/roles/tacker/tasks/precheck.yml index e381d072d3..df60eaf6f8 100644 --- a/ansible/roles/tacker/tasks/precheck.yml +++ b/ansible/roles/tacker/tasks/precheck.yml @@ -2,7 +2,7 @@ - name: Get container facts kolla_container_facts: name: - - tacker + - tacker_server register: container_facts - name: Checking free port for Tacker Server @@ -13,5 +13,5 @@ timeout: 1 state: stopped when: - - container_facts['tacker'] is not defined - - inventory_hostname in groups['tacker'] + - container_facts['tacker_server'] is not defined + - inventory_hostname in groups['tacker-server'] diff --git a/ansible/roles/tacker/tasks/pull.yml b/ansible/roles/tacker/tasks/pull.yml index c2062c774e..a467bcc328 100644 --- a/ansible/roles/tacker/tasks/pull.yml +++ b/ansible/roles/tacker/tasks/pull.yml @@ -1,5 +1,5 @@ --- -- name: Pulling tacker image +- name: Pulling tacker images kolla_docker: action: "pull_image" common_options: "{{ docker_common_options }}" diff --git a/ansible/roles/tacker/templates/tacker-conductor.json.j2 b/ansible/roles/tacker/templates/tacker-conductor.json.j2 new file mode 100644 index 0000000000..080a90a018 --- /dev/null +++ b/ansible/roles/tacker/templates/tacker-conductor.json.j2 @@ -0,0 +1,25 @@ +{ + "command": "tacker-conductor --config-file /etc/tacker/tacker.conf", + "config_files":[ + { + "source": "{{ container_config_directory }}/tacker.conf", + "dest": "/etc/tacker/tacker.conf", + "owner": "tacker", + "perm": "0600" + }, + { + "source": "{{ container_config_directory }}/policy.json", + "dest": "/etc/tacker/policy.json", + "owner": "tacker", + "perm": "0600", + "optional": true + } + ], + "permissions": [ + { + "path": "/var/log/kolla/tacker", + "owner": "tacker:tacker", + "recurse": true + } + ] +} diff --git a/ansible/roles/tacker/templates/tacker.json.j2 b/ansible/roles/tacker/templates/tacker-server.json.j2 similarity index 100% rename from ansible/roles/tacker/templates/tacker.json.j2 rename to ansible/roles/tacker/templates/tacker-server.json.j2 diff --git a/ansible/roles/tacker/templates/tacker.conf.j2 b/ansible/roles/tacker/templates/tacker.conf.j2 index 1dde691233..130294e039 100644 --- a/ansible/roles/tacker/templates/tacker.conf.j2 +++ b/ansible/roles/tacker/templates/tacker.conf.j2 @@ -1,6 +1,5 @@ [DEFAULT] debug = {{ tacker_logging_debug }} - log_dir = /var/log/kolla/tacker transport_url = rabbit://{% for host in groups['rabbitmq'] %}{{ rabbitmq_user }}:{{ rabbitmq_password }}@{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ rabbitmq_port }}{% if not loop.last %},{% endif %}{% endfor %} @@ -8,6 +7,7 @@ transport_url = rabbit://{% for host in groups['rabbitmq'] %}{{ rabbitmq_user }} bind_host = {{ api_interface_address }} bind_port = {{ tacker_server_port }} api_workers = {{ openstack_service_workers }} +service_plugins = nfvo,vnfm {% if enable_nova | bool %} nova_url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ nova_api_port }} @@ -16,22 +16,29 @@ nova_admin_password = {{ nova_keystone_password }} nova_admin_tenant_id = service nova_admin_auth_url = {{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }} -[tacker] -monitor_driver = ping,http_ping -{% if enable_ceilometer | bool %} -alarm_monitor_driver = ceilometer -{% endif %} - [tacker_nova] auth_uri = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_public_port }} auth_url = {{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }} auth_type = password -project_domain_id = {{ default_project_domain_id }} -user_domain_id = {{ default_user_domain_id }} +project_domain_name = {{ default_project_domain_id }} +user_domain_name = {{ default_user_domain_id }} project_name = service username = {{ nova_keystone_user }} password = {{ nova_keystone_password }} -auth_url = {{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }} +{% endif %} + +[nfvo] +vim_drivers = openstack + +{% if enable_barbican | bool %} +[vim_keys] +use_barbican = True +{% endif %} + +[tacker] +monitor_driver = ping,http_ping +{% if enable_ceilometer | bool %} +alarm_monitor_driver = ceilometer {% endif %} [database] @@ -42,8 +49,8 @@ max_retries = -1 auth_uri = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_public_port }} auth_url = {{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }} auth_type = password -project_domain_id = {{ default_project_domain_id }} -user_domain_id = {{ default_user_domain_id }} +project_domain_name = {{ default_project_domain_id }} +user_domain_name = {{ default_user_domain_id }} project_name = service username = {{ tacker_keystone_user }} password = {{ tacker_keystone_password }} diff --git a/ansible/site.yml b/ansible/site.yml index 05435f5926..da683b1d0d 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -663,7 +663,9 @@ - name: Apply role tacker gather_facts: false - hosts: tacker + hosts: + - tacker-server + - tacker-conductor serial: '{{ serial|default("0") }}' roles: - { role: tacker, diff --git a/releasenotes/notes/tacker-conductor-dc90739426381e14.yaml b/releasenotes/notes/tacker-conductor-dc90739426381e14.yaml new file mode 100644 index 0000000000..2927088481 --- /dev/null +++ b/releasenotes/notes/tacker-conductor-dc90739426381e14.yaml @@ -0,0 +1,11 @@ +--- +features: + - | + New Tacker conductor service is implemented. +upgrade: + - | + To support new tacker-conductor service, tacker role has been + reformated, before upgrade, tacker-server and tacker-conductor + groups should be included in inventory files. + - Tacker requires Mistral service to be enabled as of Pike release + to implement vim monitoring.