stackhpc.os-images
NOTA:
Este repositorio ya no está mantenido - el rol ha sido trasladado a la colección de Ansible ahora ➡️ https://github.com/stackhpc/ansible-collection-openstack
Imágenes de OpenStack
Este rol genera imágenes de instancias inquilinas utilizando disk-image-builder y las sube a OpenStack usando el módulo os_image
.
Requisitos
Las API de OpenStack deben ser accesibles desde el host objetivo. Las credenciales del cliente deben estar configuradas en el entorno o usando el formato clouds.yaml
.
Debes usar un virtualenv con los paquetes del sistema habilitados, ya que este rol depende de los paquetes de Python instalados por el gestor de paquetes, por ejemplo:
virtualenv --system-site-packages ~/venvs/dib
Variables del rol
os_images_package_dependencies_extra
: Lista de paquetes adicionales para instalar en el host de construcción.
os_images_cache
: una ruta a un directorio donde se almacenarán en caché los artefactos de construcción. Por defecto es ~/disk_images
.
NOTA: no se construirán nuevas imágenes, incluso si se realizan cambios en la configuración, si una imagen ya está en caché. Usa el flag force_rebuild
para aplicar nuevos cambios de configuración.
os_images_auth_type
: Tipo de autenticación de OpenStack y credenciales. Por defecto es password
.
os_images_auth
: Punto final de autenticación y credenciales de OpenStack. Por ejemplo, un diccionario del siguiente formato:
auth_url
: URL del punto de autenticación de Keystone. Por defecto esOS_AUTH_URL
.project
: Inquilino/proyecto de OpenStack. Por defecto esOS_TENANT_NAME
.username
: Nombre de usuario de OpenStack. Por defecto esOS_USERNAME
.password
: Contraseña de OpenStack. Por defecto esOS_PASSWORD
.
os_images_region
: Define una región para subir las imágenes. Por defecto es None.
os_images_cacert
es una ruta opcional a un paquete de certificados CA.
os_images_interface
es el tipo de URL del punto final para obtener del catálogo de servicios. Puede ser uno de public
, admin
o internal
.
os_images_list
es una lista de diccionarios YAML, donde elements
e image_url
son mutuamente excluyentes y cada uno contiene:
name
: el nombre de la imagen que se usará en OpenStack.elements
: una lista de elementos de diskimage-builder que se incorporarán a la imagen.image_url
: la URL de la ubicación de la imagen en Internet.checksum
: Suma de verificación para validar una imagen descargada. Formato::<checksum|url>. env
: (opcional) variables de entorno a definir para los parámetros de diskimage-builder. Este es un diccionario del tipoKEY: VALUE
.packages
: (opcional) lista de paquetes para instalar en la imagen.size
: (opcional) tamaño para crear el sistema de archivos de la imagen.properties
: (opcional) diccionario de propiedades para establecer en la imagen de Glance. Las propiedades de imagen comunes están disponibles aquí.type
: (opcional) tipo de imagen. Por defecto en DIB es qcow2. Los formatos de imagen están disponibles aquí.force_rebuild
: (opcional) bandera booleana que indica si la imagen debe ser siempre construida (incluso si ya existe una imagen que tiene ese nombre). Las imágenes en Glance serán reemplazadas sios_images_upload
está establecido enTrue
. Este valor por defecto esos_images_force_rebuild
si no se establece.is_public
: (opcional) si la imagen debe ser visible para todos los proyectos o mantenerla privada.owner
: (opcional) ID del proyecto que debe ser dueño de la imagen subida.
os_images_common
: Un conjunto de elementos que se incluirán en cada imagen listada. Por defecto es cloud-init enable-serial-console stable-interface-names
.
os_images_dib_pkg_name
: Opcionalmente personaliza el parámetro de nombre que se pasa al módulo ansible.builtin.pip al instalar diskimage-builder. Esto puede usarse para instalar diskimage-builder desde control de versiones.
os_images_dib_version
: Opcionalmente establece una versión de diskimage-builder para instalar. Por defecto no está restringido.
os_images_git_elements
: Una lista opcional de elementos para obtener de github, desplegar localmente para incorporarlos a las imágenes. Proporciona una lista de diccionarios con los siguientes parámetros:
repo
: URL a un repositorio git para clonar (si no está presente).local
: ruta local para la clonación de git.version
: referencia git opcional (rama, etiqueta, hash) para la clonación. Por defecto esHEAD
.elements_path
: ruta opcional relativa a los elementos dentro del repositorio.
os_images_elements
: Una lista opcional de rutas para elementos DIB específicos del sitio.
os_images_upload
: Si se deben subir imágenes construidas a Glance. Por defecto es True
.
os_images_force_rebuild
: Si se debe forzar una reconstrucción de la imagen DIB. Las imágenes en Glance serán reemplazadas con la nueva imagen construida si os_images_upload
está establecido en True
. Por defecto es False
.
os_images_public
: Si las imágenes subidas son públicas. Por defecto es True
- nota que esto requiere permisos de administrador.
os_images_venv
: Ruta a virtualenv en el cual instalar dependencias de Python para subir imágenes.
os_images_dib_venv
: Ruta a virtualenv en que instalar DIB para construir imágenes.
os_images_promote
: Si se deben retirar imágenes antiguas y promover nuevas. Por defecto es False
.
os_images_build
: Si se deben construir las imágenes.
os_images_name_suffix
: Sufijo de imagen que se eliminaría durante la promoción de la imagen, por ejemplo: -rc, -dev, -test, etc. Obligatorio para la funcionalidad de promoción. Vacío por defecto.
os_images_hide
: Si se deben ocultar las imágenes en la lista de Glance. Ocultar imágenes está disponible como opción en el proceso de retiro/promoción de imágenes. Por defecto es False
.
Dependencias
Ejemplo de Playbook
El siguiente playbook genera una imagen de invitado y la sube a OpenStack:
---
- name: Generar imagen de invitado y subir
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
Información del autor
- Stig Telfer (stig@stackhpc.com)
Role to generate guest instance images and upload to OpenStack
ansible-galaxy install stackhpc.os-images