Add ensure-dib role
Role installs the diskimage-builder in a virtualenv. Change-Id: I0801daa6d5b8039bfbdefb7357942b1c5a58732f
This commit is contained in:
parent
ec242bac78
commit
e749223328
4
doc/source/dib-roles.rst
Normal file
4
doc/source/dib-roles.rst
Normal file
@ -0,0 +1,4 @@
|
||||
Diskimage-Builder Roles
|
||||
=======================
|
||||
|
||||
.. zuul:autorole:: ensure-dib
|
@ -14,6 +14,7 @@ Roles
|
||||
cloud-roles
|
||||
container-roles
|
||||
deprecated-roles
|
||||
dib-roles
|
||||
galaxy-roles
|
||||
go-roles
|
||||
hashicorp-roles
|
||||
|
28
roles/ensure-dib/README.rst
Normal file
28
roles/ensure-dib/README.rst
Normal file
@ -0,0 +1,28 @@
|
||||
This role installs diskimage-builder and dependencies.
|
||||
|
||||
Currently, only Ubuntu and Debian distributions are supported.
|
||||
|
||||
.. note::
|
||||
|
||||
The disk-image-create script will be located in
|
||||
`{{ dib_venv_dir }}/bin/disk-image-create`.
|
||||
|
||||
**Role variables**
|
||||
|
||||
.. zuul:rolevar:: ensure_dib_venv_dir
|
||||
:default: "{{ ansible_user_dir }}/dib"
|
||||
|
||||
Directory for the virtualenv to install the diskimage-builder.
|
||||
|
||||
.. zuul:rolevar:: ensure_dib_version
|
||||
:default: undefined
|
||||
|
||||
The version of diskimage-builder to install. The default is to install the
|
||||
lastest version.
|
||||
|
||||
**Output Variables**
|
||||
|
||||
.. zuul:rolevar:: ensure_dib_command
|
||||
|
||||
This variable points to the disk-image-create command installed in the
|
||||
{{ dib_venv_dir }}.
|
2
roles/ensure-dib/defaults/main.yaml
Normal file
2
roles/ensure-dib/defaults/main.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
ensure_dib_venv_dir: "{{ ansible_user_dir }}/dib"
|
||||
ensure_dib_version:
|
69
roles/ensure-dib/tasks/main.yaml
Normal file
69
roles/ensure-dib/tasks/main.yaml
Normal file
@ -0,0 +1,69 @@
|
||||
- name: Make sure the role is run on Debian or Ubuntu
|
||||
fail:
|
||||
msg: "This role supports Debian and Ubuntu distributions only"
|
||||
when: ansible_distribution not in ["Debian", "Ubuntu"]
|
||||
|
||||
- name: Install diskimage-builder requirements
|
||||
become: true
|
||||
package:
|
||||
state: present
|
||||
name:
|
||||
# these deps are taken from the upstream
|
||||
# openstack/diskimage-builder/bindep.txt
|
||||
- apt-transport-https
|
||||
- curl
|
||||
- debootstrap
|
||||
- dosfstools
|
||||
- gdisk
|
||||
- git
|
||||
- gnupg2
|
||||
- inetutils-ping
|
||||
- kpartx
|
||||
- qemu-utils
|
||||
- rpm
|
||||
- squashfs-tools
|
||||
- sudo
|
||||
- uuid-runtime
|
||||
- zstd
|
||||
|
||||
- name: Check if diskimage-builder is installed
|
||||
shell: >
|
||||
command -v {{ ensure_dib_venv_dir }}/bin/disk-image-create
|
||||
disk-image-create
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: dib_preinstalled
|
||||
ignore_errors: true
|
||||
|
||||
- name: Export preinstalled dib executable
|
||||
when: dib_preinstalled is successful
|
||||
set_fact:
|
||||
ensure_dib_command: "{{ dib_preinstalled.stdout_lines[0] }}"
|
||||
cacheable: true
|
||||
|
||||
- name: Install dib in venv
|
||||
when: dib_preinstalled is not successful
|
||||
block:
|
||||
- name: Ensure pip
|
||||
include_role:
|
||||
name: ensure-pip
|
||||
- name: Install latest diskimage-builder
|
||||
when: not ensure_dib_version
|
||||
pip:
|
||||
name:
|
||||
- setuptools
|
||||
- diskimage-builder
|
||||
virtualenv: "{{ ensure_dib_venv_dir }}"
|
||||
virtualenv_command: "{{ ensure_pip_virtualenv_command }}"
|
||||
- name: Install versioned diskimage-builder
|
||||
when: ensure_dib_version
|
||||
pip:
|
||||
name:
|
||||
- setuptools
|
||||
- "diskimage-builder=={{ ensure_dib_version }}"
|
||||
virtualenv: "{{ ensure_dib_venv_dir }}"
|
||||
virtualenv_command: "{{ ensure_pip_virtualenv_command }}"
|
||||
- name: Export DIB binary path
|
||||
set_fact:
|
||||
ensure_dib_command: "{{ ensure_dib_venv_dir }}/bin/disk-image-create"
|
||||
cacheable: true
|
10
test-playbooks/diskimage-builder/ensure-dib.yaml
Normal file
10
test-playbooks/diskimage-builder/ensure-dib.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
- hosts: all
|
||||
roles:
|
||||
- ensure-dib
|
||||
tasks:
|
||||
- name: Run build-disk-image
|
||||
command: "{{ ensure_dib_command }} --help"
|
||||
register: dib
|
||||
- name: Assert dib being executed successfully
|
||||
assert:
|
||||
that: dib is successful
|
71
zuul-tests.d/diskimage-builder-roles.yaml
Normal file
71
zuul-tests.d/diskimage-builder-roles.yaml
Normal file
@ -0,0 +1,71 @@
|
||||
- job:
|
||||
name: zuul-jobs-test-ensure-dib
|
||||
description: Test the ensure-dib role
|
||||
files:
|
||||
- roles/ensure-dib/.*
|
||||
- test-playbooks/diskimage-builder/.*
|
||||
run: test-playbooks/diskimage-builder/ensure-dib.yaml
|
||||
tags: debuntu-platforms
|
||||
|
||||
- job:
|
||||
name: zuul-jobs-test-ensure-dib-debian-bookworm
|
||||
description: Test the ensure-dib role on debian-bookworm
|
||||
parent: zuul-jobs-test-ensure-dib
|
||||
tags: auto-generated
|
||||
nodeset:
|
||||
nodes:
|
||||
- name: debian-bookworm
|
||||
label: debian-bookworm
|
||||
|
||||
- job:
|
||||
name: zuul-jobs-test-ensure-dib-debian-bullseye
|
||||
description: Test the ensure-dib role on debian-bullseye
|
||||
parent: zuul-jobs-test-ensure-dib
|
||||
tags: auto-generated
|
||||
nodeset:
|
||||
nodes:
|
||||
- name: debian-bullseye
|
||||
label: debian-bullseye
|
||||
|
||||
- job:
|
||||
name: zuul-jobs-test-ensure-dib-ubuntu-focal
|
||||
description: Test the ensure-dib role on ubuntu-focal
|
||||
parent: zuul-jobs-test-ensure-dib
|
||||
tags: auto-generated
|
||||
nodeset:
|
||||
nodes:
|
||||
- name: ubuntu-focal
|
||||
label: ubuntu-focal
|
||||
|
||||
- job:
|
||||
name: zuul-jobs-test-ensure-dib-ubuntu-jammy
|
||||
description: Test the ensure-dib role on ubuntu-jammy
|
||||
parent: zuul-jobs-test-ensure-dib
|
||||
tags: auto-generated
|
||||
nodeset:
|
||||
nodes:
|
||||
- name: ubuntu-jammy
|
||||
label: ubuntu-jammy
|
||||
|
||||
- job:
|
||||
name: zuul-jobs-test-ensure-dib-ubuntu-noble
|
||||
description: Test the ensure-dib role on ubuntu-noble
|
||||
parent: zuul-jobs-test-ensure-dib
|
||||
tags: auto-generated
|
||||
nodeset:
|
||||
nodes:
|
||||
- name: ubuntu-noble
|
||||
label: ubuntu-noble
|
||||
|
||||
- project:
|
||||
check:
|
||||
jobs: &id001
|
||||
- zuul-jobs-test-ensure-dib-debian-bookworm
|
||||
- zuul-jobs-test-ensure-dib-debian-bullseye
|
||||
- zuul-jobs-test-ensure-dib-ubuntu-focal
|
||||
- zuul-jobs-test-ensure-dib-ubuntu-jammy
|
||||
- zuul-jobs-test-ensure-dib-ubuntu-noble
|
||||
gate:
|
||||
jobs: *id001
|
||||
periodic-weekly:
|
||||
jobs: *id001
|
Loading…
Reference in New Issue
Block a user