Skip to content

Commit 4aba54b

Browse files
committed
Support Jammy to Noble upgrade
1 parent 97815e2 commit 4aba54b

File tree

4 files changed

+109
-6
lines changed

4 files changed

+109
-6
lines changed

etc/kayobe/ansible/ubuntu-upgrade.yml

Lines changed: 106 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
---
22
# To prevent Ansible role dependency errors, this playbook requires that environment variable
33
# ANSIBLE_ROLES_PATH is defined and includes '$KAYOBE_PATH/ansible/roles' on the Ansible control host.
4-
- name: Migrate hosts from Ubuntu Jammy 22.04 to Noble 24.04
4+
# Where KAYOBE_PATH is the path to the source of kayobe that the environment uses.
5+
- name: Prepare upgrade from Ubuntu Jammy 22.04 to Noble 24.04
56
hosts: overcloud:infra-vms:seed:seed-hypervisor
67
vars:
78
ansible_python_interpreter: /usr/bin/python3
89
reboot_timeout_s: "{{ 20 * 60 }}"
10+
tags: pre
911
tasks:
1012
- name: Assert that hosts are running Ubuntu Jammy
1113
ansible.builtin.assert:
@@ -63,10 +65,64 @@
6365
deb {{ stackhpc_repo_ubuntu_noble_security_url }} noble-security main restricted universe multiverse
6466
become: true
6567

66-
- name: Do release upgrade
67-
ansible.builtin.command: do-release-upgrade -f DistUpgradeViewNonInteractive
68+
- name: Enusre /tmp is mounted with exec
69+
ansible.builtin.command: sudo mount -o remount,exec /tmp
6870
become: true
6971

72+
- name: Ensure /var/lib/cephadm directory exists
73+
ansible.builtin.file:
74+
path: /var/lib/cephadm
75+
state: directory
76+
owner: root
77+
group: root
78+
become: true
79+
when: inventory_hostname in groups['ceph']
80+
81+
- name: Upgrade hosts from Ubuntu Jammy 22.04 to Noble 24.04
82+
hosts: overcloud:infra-vms:seed:seed-hypervisor
83+
vars:
84+
ansible_python_interpreter: /usr/bin/python3
85+
reboot_timeout_s: "{{ 20 * 60 }}"
86+
tags: upgrade
87+
tasks:
88+
- name: Perform in-place Ubuntu upgrade
89+
block:
90+
- name: Run do-release-upgrade
91+
ansible.builtin.command: do-release-upgrade -f DistUpgradeViewNonInteractive
92+
become: true
93+
rescue:
94+
- name: Ensure Noble repo definitions do not exist in sources.list
95+
ansible.builtin.blockinfile:
96+
path: /etc/apt/sources.list
97+
state: absent
98+
become: true
99+
100+
- name: Ensure Kolla Ansible Docker repo definition does not exist
101+
ansible.builtin.file:
102+
path: /etc/apt/sources.list.d/docker.list
103+
state: absent
104+
become: true
105+
when: apt_repositories | selectattr('url', 'match', '.*docker-ce.*') | list | length > 0
106+
107+
- name: Display recommanded action on upgrade failure
108+
ansible.builtin.debug:
109+
msg: >
110+
Ubuntu upgrade failed. You can check the upgrade logs at /var/log/dist-upgrade
111+
on the failed host.
112+
It is likely due to packages with broken dependency. You can find broken packages
113+
by running following command from the host.
114+
cat /var/log/dist-upgrade/apt.log | grep "Holding Back" | awk '{print $3}'
115+
116+
- name: Fail fast when upgrade fails
117+
ansible.builtin.meta: end_host
118+
119+
- name: Post upgrade of Ubuntu Jammy 22.04 to Noble 24.04
120+
hosts: overcloud:infra-vms:seed:seed-hypervisor
121+
vars:
122+
ansible_python_interpreter: /usr/bin/python3
123+
reboot_timeout_s: "{{ 20 * 60 }}"
124+
tags: post
125+
tasks:
70126
- name: Ensure old venvs do not exist
71127
ansible.builtin.file:
72128
path: /opt/kayobe/venvs/{{ item }}
@@ -83,15 +139,45 @@
83139

84140
- name: Run the Kayobe kayobe-target-venv playbook to ensure kayobe venv exists on remote host
85141
import_playbook: "{{ lookup('ansible.builtin.env', 'VIRTUAL_ENV') }}/share/kayobe/ansible/kayobe-target-venv.yml"
142+
tags: post
143+
144+
- name: Run the Kayobe apt playbook to ensure Noble repositories are set on remote host
145+
import_playbook: "{{ lookup('ansible.builtin.env', 'VIRTUAL_ENV') }}/share/kayobe/ansible/apt.yml"
146+
tags: post
147+
148+
- name: Fix broken packages after upgrade
149+
hosts: overcloud:infra-vms:seed:seed-hypervisor
150+
tags: post
151+
tasks:
152+
- name: Ensure iproute2 is installed
153+
ansible.builtin.apt:
154+
name: iproute2
155+
state: present
156+
become: true
157+
- name: Ensure cephadm dependencies are installed
158+
ansible.builtin.apt:
159+
name:
160+
- python3-yaml
161+
- python3-jinja2
162+
state: present
163+
become: true
164+
when: inventory_hostname in groups['ceph']
165+
166+
- name: Update Python and current user facts before running Kayobe network playbook
167+
ansible.builtin.setup:
168+
filter: "{{ kayobe_ansible_setup_filter }}"
169+
gather_subset: "{{ kayobe_ansible_setup_gather_subset }}"
86170

87171
- name: Run the Kayobe network configuration playbook, to ensure definitions are not lost on reboot
88172
import_playbook: "{{ lookup('ansible.builtin.env', 'VIRTUAL_ENV') }}/share/kayobe/ansible/network.yml"
173+
tags: post
89174

90175
- name: Reboot and confirm the host is upgraded to Noble 24.04
91176
hosts: overcloud:infra-vms:seed:seed-hypervisor
92177
vars:
93178
ansible_python_interpreter: /usr/bin/python3
94179
reboot_timeout_s: "{{ 20 * 60 }}"
180+
tags: post
95181
tasks:
96182
- name: Ensure Noble repo definitions do not exist in sources.list
97183
ansible.builtin.blockinfile:
@@ -121,6 +207,23 @@
121207
- /usr/local/sbin
122208
become: true
123209

210+
- name: Ensure only Kayobe defined apt repositories are defined
211+
ansible.builtin.file:
212+
path: "/etc/apt/{{ item }}"
213+
state: absent
214+
loop:
215+
- sources.list.distUpgrade
216+
- sources.list.d/third-party.sources
217+
- sources.list.d/ubuntu.sources
218+
become: true
219+
when: hostvars[inventory_hostname].stackhpc_repos_enabled
220+
221+
- name: Ensure all packages are in Noble version
222+
ansible.builtin.apt:
223+
upgrade: full
224+
update_cache: true
225+
become: true
226+
124227
- name: Update distribution facts
125228
ansible.builtin.setup:
126229
filter: "{{ kayobe_ansible_setup_filter }}"

tools/ubuntu-upgrade-overcloud.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,4 @@ kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/ubuntu-upgrade.yml -e os_release
3333

3434
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/ovn-fix-chassis-priorities.yml
3535

36-
kayobe overcloud host configure --limit $1 --kolla-limit $1 -e os_release=noble
36+
kayobe overcloud host configure --limit $1 -e os_release=noble

tools/ubuntu-upgrade-seed-hypervisor.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ set -x
2626

2727
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/ubuntu-upgrade.yml -e os_release=noble --limit seed-hypervisor
2828

29-
kayobe seed hypervisor host configure
29+
kayobe seed hypervisor host configure -e os_release=noble

tools/ubuntu-upgrade-seed.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ set -x
2626

2727
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/ubuntu-upgrade.yml -e os_release=noble --limit seed
2828

29-
kayobe seed host configure
29+
kayobe seed host configure -e os_release=noble

0 commit comments

Comments
 (0)