Implement data migrations for rolling upgrades
In order to cater for artifact-based installed, and
rolling upgrades, this patch implements a set of local
facts to inform the db sync and online migrations
tasks.
The 'cinder_all_software_updated' variables will be
set by the playbook on each run to ensure that the
online migrations only happen once all venvs are
homogenous. This ensures that the playbook can be
executed in a serialised fashion and the data will
not be corrupted.
Change-Id: I9aacda78f92355374af3f4ab24d2d9a9b47491ed
(cherry picked from commit bca5c325eb
)
This commit is contained in:
parent
bf5c29c2d0
commit
f740a310a6
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
features:
|
||||
- The ``os_cinder`` role now provides for doing
|
||||
online data migrations once the db sync has
|
||||
been completed. The data migrations will not
|
||||
be executed until the boolean variable
|
||||
``cinder_all_software_updated`` is true. This
|
||||
variable will need to be set by the playbook
|
||||
consuming the role.
|
|
@ -17,4 +17,45 @@
|
|||
command: "{{ cinder_bin }}/cinder-manage db sync"
|
||||
become: yes
|
||||
become_user: "{{ cinder_system_user_name }}"
|
||||
when:
|
||||
- "ansible_local['openstack_ansible']['cinder']['need_db_sync'] | bool"
|
||||
changed_when: false
|
||||
register: dbsync
|
||||
|
||||
- name: Disable the db sync requirement
|
||||
ini_file:
|
||||
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
|
||||
section: cinder
|
||||
option: need_db_sync
|
||||
value: False
|
||||
when:
|
||||
- dbsync | succeeded
|
||||
|
||||
- name: Record the need for online data migrations
|
||||
ini_file:
|
||||
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
|
||||
section: cinder
|
||||
option: need_online_data_migrations
|
||||
value: True
|
||||
when:
|
||||
- dbsync | succeeded
|
||||
|
||||
- name: Perform online data migrations
|
||||
command: "{{ cinder_bin }}/cinder-manage db online-data-migrations"
|
||||
become: yes
|
||||
become_user: "{{ cinder_system_user_name }}"
|
||||
when:
|
||||
- "(cinder_all_software_updated | default('no')) | bool"
|
||||
- "ansible_local['openstack_ansible']['cinder']['need_online_data_migrations'] | bool"
|
||||
changed_when: false
|
||||
register: data_migrations
|
||||
|
||||
- name: Disable the online migrations requirement
|
||||
ini_file:
|
||||
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
|
||||
section: cinder
|
||||
option: need_online_data_migrations
|
||||
value: False
|
||||
when:
|
||||
- data_migrations | succeeded
|
||||
|
||||
|
|
|
@ -111,6 +111,36 @@
|
|||
virtualenv-tools --update-path=auto --reinitialize {{ cinder_bin | dirname }}
|
||||
when: cinder_get_venv | changed
|
||||
|
||||
- name: Record the need for a db sync
|
||||
ini_file:
|
||||
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
|
||||
section: cinder
|
||||
option: need_db_sync
|
||||
value: True
|
||||
when: cinder_get_venv | changed or
|
||||
cinder_venv_dir | changed or
|
||||
install_packages | changed
|
||||
|
||||
- name: Initialise the online data migration local fact
|
||||
ini_file:
|
||||
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
|
||||
section: cinder
|
||||
option: need_online_data_migrations
|
||||
value: False
|
||||
when: cinder_get_venv | changed or
|
||||
cinder_venv_dir | changed or
|
||||
install_packages | changed
|
||||
|
||||
- name: Record the need for a service restart
|
||||
ini_file:
|
||||
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
|
||||
section: cinder
|
||||
option: need_service_restart
|
||||
value: True
|
||||
when: cinder_get_venv | changed or
|
||||
cinder_venv_dir | changed or
|
||||
install_packages | changed
|
||||
|
||||
- name: Record the venv tag deployed
|
||||
ini_file:
|
||||
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
|
||||
|
|
|
@ -33,21 +33,28 @@
|
|||
tags:
|
||||
- cinder-install
|
||||
|
||||
- name: refresh local facts
|
||||
setup:
|
||||
filter: ansible_local
|
||||
gather_subset: "!all"
|
||||
tags:
|
||||
- cinder-config
|
||||
|
||||
- include: cinder_post_install.yml
|
||||
tags:
|
||||
- cinder-config
|
||||
|
||||
- include: cinder_db_setup.yml
|
||||
when:
|
||||
- groups['cinder_all'] | length > 0
|
||||
- inventory_hostname == groups['cinder_all'][0]
|
||||
- groups['cinder_api'] | length > 0
|
||||
- inventory_hostname == groups['cinder_api'][0]
|
||||
tags:
|
||||
- cinder-config
|
||||
|
||||
- include: cinder_service_setup.yml
|
||||
when:
|
||||
- groups['cinder_all'] | length > 0
|
||||
- inventory_hostname == groups['cinder_all'][0]
|
||||
- groups['cinder_api'] | length > 0
|
||||
- inventory_hostname == groups['cinder_api'][0]
|
||||
tags:
|
||||
- cinder-config
|
||||
|
||||
|
|
Loading…
Reference in New Issue