Skip to content

Commit fce3313

Browse files
committed
Support Jammy to Noble upgrade
1 parent bb7aea4 commit fce3313

File tree

4 files changed

+112
-6
lines changed

4 files changed

+112
-6
lines changed

etc/kayobe/ansible/ubuntu-upgrade.yml

+109-3
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,67 @@
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.posix.mount:
70+
path: /tmp
71+
opts: exec
72+
state: remounted
6873
become: true
6974

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

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

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

90178
- name: Reboot and confirm the host is upgraded to Noble 24.04
91179
hosts: overcloud:infra-vms:seed:seed-hypervisor
92180
vars:
93181
ansible_python_interpreter: /usr/bin/python3
94182
reboot_timeout_s: "{{ 20 * 60 }}"
183+
tags: post
95184
tasks:
96185
- name: Ensure Noble repo definitions do not exist in sources.list
97186
ansible.builtin.blockinfile:
@@ -121,6 +210,23 @@
121210
- /usr/local/sbin
122211
become: true
123212

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

tools/ubuntu-upgrade-overcloud.sh

+1-1
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

+1-1
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

+1-1
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)