Skip to content
Snippets Groups Projects
Commit c5f9ea95 authored by Radosław Piliszek's avatar Radosław Piliszek
Browse files

[Train] Fix Tacker config for the local Glance store

It turned out the previous fix ([1]) was incomplete.
Additionally, it seems we have to limit Tacker server
to one instance co-located with conductor.

[1] https://review.opendev.org/684275
commit b96ade3c

Change-Id: I9ce27d5f68f32ef59e245960e23336ae5c5db905
Closes-bug: #1853715
Related-bug: #1845142
parent cfdcaf3a
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ tacker_services: ...@@ -5,7 +5,7 @@ tacker_services:
tacker-server: tacker-server:
container_name: "tacker_server" container_name: "tacker_server"
group: "tacker-server" group: "tacker-server"
host_in_groups: "{{ inventory_hostname in groups['tacker-server'] }}" host_in_groups: "{{ inventory_hostname in tacker_hosts }}"
enabled: true enabled: true
image: "{{ tacker_server_image_full }}" image: "{{ tacker_server_image_full }}"
volumes: "{{ tacker_server_default_volumes + tacker_server_extra_volumes }}" volumes: "{{ tacker_server_default_volumes + tacker_server_extra_volumes }}"
...@@ -16,15 +16,17 @@ tacker_services: ...@@ -16,15 +16,17 @@ tacker_services:
mode: "http" mode: "http"
external: false external: false
port: "{{ tacker_server_port }}" port: "{{ tacker_server_port }}"
custom_member_list: "{{ tacker_haproxy_members.split(';') }}"
tacker_server_external: tacker_server_external:
enabled: "{{ enable_tacker }}" enabled: "{{ enable_tacker }}"
mode: "http" mode: "http"
external: true external: true
port: "{{ tacker_server_port }}" port: "{{ tacker_server_port }}"
custom_member_list: "{{ tacker_haproxy_members.split(';') }}"
tacker-conductor: tacker-conductor:
container_name: "tacker_conductor" container_name: "tacker_conductor"
group: "tacker-conductor" group: "tacker-conductor"
host_in_groups: "{{ inventory_hostname in tacker_conductor_hosts }}" host_in_groups: "{{ inventory_hostname in tacker_hosts }}"
enabled: true enabled: true
image: "{{ tacker_conductor_image_full }}" image: "{{ tacker_conductor_image_full }}"
volumes: "{{ tacker_conductor_default_volumes + tacker_conductor_extra_volumes }}" volumes: "{{ tacker_conductor_default_volumes + tacker_conductor_extra_volumes }}"
...@@ -59,19 +61,27 @@ tacker_server_default_volumes: ...@@ -59,19 +61,27 @@ tacker_server_default_volumes:
- "{{ kolla_dev_repos_directory ~ '/tacker/tacker:/var/lib/kolla/venv/lib/python2.7/site-packages/tacker' if tacker_dev_mode | bool else '' }}" - "{{ kolla_dev_repos_directory ~ '/tacker/tacker:/var/lib/kolla/venv/lib/python2.7/site-packages/tacker' if tacker_dev_mode | bool else '' }}"
- "/etc/localtime:/etc/localtime:ro" - "/etc/localtime:/etc/localtime:ro"
- "kolla_logs:/var/log/kolla/" - "kolla_logs:/var/log/kolla/"
# NOTE(yoctozepto): Starting in Train, this volume must be shared
# between all instances of both Tacker services (Server, Conductor)
- "kolla_tacker_csar_files:/var/lib/tacker/csar_files/"
tacker_conductor_default_volumes: tacker_conductor_default_volumes:
- "{{ node_config_directory }}/tacker-conductor/:{{ container_config_directory }}/:ro" - "{{ node_config_directory }}/tacker-conductor/:{{ container_config_directory }}/:ro"
- "{{ kolla_dev_repos_directory ~ '/tacker/tacker:/var/lib/kolla/venv/lib/python2.7/site-packages/tacker' if tacker_dev_mode | bool else '' }}" - "{{ kolla_dev_repos_directory ~ '/tacker/tacker:/var/lib/kolla/venv/lib/python2.7/site-packages/tacker' if tacker_dev_mode | bool else '' }}"
- "/etc/localtime:/etc/localtime:ro" - "/etc/localtime:/etc/localtime:ro"
- "kolla_logs:/var/log/kolla/" - "kolla_logs:/var/log/kolla/"
- "kolla_tacker_vnfpackages:/var/lib/tacker/vnfpackages/" - "kolla_tacker_vnfpackages:/var/lib/tacker/vnfpackages/"
# NOTE(yoctozepto): Starting in Train, this volume must be shared
# between all instances of both Tacker services (Server, Conductor)
- "kolla_tacker_csar_files:/var/lib/tacker/csar_files/" - "kolla_tacker_csar_files:/var/lib/tacker/csar_files/"
tacker_extra_volumes: "{{ default_extra_volumes }}" tacker_extra_volumes: "{{ default_extra_volumes }}"
tacker_server_extra_volumes: "{{ tacker_extra_volumes }}" tacker_server_extra_volumes: "{{ tacker_extra_volumes }}"
tacker_conductor_extra_volumes: "{{ tacker_extra_volumes }}" tacker_conductor_extra_volumes: "{{ tacker_extra_volumes }}"
tacker_conductor_hosts: "{{ [groups['tacker-conductor']|first] }}" # NOTE(yoctozepto): Starting in Train, this variable is used to co-locate all
# Tacker services on one host since we do not provide shared filesystem
# to satisfy kolla_tacker_csar_files volume needs.
tacker_hosts: "{{ [groups['tacker']|first] }}"
#################### ####################
# OpenStack # OpenStack
...@@ -120,3 +130,8 @@ tacker_ks_users: ...@@ -120,3 +130,8 @@ tacker_ks_users:
user: "{{ tacker_keystone_user }}" user: "{{ tacker_keystone_user }}"
password: "{{ tacker_keystone_password }}" password: "{{ tacker_keystone_password }}"
role: "admin" role: "admin"
####################
# HAProxy
####################
tacker_haproxy_members: "{% for host in tacker_hosts %}server {{ hostvars[host]['ansible_hostname'] }} {{ 'api' | kolla_address(host) }}:{{ tacker_server_port }} check inter 2000 rise 2 fall 5;{% endfor %}"
--- ---
- name: Warn about Train upgrade
debug:
msg: >-
In Train, Tacker started using local filesystem to store VNF
packages and CSAR files.
Kolla Ansible provides no shared filesystem capabilities, hence only
one instance of each Tacker service is deployed and all on the same host.
Previous multinode deployments will be descaled when running upgrade.
- name: Stop and remove extra tacker-conductor containers
vars:
service_name: "tacker-conductor"
service: "{{ tacker_services[service_name] }}"
become: true
kolla_docker:
action: "stop_and_remove_container"
name: "{{ service.container_name }}"
when:
- inventory_hostname not in tacker_hosts
- name: Stop and remove extra tacker-server containers
vars:
service_name: "tacker-server"
service: "{{ tacker_services[service_name] }}"
become: true
kolla_docker:
action: "stop_and_remove_container"
name: "{{ service.container_name }}"
when:
- inventory_hostname not in tacker_hosts
- include_tasks: config.yml - include_tasks: config.yml
- include_tasks: bootstrap_service.yml - include_tasks: bootstrap_service.yml
......
...@@ -22,13 +22,11 @@ ...@@ -22,13 +22,11 @@
}, },
{ {
"path": "/var/lib/tacker/vnfpackages", "path": "/var/lib/tacker/vnfpackages",
"owner": "tacker:tacker", "owner": "tacker:tacker"
"recurse": true
}, },
{ {
"path": "/var/lib/tacker/csar_files", "path": "/var/lib/tacker/csar_files",
"owner": "tacker:tacker", "owner": "tacker:tacker"
"recurse": true
} }
] ]
} }
...@@ -19,6 +19,10 @@ ...@@ -19,6 +19,10 @@
"path": "/var/log/kolla/tacker", "path": "/var/log/kolla/tacker",
"owner": "tacker:tacker", "owner": "tacker:tacker",
"recurse": true "recurse": true
},
{
"path": "/var/lib/tacker/csar_files",
"owner": "tacker:tacker"
} }
] ]
} }
...@@ -67,3 +67,6 @@ driver = noop ...@@ -67,3 +67,6 @@ driver = noop
[oslo_policy] [oslo_policy]
policy_file = {{ tacker_policy_file }} policy_file = {{ tacker_policy_file }}
{% endif %} {% endif %}
[glance_store]
filesystem_store_datadir = /var/lib/tacker/csar_files
...@@ -64,10 +64,10 @@ In order to enable them, you need to edit the file ...@@ -64,10 +64,10 @@ In order to enable them, you need to edit the file
.. warning:: .. warning::
In Train, Tacker Conductor started using local filesystem to store VNF In Train, Tacker started using local filesystem to store VNF
packages and CSAR files. packages and CSAR files.
Kolla Ansible provides no shared filesystem capabilities, hence only Kolla Ansible provides no shared filesystem capabilities, hence only
one instance of Tacker Conductor is deployed. one instance of each Tacker service is deployed and all on the same host.
Deploy tacker and related services. Deploy tacker and related services.
......
--- ---
upgrade: upgrade:
- | - |
In Train, Tacker Conductor started using local filesystem to store VNF In Train, Tacker started using local filesystem to store VNF
packages and CSAR files. packages and CSAR files.
Kolla Ansible provides no shared filesystem capabilities, hence only Kolla Ansible provides no shared filesystem capabilities, hence only
one instance of Tacker Conductor is deployed. one instance of each Tacker service is deployed and all on the same host.
Previous multinode deployments must manually remove all Tacker Conductors Previous multinode deployments will be descaled when running upgrade.
before proceeding with upgrade.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment