Merge "Run online migrations via "external-upgrade run""

This commit is contained in:
Zuul 2018-10-17 15:29:06 +00:00 committed by Gerrit Code Review
commit bd71a857c3
4 changed files with 71 additions and 75 deletions

View File

@ -178,26 +178,6 @@ outputs:
- ''
environment:
- KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
step_5:
cinder_api_online_migrations:
start_order: 2
image: *cinder_api_image
net: host
privileged: false
detach: false
user: root
volumes:
list_concat:
- {get_attr: [ContainersCommon, volumes]}
-
- /var/lib/config-data/cinder/etc/my.cnf.d/tripleo.cnf:/etc/my.cnf.d/tripleo.cnf:ro
- /var/lib/config-data/cinder/etc/cinder/:/etc/cinder/:ro
- /var/log/containers/cinder:/var/log/cinder
- /var/log/containers/httpd/cinder-api:/var/log/httpd
command:
- '/usr/bin/bootstrap_host_exec'
- 'cinder_api'
- "su cinder -s /bin/bash -c 'cinder-manage db online_data_migrations'"
cinder_api_cron:
image: *cinder_api_image
net: host
@ -257,31 +237,35 @@ outputs:
- name: Set fact cinder_api_enabled
set_fact:
cinder_api_enabled: "{{ cinder_api_enabled_result.rc == 0 }}"
- name: Check if httpd service is running
command: systemctl is-active --quiet httpd
ignore_errors: True
register: httpd_running_result
when: httpd_running is undefined
- name: Set fact httpd_running
set_fact:
httpd_running: "{{ httpd_running_result.rc == 0 }}"
when: httpd_running is undefined
- name: check for cinder_api running under apache (post upgrade)
shell: "httpd -t -D DUMP_VHOSTS | grep -q cinder"
register: cinder_api_apache
ignore_errors: true
- name: "PreUpgrade step0,validation: Check service openstack-cinder-api is running"
shell: systemctl is-active --quiet openstack-cinder-api
when: cinder_api_enabled|bool
tags: validation
# NOTE: In puppet service variant, we ran release N online
# migrations before upgrade to release N+1. In docker
# service variant, we run release N online migrations
# after upgrade to release N. This means that during
# switch from non-containerized to containerized, we need
# to run both of these.
- name: Online data migration for Cinder before switching to containers
- name: Ensure all online data migrations for Cinder have been applied
command: docker exec cinder_api cinder-manage db online_data_migrations
tags: pre-upgrade
when:
- is_bootstrap_node|bool
- cinder_api_enabled|bool
command: cinder-manage db online_data_migrations
- not (cinder_api_apache|bool and httpd_running|bool)
- not cinder_api_enabled|bool
- when: step|int == 2
block:
- name: Stop and disable cinder_api service (pre-upgrade not under httpd)
service: name=openstack-cinder-api state=stopped enabled=no
when: cinder_api_enabled|bool
- name: check for cinder_api running under apache (post upgrade)
shell: "httpd -t -D DUMP_VHOSTS | grep -q cinder"
register: cinder_api_apache
ignore_errors: true
- name: Stop and disable cinder_api service
service: name=httpd state=stopped enabled=no
when: cinder_api_apache.rc == 0
@ -298,6 +282,16 @@ outputs:
package: name=httpd state=removed
ignore_errors: True
when: remove_httpd_package|bool
external_upgrade_tasks:
- when: step|int == 1
block:
- name: Online data migration for Cinder
command: docker exec cinder_api cinder-manage db online_data_migrations
delegate_to: "{{ groups['cinder_api'][0] }}"
become: true
tags:
- online_upgrade
- online_upgrade_cinder
fast_forward_upgrade_tasks:
- when:
- step|int == 0

View File

@ -137,22 +137,6 @@ outputs:
- /var/log/containers/httpd/ironic-api:/var/log/httpd
environment:
- KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
step_5:
ironic_online_migrations:
start_order: 2
image: *ironic_api_image
net: host
privileged: false
detach: false
user: root
volumes:
list_concat:
- {get_attr: [ContainersCommon, volumes]}
-
- /var/lib/config-data/ironic_api/etc/ironic:/etc/ironic:ro
- /var/log/containers/ironic:/var/log/ironic
- /var/log/containers/httpd/ironic-api:/var/log/httpd
command: "/usr/bin/bootstrap_host_exec ironic_api su ironic -s /bin/bash -c 'ironic-dbsync --config-file /etc/ironic/ironic.conf online_data_migrations'"
host_prep_tasks:
- name: create persistent logs directory
file:
@ -209,18 +193,13 @@ outputs:
when:
- ironic_httpd_enabled|bool
- httpd_running|bool
# NOTE: In puppet service variant, we ran release N online
# migrations before upgrade to release N+1. In docker
# service variant, we run release N online migrations
# after upgrade to release N. This means that during
# switch from non-containerized to containerized, we need
# to run both of these.
- name: Online data migration for Ironic before switching to containers
- name: Ensure all online data migrations for Ironic have been applied
command: docker exec ironic_api ironic-dbsync --config-file /etc/ironic/ironic.conf online_data_migrations
tags: pre-upgrade
when:
- is_bootstrap_node|bool
- (ironic_httpd_enabled|bool and httpd_running|bool) or ironic_api_enabled|bool
command: ironic-dbsync --config-file /etc/ironic/ironic.conf online_data_migrations
- not (ironic_httpd_enabled|bool and httpd_running|bool)
- not ironic_api_enabled|bool
- when: step|int == 2
block:
- name: Stop and disable ironic_api service
@ -241,6 +220,16 @@ outputs:
package: name=openstack-ironic-api state=removed
ignore_errors: True
when: remove_ironic_api_package|bool
external_upgrade_tasks:
- when: step|int == 1
block:
- name: Online data migration for Ironic
command: docker exec ironic_api ironic-dbsync --config-file /etc/ironic/ironic.conf online_data_migrations
delegate_to: "{{ groups['ironic_api'][0] }}"
become: true
tags:
- online_upgrade
- online_upgrade_ironic
fast_forward_upgrade_tasks:
- when:
- step|int == 0

View File

@ -319,14 +319,6 @@ outputs:
- ''
- - 'TRIPLEO_DEPLOY_IDENTIFIER='
- {get_param: DeployIdentifier}
nova_online_migrations:
start_order: 2
image: *nova_api_image
net: host
detach: false
volumes: *nova_api_bootstrap_volumes
user: root
command: "/usr/bin/bootstrap_host_exec nova_api su nova -s /bin/bash -c '/usr/bin/nova-manage db online_data_migrations'"
metadata_settings:
get_attr: [NovaApiBase, role_data, metadata_settings]
host_prep_tasks: {get_attr: [NovaApiLogging, host_prep_tasks]}
@ -367,18 +359,13 @@ outputs:
when:
- nova_api_httpd_enabled|bool
- httpd_running|bool
# NOTE: In puppet service variant, we ran release N online
# migrations before upgrade to release N+1. In docker
# service variant, we run release N online migrations
# after upgrade to release N. This means that during
# switch from non-containerized to containerized, we need
# to run both of these.
- name: Online data migration for Nova before switching to containers
- name: Ensure all online data migrations for Nova have been applied
command: docker exec nova_api nova-manage db online_data_migrations
tags: pre-upgrade
when:
- is_bootstrap_node|bool
- (nova_api_httpd_enabled|bool and httpd_running|bool) or nova_api_enabled|bool
command: nova-manage db online_data_migrations
- not (nova_api_httpd_enabled|bool and httpd_running|bool)
- not nova_api_enabled|bool
- when: step|int == 2
block:
- name: Stop and disable nova_api service
@ -404,6 +391,16 @@ outputs:
file:
path: /var/spool/cron/nova
state: absent
external_upgrade_tasks:
- when: step|int == 1
block:
- name: Online data migration for Nova
command: docker exec nova_api nova-manage db online_data_migrations
delegate_to: "{{ groups['nova_api'][0] }}"
become: true
tags:
- online_upgrade
- online_upgrade_nova
fast_forward_upgrade_tasks:
- when:
- step|int == 0

View File

@ -0,0 +1,16 @@
---
upgrade:
- |
The online part of the service upgrades (online data migrations)
is now run using::
openstack overcloud external-upgrade run --tags online_upgrade
or per-service like::
openstack overcloud external-upgrade run --tags online_upgrade_nova
openstack overcloud external-upgrade run --tags online_upgrade_cinder
openstack overcloud external-upgrade run --tags online_upgrade_ironic
Consult the upgrade documentation regarding the full upgrade
workflow.