f7870e1d2f
1- Expand and migrate database in first keystone node 2- Upgrade all nodes sequentially along with updation of each node's configuration file with latest release version 3- Last keystone node, contract database With this patch, there is small downtime when all containers are restarted. It will be fixed in other patch. [1] http://docs.openstack.org/developer/keystone/upgrading.html#upgrading-without-downtime Co-Authored-By: Surya Prakash Singh <surya.singh@nectechnologies.in> Co-Authored-By: Eduardo Gonzalez <dabarren@gmail.com> Co-Authored-By: Duong Ha-Quang <duonghq@vn.fujitsu.com> Partially-Implements: blueprint ks-rolling-upgrade-role Change-Id: I2159af567c40848840ff5e483e7d1f6de760b435
120 lines
4.6 KiB
YAML
120 lines
4.6 KiB
YAML
---
|
|
# NOTE: Handler order matter, init database upgrade must be before other handlers
|
|
# finish database upgrade must be the last handler.
|
|
|
|
- name: Init keystone database upgrade
|
|
vars:
|
|
service_name: "keystone"
|
|
service: "{{ keystone_services[service_name] }}"
|
|
kolla_docker:
|
|
action: "start_container"
|
|
common_options: "{{ docker_common_options }}"
|
|
detach: False
|
|
environment:
|
|
KOLLA_UPGRADE:
|
|
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
|
image: "{{ service.image }}"
|
|
labels:
|
|
KOLLA_UPGRADE:
|
|
name: "init_upgrade_database"
|
|
restart_policy: "never"
|
|
volumes: "{{ service.volumes|reject('equalto', '')|list }}"
|
|
run_once: True
|
|
when:
|
|
- action == "upgrade"
|
|
- service.enabled | bool
|
|
- inventory_hostname == groups[service.group][0]
|
|
|
|
- name: Restart keystone container
|
|
vars:
|
|
service_name: "keystone"
|
|
service: "{{ keystone_services[service_name] }}"
|
|
config_json: "{{ keystone_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
|
keystone_conf: "{{ keystone_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
|
policy_json: "{{ keystone_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
|
keystone_container: "{{ check_keystone_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 keystone_conf.changed | bool
|
|
or keystone_domains.changed | bool
|
|
or policy_json.changed | bool
|
|
or keystone_wsgi.changed | bool
|
|
or keystone_paste_ini.changed | bool
|
|
or keystone_container.changed | bool
|
|
|
|
- name: Restart keystone-fernet container
|
|
vars:
|
|
service_name: "keystone-fernet"
|
|
service: "{{ keystone_services[service_name] }}"
|
|
config_json: "{{ keystone_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
|
keystone_conf: "{{ keystone_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
|
policy_json: "{{ keystone_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
|
keystone_fernet_container: "{{ check_keystone_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 keystone_conf.changed | bool
|
|
or policy_json.changed | bool
|
|
or keystone_fernet_confs.changed | bool
|
|
or keystone_fernet_container.changed | bool
|
|
|
|
- name: Restart keystone-ssh container
|
|
vars:
|
|
service_name: "keystone-ssh"
|
|
service: "{{ keystone_services[service_name] }}"
|
|
config_json: "{{ keystone_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
|
keystone_ssh_container: "{{ check_keystone_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 keystone_ssh_confs.changed | bool
|
|
or keystone_ssh_container.changed | bool
|
|
|
|
- name: Finish keystone database upgrade
|
|
vars:
|
|
service_name: "keystone"
|
|
service: "{{ keystone_services[service_name] }}"
|
|
kolla_docker:
|
|
action: "start_container"
|
|
common_options: "{{ docker_common_options }}"
|
|
detach: False
|
|
environment:
|
|
KOLLA_FINISH_UPGRADE:
|
|
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
|
image: "{{ service.image }}"
|
|
labels:
|
|
KOLLA_UPGRADE:
|
|
name: "finish_upgrade_database"
|
|
restart_policy: "never"
|
|
volumes: "{{ service.volumes|reject('equalto', '')|list }}"
|
|
run_once: True
|
|
when:
|
|
- action == "upgrade"
|
|
- service.enabled | bool
|
|
- inventory_hostname == groups[service.group][-1]
|