Skip to content

Commit 204a264

Browse files
committed
Support Jammy to Noble upgrade
1 parent 97815e2 commit 204a264

File tree

4 files changed

+106
-6
lines changed

4 files changed

+106
-6
lines changed

etc/kayobe/ansible/ubuntu-upgrade.yml

Lines changed: 103 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
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+
- name: Prepare upgrade from Ubuntu Jammy 22.04 to Noble 24.04
55
hosts: overcloud:infra-vms:seed:seed-hypervisor
66
vars:
77
ansible_python_interpreter: /usr/bin/python3
88
reboot_timeout_s: "{{ 20 * 60 }}"
9+
tags: pre
910
tasks:
1011
- name: Assert that hosts are running Ubuntu Jammy
1112
ansible.builtin.assert:
@@ -63,10 +64,62 @@
6364
deb {{ stackhpc_repo_ubuntu_noble_security_url }} noble-security main restricted universe multiverse
6465
become: true
6566

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

71+
- name: Ensure /var/lib/cephadm directory exists
72+
ansible.builtin.file:
73+
path: /var/lib/cephadm
74+
state: directory
75+
owner: root
76+
group: root
77+
become: true
78+
when: inventory_hostname in groups['ceph']
79+
80+
- name: Upgrade hosts from Ubuntu Jammy 22.04 to Noble 24.04
81+
hosts: overcloud:infra-vms:seed:seed-hypervisor
82+
vars:
83+
ansible_python_interpreter: /usr/bin/python3
84+
reboot_timeout_s: "{{ 20 * 60 }}"
85+
tags: upgrade
86+
tasks:
87+
- name: Perform in-place Ubuntu upgrade
88+
block:
89+
- name: Run do-release-upgrade
90+
ansible.builtin.command: do-release-upgrade -f DistUpgradeViewNonInteractive
91+
become: true
92+
register: upgrade_result
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: Post upgrade of Ubuntu Jammy 22.04 to Noble 24.04
117+
hosts: overcloud:infra-vms:seed:seed-hypervisor
118+
vars:
119+
ansible_python_interpreter: /usr/bin/python3
120+
reboot_timeout_s: "{{ 20 * 60 }}"
121+
tags: post
122+
tasks:
70123
- name: Ensure old venvs do not exist
71124
ansible.builtin.file:
72125
path: /opt/kayobe/venvs/{{ item }}
@@ -83,15 +136,45 @@
83136

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

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

90172
- name: Reboot and confirm the host is upgraded to Noble 24.04
91173
hosts: overcloud:infra-vms:seed:seed-hypervisor
92174
vars:
93175
ansible_python_interpreter: /usr/bin/python3
94176
reboot_timeout_s: "{{ 20 * 60 }}"
177+
tags: post
95178
tasks:
96179
- name: Ensure Noble repo definitions do not exist in sources.list
97180
ansible.builtin.blockinfile:
@@ -121,6 +204,23 @@
121204
- /usr/local/sbin
122205
become: true
123206

207+
- name: Ensure only Kayobe defined apt repositories are defined
208+
ansible.builtin.file:
209+
path: "/etc/apt/{{ item }}"
210+
state: absent
211+
loop:
212+
- sources.list.distUpgrade
213+
- sources.list.d/third-party.sources
214+
- sources.list.d/ubuntu.sources
215+
become: true
216+
when: hostvars[inventory_hostname].stackhpc_repos_enabled
217+
218+
- name: Ensure all packages are in Noble version
219+
ansible.builtin.apt:
220+
upgrade: full
221+
update_cache: true
222+
become: true
223+
124224
- name: Update distribution facts
125225
ansible.builtin.setup:
126226
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)