Skip to content

Commit 59a9790

Browse files
committed
[nat64_appliance] Add support for downloading pre-built images
Introduce cifmw_nat64_appliance_image_url parameter to download pre-built NAT64 images, with optional checksum verification support. Signed-off-by: Miguel Angel Nieto Jimenez <[email protected]>
1 parent 5f5393f commit 59a9790

File tree

3 files changed

+76
-46
lines changed

3 files changed

+76
-46
lines changed

roles/nat64_appliance/defaults/main.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ cifmw_nat64_appliance_memory: 2
4040
cifmw_nat64_appliance_cpus: 2
4141
cifmw_nat64_appliance_ssh_pub_keys: []
4242

43+
# Image download configuration
44+
# Set cifmw_nat64_appliance_image_url to download a pre-built image
45+
cifmw_nat64_appliance_image_url: ""
46+
cifmw_nat64_appliance_image_checksum: "" # Optional: "sha256:xxxxx"
47+
cifmw_nat64_appliance_download_timeout: 600 # 10 minutes
4348

4449
cifmw_nat64_ipv6_prefix: "2620:cf:cf:fc00::/64"
4550
cifmw_nat64_ipv6_tayga_address: "2620:cf:cf:fc00::3"

roles/nat64_appliance/tasks/cleanup.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,19 @@
3232
community.libvirt.virt:
3333
command: list_vms
3434

35-
- name: Stop the nat64_appliance VM
35+
- name: Get nat64_appliance VM state
3636
when: cifmw_nat64_appliance_name in _list_vms.list_vms
37+
register: _vm_state
38+
community.libvirt.virt:
39+
command: status
40+
name: "{{ cifmw_nat64_appliance_name }}"
41+
uri: "{{ cifmw_nat64_libvirt_uri }}"
42+
43+
- name: Stop the nat64_appliance VM
44+
when:
45+
- cifmw_nat64_appliance_name in _list_vms.list_vms
46+
- _vm_state.status is defined
47+
- _vm_state.status == "running"
3748
community.libvirt.virt:
3849
command: destroy
3950
name: "{{ cifmw_nat64_appliance_name }}"

roles/nat64_appliance/tasks/main.yml

Lines changed: 59 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -29,52 +29,66 @@
2929
state: directory
3030
mode: "0755"
3131

32-
- name: Install required RPM packages
33-
tags:
34-
- packages
35-
become: true
36-
ansible.builtin.package:
37-
name:
38-
- python3-pip
39-
- qemu-img
40-
- dosfstools
41-
- xfsprogs
42-
state: present
32+
- name: Download pre-built NAT64 appliance image
33+
when:
34+
- cifmw_nat64_appliance_image_url | length > 0
35+
ansible.builtin.get_url:
36+
url: "{{ cifmw_nat64_appliance_image_url }}"
37+
dest: "{{ cifmw_nat64_appliance_workdir }}/nat64-appliance.qcow2"
38+
checksum: "{{ cifmw_nat64_appliance_image_checksum | default(omit) }}"
39+
timeout: "{{ cifmw_nat64_appliance_download_timeout }}"
40+
mode: "0644"
4341

44-
- name: Install diskimage-builder in virtualenv
45-
tags:
46-
- packages
47-
ansible.builtin.pip:
48-
virtualenv_command: "python3 -m venv"
49-
virtualenv: "{{ cifmw_nat64_appliance_venv_dir }}"
50-
name:
51-
- diskimage-builder
52-
- setuptools
42+
- name: Build NAT64 appliance image from source
43+
when:
44+
- cifmw_nat64_appliance_image_url | length == 0
45+
block:
46+
- name: Install required RPM packages
47+
tags:
48+
- packages
49+
become: true
50+
ansible.builtin.package:
51+
name:
52+
- python3-pip
53+
- qemu-img
54+
- dosfstools
55+
- xfsprogs
56+
state: present
5357

54-
- name: Copy files to cifmw_nat64_appliance_dir
55-
ansible.builtin.copy:
56-
src: "{{ item }}"
57-
dest: "{{ cifmw_nat64_appliance_workdir }}/{{ item }}"
58-
mode: preserve
59-
loop:
60-
- "elements/"
61-
- nat64-appliance.yaml
58+
- name: Install diskimage-builder in virtualenv
59+
tags:
60+
- packages
61+
ansible.builtin.pip:
62+
virtualenv_command: "python3 -m venv"
63+
virtualenv: "{{ cifmw_nat64_appliance_venv_dir }}"
64+
name:
65+
- diskimage-builder
66+
- setuptools
67+
68+
- name: Copy files to cifmw_nat64_appliance_dir
69+
ansible.builtin.copy:
70+
src: "{{ item }}"
71+
dest: "{{ cifmw_nat64_appliance_workdir }}/{{ item }}"
72+
mode: preserve
73+
loop:
74+
- "elements/"
75+
- nat64-appliance.yaml
6276

63-
- name: Clone edpm-image-builder (reset-bls-entries dib element)
64-
ansible.builtin.git:
65-
repo: https://github.com/openstack-k8s-operators/edpm-image-builder.git
66-
dest: "{{ cifmw_nat64_appliance_workdir }}/edpm-image-builder"
67-
version: main
77+
- name: Clone edpm-image-builder (reset-bls-entries dib element)
78+
ansible.builtin.git:
79+
repo: https://github.com/openstack-k8s-operators/edpm-image-builder.git
80+
dest: "{{ cifmw_nat64_appliance_workdir }}/edpm-image-builder"
81+
version: main
6882

69-
- name: Build the nat64-appliance image using DIB
70-
become: "{{ cifmw_nat64_appliance_run_dib_as_root | default(false) | bool }}"
71-
environment:
72-
ELEMENTS_PATH: "{{ cifmw_nat64_appliance_workdir }}/elements:{{ cifmw_nat64_appliance_workdir }}/edpm-image-builder/dib/"
73-
DIB_IMAGE_CACHE: "{{ cifmw_nat64_appliance_workdir }}/cache"
74-
DIB_DEBUG_TRACE: '1'
75-
cifmw.general.ci_script:
76-
chdir: "{{ cifmw_nat64_appliance_workdir }}"
77-
output_dir: "{{ cifmw_nat64_appliance_basedir }}/artifacts"
78-
creates: "{{ cifmw_nat64_appliance_workdir }}/nat64-appliance.qcow2"
79-
script: "{{ cifmw_nat64_appliance_venv_dir }}/bin/diskimage-builder nat64-appliance.yaml {{ extra_args | default('') }}"
80-
executable: "/bin/bash"
83+
- name: Build the nat64-appliance image using DIB
84+
become: "{{ cifmw_nat64_appliance_run_dib_as_root | default(false) | bool }}"
85+
environment:
86+
ELEMENTS_PATH: "{{ cifmw_nat64_appliance_workdir }}/elements:{{ cifmw_nat64_appliance_workdir }}/edpm-image-builder/dib/"
87+
DIB_IMAGE_CACHE: "{{ cifmw_nat64_appliance_workdir }}/cache"
88+
DIB_DEBUG_TRACE: '1'
89+
cifmw.general.ci_script:
90+
chdir: "{{ cifmw_nat64_appliance_workdir }}"
91+
output_dir: "{{ cifmw_nat64_appliance_basedir }}/artifacts"
92+
creates: "{{ cifmw_nat64_appliance_workdir }}/nat64-appliance.qcow2"
93+
script: "{{ cifmw_nat64_appliance_venv_dir }}/bin/diskimage-builder nat64-appliance.yaml {{ extra_args | default('') }}"
94+
executable: "/bin/bash"

0 commit comments

Comments
 (0)