stackhpc.os-images
NOTE:
This repository is no longer being updated - the role has moved to the Ansible collection now ➡️ https://github.com/stackhpc/ansible-collection-openstack
OpenStack Images
This role creates guest instance images using disk-image-builder and uploads them to OpenStack with the os_image
module.
Requirements
The OpenStack APIs must be reachable from the target host. Client credentials should be set in the environment or using the clouds.yaml
format.
You need to use a virtual environment with system site packages enabled since this role depends on Python packages installed by the package manager. For example:
virtualenv --system-site-packages ~/venvs/dib
Role Variables
os_images_package_dependencies_extra
: List of additional packages to install on the build host.os_images_cache
: Path to a directory where build artifacts will be cached. Defaults to~/disk_images
. NOTE: New images will NOT be created if an image is already cached, even if config changes are made. Useforce_rebuild
to apply new config changes.os_images_auth_type
: Authentication method for OpenStack. Defaults topassword
.os_images_auth
: Authentication details for OpenStack, including:auth_url
: URL for Keystone auth endpoint. Defaults toOS_AUTH_URL
.project
: OpenStack project/tenant name. Defaults toOS_TENANT_NAME
.username
: OpenStack username. Defaults toOS_USERNAME
.password
: OpenStack password. Defaults toOS_PASSWORD
.
os_images_region
: Specify a region to upload images. Default is None.os_images_cacert
: Optional path to a CA certificate bundle.os_images_interface
: Type of endpoint URL to fetch from the service catalog. Can bepublic
,admin
, orinternal
.os_images_list
: A list of YAML dictionaries containing information for each image:name
: Name of the image in OpenStack.elements
: List of diskimage-builder elements to include in the image.image_url
: URL for the image location on the internet.checksum
: Checksum to validate a downloaded image. Format:<algorithm>:<checksum|url>
.env
: (optional) Environment variables for diskimage-builder parameters in the formatKEY: VALUE
.packages
: (optional) List of packages to install in the image.size
: (optional) Size of the image filesystem.properties
: (optional) Properties to set on the glance image. Common properties are available here.type
: (optional) Type of image. The default in DIB is qcow2. Available formats are here.force_rebuild
: (optional) Flag indicating whether to always build the image (even if an image with the same name already exists). Ifos_images_upload
is set toTrue
, existing images on glance will be replaced. Defaults toos_images_force_rebuild
if unset.is_public
: (optional) Determines if the image is visible to all projects or kept private.owner
: (optional) ID of the project that will own the uploaded image.
os_images_common
: Set of elements included in every image listed. Defaults tocloud-init enable-serial-console stable-interface-names
.os_images_dib_pkg_name
: Optionally customize the name parameter for the ansible.builtin.pip module when installing diskimage-builder. This can be used to install specific versions.os_images_dib_version
: Optionally specify the version of diskimage-builder to install. By default, there is no version constraint.os_images_git_elements
: Optional list of elements to pull from GitHub and include in the images. Provide a list of dictionaries with:repo
: URL for the Git repository to clone (if not already present).local
: Local path for Git cloning.version
: Optional Git reference (branch, tag, hash) for cloning. Defaults toHEAD
.elements_path
: Optional relative path to elements within the repository.
os_images_elements
: Optional list of site-specific DIB element paths.os_images_upload
: Whether to upload built images to Glance. Defaults toTrue
.os_images_force_rebuild
: Whether to force a rebuild of the DIB image. Ifos_images_upload
is set toTrue
, existing images on Glance will be replaced with the newly built image. Defaults toFalse
.os_images_public
: Indicates if uploaded images are public. Defaults toTrue
, but requires admin permissions.os_images_venv
: Path to a virtual environment for installing Python dependencies for image uploads.os_images_dib_venv
: Path to a virtual environment for installing DIB to build images.os_images_promote
: Whether to retire old images and promote new ones. Defaults toFalse
.os_images_build
: Whether to build the images.os_images_name_suffix
: Suffix to remove during image promotion (e.g., -rc, -dev, -test). Mandatory for promotion functionality. Defaults to empty.os_images_hide
: Whether to hide images from the Glance list. This option is available in the image retirement and promotion process. Defaults toFalse
.
Dependencies
Example Playbook
The following playbook generates a guest image and uploads it to OpenStack:
---
- name: Generate guest image and upload
hosts: openstack
roles:
- role: stackhpc.os-images
os_images_auth:
auth_url: "{{ lookup('env','OS_AUTH_URL') }}"
username: "{{ lookup('env','OS_USERNAME') }}"
password: "{{ lookup('env','OS_PASSWORD') }}"
project_name: "{{ lookup('env','OS_TENANT_NAME') }}"
os_images_list:
- name: FedoraCore
elements:
- fedora
- selinux-permissive
- alaska-extras
env:
DIB_ALASKA_DELETE_REPO: "y"
DIB_ALASKA_PKGLIST: "pam-python pam-keystone"
- name: FedoraAtomic27
image_url: https://ftp.icm.edu.pl/pub/Linux/dist/fedora-alt/atomic/stable/Fedora-Atomic-27-20180326.1/CloudImages/x86_64/images/Fedora-Atomic-27-20180326.1.x86_64.qcow2
properties:
os_distro: fedora-atomic
type: qcow2
Author Information
- Stig Telfer (stig@stackhpc.com)
Role to generate guest instance images and upload to OpenStack
ansible-galaxy install stackhpc.os-images