CI: Configure additional disk when available

It seems that on some nodepool providers (rax for sure),
we get 40G boot disk and 80G additional disk, while
on others we get 80G boot disk only.

Change-Id: I179c41032239f5f0ce6055c79295b32c33fe67a5
This commit is contained in:
Michal Nasiadka 2023-02-20 08:43:41 +01:00
parent b2f747fbba
commit a0d758019a
2 changed files with 80 additions and 1 deletions

View File

@ -115,3 +115,81 @@
path: /run/docker.sock
mode: 0666
become: true
# On RAX hosts, we have a small root partition and a large,
# unallocated ephemeral device attached at /dev/xvde
- name: Set ephemeral device if /dev/xvde exists
when: ansible_devices["xvde"] is defined
set_fact:
ephemeral_device: "/dev/xvde"
# On other providers, we have a device called "ephemeral0".
- name: Set ephemeral device by label
when: ephemeral_device is undefined
block:
- name: Get ephemeral0 device node
command: /sbin/blkid -L ephemeral0
register: ephemeral0
# rc !=0 is expected
failed_when: False
changed_when: False
- name: Set ephemeral device if LABEL exists
when: "ephemeral0.rc == 0"
set_fact:
ephemeral_device: "{{ ephemeral0.stdout }}"
- name: Configure additional disk (if available)
become: true
when: ephemeral_device is defined
block:
- name: Ensure ephemeral device is unmounted
ansible.posix.mount:
name: "{{ ephemeral_device }}"
state: "{{ item }}"
loop:
- unmounted
- absent
- name: Get existing partitions
community.general.parted:
device: "{{ ephemeral_device }}"
unit: MiB
state: info
register: ephemeral_partitions
- name: Remove any existing partitions
community.general.parted:
device: "{{ ephemeral_device }}"
number: "{{ item.num }}"
state: absent
loop: "{{ ephemeral_partitions.partitions }}"
- name: Create filesystem on additional partition
community.general.filesystem:
fstype: ext4
dev: "{{ ephemeral_device }}"
opts: "-L kolla"
- name: Ensure /mnt/kolla mountpoint is created
ansible.builtin.file:
path: "/mnt/kolla"
owner: root
group: root
state: directory
mode: 0755
- name: Mount additional filesystem
ansible.posix.mount:
path: "/mnt/kolla"
src: "LABEL=kolla"
fstype: ext4
state: present
- name: Ensure /mnt/kolla/work_dir directory is created
ansible.builtin.file:
path: "/mnt/kolla/work_dir"
owner: root
group: root
state: directory
mode: 0777

View File

@ -4,6 +4,7 @@
- ../vars/zuul.yml
vars:
tag_suffix: "{{ '-aarch64' if ansible_architecture == 'aarch64' else '' }}"
kolla_disk: "{{ true if ephemeral_device is defined else false }}"
kolla_build_config:
DEFAULT:
debug: true
@ -45,4 +46,4 @@
command: "{{ virtualenv_path }}/bin/kolla-build --template-only --work-dir {{ kolla_build_logs_dir }}/work_dir"
- name: Run kolla-build
command: "{{ virtualenv_path }}/bin/kolla-build"
command: "{{ virtualenv_path }}/bin/kolla-build {% if kolla_disk %}--work-dir /mnt/kolla/work_dir{% endif %}"