Merge "Automate the undercloud leapp upgrade."
This commit is contained in:
commit
70dab47ef9
|
@ -16,6 +16,7 @@ overcloud_stack_name: "overcloud"
|
||||||
upgrade_noop: false
|
upgrade_noop: false
|
||||||
update_noop: false
|
update_noop: false
|
||||||
undercloud_upgrade: false
|
undercloud_upgrade: false
|
||||||
|
undercloud_os_upgrade: false
|
||||||
containerized_undercloud_upgrade: true
|
containerized_undercloud_upgrade: true
|
||||||
overcloud_upgrade: false
|
overcloud_upgrade: false
|
||||||
undercloud_update: false
|
undercloud_update: false
|
||||||
|
@ -252,3 +253,6 @@ roles_upgrade_order: '__undefined__'
|
||||||
|
|
||||||
# Packet loss threshold for a ping test
|
# Packet loss threshold for a ping test
|
||||||
loss_threshold: 1
|
loss_threshold: 1
|
||||||
|
|
||||||
|
# Leapp OS upgrade variables
|
||||||
|
leapp_unregister: true
|
||||||
|
|
|
@ -6,7 +6,10 @@
|
||||||
become: true
|
become: true
|
||||||
become_method: sudo
|
become_method: sudo
|
||||||
become_user: stack
|
become_user: stack
|
||||||
|
vars:
|
||||||
|
# Explicit ansible_python_interpreter to allow connecting
|
||||||
|
# to different OS releases (EL7/8) while using delegate_to.
|
||||||
|
ansible_python_interpreter: /usr/libexec/platform-python
|
||||||
pre_tasks:
|
pre_tasks:
|
||||||
|
|
||||||
- name: Set upgrade workload launch
|
- name: Set upgrade workload launch
|
||||||
|
@ -44,6 +47,11 @@
|
||||||
undercloud_upgrade: true
|
undercloud_upgrade: true
|
||||||
when: install.undercloud.upgrade
|
when: install.undercloud.upgrade
|
||||||
|
|
||||||
|
- name: Set undercloud operating system upgrade
|
||||||
|
set_fact:
|
||||||
|
undercloud_os_upgrade: true
|
||||||
|
when: install.undercloud.os.upgrade
|
||||||
|
|
||||||
- name: Set undercloud reboot
|
- name: Set undercloud reboot
|
||||||
set_fact:
|
set_fact:
|
||||||
undercloud_reboot: true
|
undercloud_reboot: true
|
||||||
|
|
|
@ -14,6 +14,11 @@ subparsers:
|
||||||
NOTE: Upgrade require overcloud deployment script to be available in home directory of undercloud
|
NOTE: Upgrade require overcloud deployment script to be available in home directory of undercloud
|
||||||
user at undercloud node
|
user at undercloud node
|
||||||
default: false
|
default: false
|
||||||
|
undercloud-os-upgrade:
|
||||||
|
type: Bool
|
||||||
|
help: |
|
||||||
|
Upgrade Undercloud's Operating System
|
||||||
|
default: false
|
||||||
undercloud-upgrade:
|
undercloud-upgrade:
|
||||||
type: Bool
|
type: Bool
|
||||||
help: |
|
help: |
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
---
|
||||||
|
- name: reboot the undercloud
|
||||||
|
shell: "sleep 2 && shutdown -r now"
|
||||||
|
async: 1
|
||||||
|
poll: 0
|
||||||
|
ignore_errors: true
|
||||||
|
become: true
|
||||||
|
become_user: root
|
||||||
|
|
||||||
|
- name: wait for node to go down
|
||||||
|
become: false
|
||||||
|
command: ping -c1 {{ ansible_host }}
|
||||||
|
register: node_down
|
||||||
|
until: node_down.rc != 0
|
||||||
|
retries: 60
|
||||||
|
delay: 3
|
||||||
|
ignore_errors: true
|
||||||
|
delegate_to: localhost
|
||||||
|
when: "'hypervisor' not in groups and 'virthost' not in groups"
|
||||||
|
|
||||||
|
- name: wait for node to go down
|
||||||
|
command: ping -c1 {{ ansible_host }}
|
||||||
|
register: node_down
|
||||||
|
until: node_down.rc != 0
|
||||||
|
retries: 60
|
||||||
|
delay: 3
|
||||||
|
ignore_errors: true
|
||||||
|
delegate_to: hypervisor
|
||||||
|
when: "'hypervisor' in groups"
|
||||||
|
|
||||||
|
- name: wait for node to go down
|
||||||
|
command: ping -c1 {{ ansible_host }}
|
||||||
|
register: node_down
|
||||||
|
until: node_down.rc != 0
|
||||||
|
retries: 60
|
||||||
|
delay: 3
|
||||||
|
ignore_errors: true
|
||||||
|
delegate_to: virthost
|
||||||
|
when: "'virthost' in groups"
|
||||||
|
|
||||||
|
- name: waiting for the undercloud to be ssh-able
|
||||||
|
wait_for_connection:
|
||||||
|
connect_timeout: 5
|
||||||
|
sleep: 3
|
||||||
|
timeout: 630
|
|
@ -22,50 +22,8 @@
|
||||||
|
|
||||||
- name: handle undercloud reboot
|
- name: handle undercloud reboot
|
||||||
block:
|
block:
|
||||||
- name: reboot the undercloud
|
- name: Reboot the undercloud
|
||||||
shell: "sleep 2 && shutdown -r now"
|
import_tasks: undercloud_reboot.yaml
|
||||||
async: 1
|
|
||||||
poll: 0
|
|
||||||
ignore_errors: true
|
|
||||||
become: true
|
|
||||||
become_user: root
|
|
||||||
|
|
||||||
- name: wait for node to go down
|
|
||||||
become: false
|
|
||||||
command: ping -c1 {{ ansible_host }}
|
|
||||||
register: node_down
|
|
||||||
until: node_down.rc != 0
|
|
||||||
retries: 60
|
|
||||||
delay: 3
|
|
||||||
ignore_errors: true
|
|
||||||
delegate_to: localhost
|
|
||||||
when: "'hypervisor' not in groups and 'virthost' not in groups"
|
|
||||||
|
|
||||||
- name: wait for node to go down
|
|
||||||
command: ping -c1 {{ ansible_host }}
|
|
||||||
register: node_down
|
|
||||||
until: node_down.rc != 0
|
|
||||||
retries: 60
|
|
||||||
delay: 3
|
|
||||||
ignore_errors: true
|
|
||||||
delegate_to: hypervisor
|
|
||||||
when: "'hypervisor' in groups"
|
|
||||||
|
|
||||||
- name: wait for node to go down
|
|
||||||
command: ping -c1 {{ ansible_host }}
|
|
||||||
register: node_down
|
|
||||||
until: node_down.rc != 0
|
|
||||||
retries: 60
|
|
||||||
delay: 3
|
|
||||||
ignore_errors: true
|
|
||||||
delegate_to: virthost
|
|
||||||
when: "'virthost' in groups"
|
|
||||||
|
|
||||||
- name: waiting for the undercloud to be ssh-able
|
|
||||||
wait_for_connection:
|
|
||||||
connect_timeout: 5
|
|
||||||
sleep: 3
|
|
||||||
timeout: 630
|
|
||||||
|
|
||||||
- name: assert UC services started
|
- name: assert UC services started
|
||||||
shell: |
|
shell: |
|
||||||
|
|
|
@ -11,10 +11,20 @@
|
||||||
when: workload_launch
|
when: workload_launch
|
||||||
|
|
||||||
- include: upgrade/main.yml
|
- include: upgrade/main.yml
|
||||||
when: upgrade_noop|bool or undercloud_upgrade|bool or overcloud_upgrade|bool
|
when: >
|
||||||
|
upgrade_noop|bool or
|
||||||
|
undercloud_upgrade|bool or
|
||||||
|
undercloud_os_upgrade|bool or
|
||||||
|
overcloud_upgrade|bool
|
||||||
|
|
||||||
- include: update/main.yml
|
- include: update/main.yml
|
||||||
when: update_noop|bool or undercloud_update|bool or overcloud_update|bool
|
when: >
|
||||||
|
update_noop|bool or
|
||||||
|
undercloud_update|bool or
|
||||||
|
overcloud_update|bool
|
||||||
|
|
||||||
- include: fast-forward-upgrade/main.yml
|
- include: fast-forward-upgrade/main.yml
|
||||||
when: ffu_noop|bool or ffu_undercloud_upgrade|bool or ffu_overcloud_upgrade|bool
|
when: >
|
||||||
|
ffu_noop|bool or
|
||||||
|
ffu_undercloud_upgrade|bool or
|
||||||
|
ffu_overcloud_upgrade|bool
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
dest: "{{ working_dir }}/{{ item }}.sh"
|
dest: "{{ working_dir }}/{{ item }}.sh"
|
||||||
mode: 0775
|
mode: 0775
|
||||||
loop:
|
loop:
|
||||||
|
- 'pre_undercloud_os_upgrade_workarounds'
|
||||||
- 'pre_undercloud_upgrade_workarounds'
|
- 'pre_undercloud_upgrade_workarounds'
|
||||||
- 'post_undercloud_upgrade_workarounds'
|
- 'post_undercloud_upgrade_workarounds'
|
||||||
when: upgrade_workarounds
|
when: upgrade_workarounds
|
||||||
|
|
|
@ -5,7 +5,28 @@
|
||||||
apply:
|
apply:
|
||||||
tags: create_undercloud_upgrade_scripts
|
tags: create_undercloud_upgrade_scripts
|
||||||
tags: create_undercloud_upgrade_scripts
|
tags: create_undercloud_upgrade_scripts
|
||||||
when: upgrade_noop|bool or undercloud_upgrade|bool
|
when: >
|
||||||
|
upgrade_noop|bool or
|
||||||
|
undercloud_upgrade|bool or
|
||||||
|
undercloud_os_upgrade|bool
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: apply pre undercloud OS upgrade workarounds
|
||||||
|
shell: |
|
||||||
|
set -o pipefail
|
||||||
|
bash {{ working_dir }}/pre_undercloud_os_upgrade_workarounds.sh 2>&1 {{ timestamper_cmd }} > pre_undercloud_os_upgrade_workarounds.log
|
||||||
|
args:
|
||||||
|
chdir: "{{ working_dir }}"
|
||||||
|
when: upgrade_workarounds|bool
|
||||||
|
|
||||||
|
- name: Upgrade operating system
|
||||||
|
become: true
|
||||||
|
become_user: root
|
||||||
|
import_tasks: undercloud_os_upgrade.yaml
|
||||||
|
when: not use_oooq|bool
|
||||||
|
|
||||||
|
when: undercloud_os_upgrade|bool
|
||||||
|
tags: undercloud_os_upgrade
|
||||||
|
|
||||||
- block:
|
- block:
|
||||||
- name: apply pre undercloud upgrade workarounds
|
- name: apply pre undercloud upgrade workarounds
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
---
|
||||||
|
- name: Remove old RHEL7 packages
|
||||||
|
shell: |
|
||||||
|
yum -y remove *el7ost* -- \
|
||||||
|
-*openvswitch* \
|
||||||
|
-python2-babel \
|
||||||
|
-python2-dateutil \
|
||||||
|
-python2-ipaddress \
|
||||||
|
-python2-jinja2 \
|
||||||
|
-python2-markupsafe \
|
||||||
|
-python2-jsonpatch \
|
||||||
|
-python2-six \
|
||||||
|
-python-PyMySQL \
|
||||||
|
-python-jsonpointer
|
||||||
|
|
||||||
|
- name: Install leapp
|
||||||
|
package:
|
||||||
|
name: leapp
|
||||||
|
state: latest
|
||||||
|
|
||||||
|
- name: Check if rhos-release is installed
|
||||||
|
package:
|
||||||
|
name: rhos-release
|
||||||
|
state: present
|
||||||
|
check_mode: true
|
||||||
|
failed_when: false
|
||||||
|
register: rhos_release_installed
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Remove rhos-release repos
|
||||||
|
command: rhos-release -x
|
||||||
|
|
||||||
|
- name: Remove conflicting rhos-release package
|
||||||
|
package:
|
||||||
|
name: rhos-release
|
||||||
|
state: absent
|
||||||
|
when:
|
||||||
|
- rhos_release_installed.rc == 0
|
||||||
|
- not rhos_release_installed.changed
|
||||||
|
|
||||||
|
- name: Run leapp upgrade (download packages)
|
||||||
|
shell: |
|
||||||
|
set -o pipefail
|
||||||
|
leapp upgrade --debug 2>&1 | \
|
||||||
|
tee {{ working_dir }}/undercloud_leapp_upgrade.log
|
||||||
|
|
||||||
|
- name: Reboot the undercloud
|
||||||
|
import_tasks: ../common/undercloud_reboot.yaml
|
||||||
|
|
||||||
|
- name: Unregister the node once the OS was upgraded if desired
|
||||||
|
redhat_subscription:
|
||||||
|
state: absent
|
||||||
|
when: leapp_unregister|bool
|
|
@ -45,6 +45,8 @@ apply_patch {{ value.basedir }} {{ value.id }}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
{% endmacro -%}
|
{% endmacro -%}
|
||||||
|
|
||||||
|
{{ render_workarounds(pre_undercloud_os_upgrade_workarounds|default([]),'pre_undercloud_os_upgrade_workarounds') }}
|
||||||
|
{# finish pre_undercloud_os_upgrade_workarounds #}
|
||||||
{{ render_workarounds(pre_undercloud_upgrade_workarounds|default([]),'pre_undercloud_upgrade_workarounds') }}
|
{{ render_workarounds(pre_undercloud_upgrade_workarounds|default([]),'pre_undercloud_upgrade_workarounds') }}
|
||||||
{# finish pre_undercloud_upgrade_workarounds #}
|
{# finish pre_undercloud_upgrade_workarounds #}
|
||||||
{{ render_workarounds(post_undercloud_upgrade_workarounds|default([]),'post_undercloud_upgrade_workarounds') }}
|
{{ render_workarounds(post_undercloud_upgrade_workarounds|default([]),'post_undercloud_upgrade_workarounds') }}
|
||||||
|
|
Loading…
Reference in New Issue