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 es OS_AUTH_URL.
  • project: Inquilino/proyecto de OpenStack. Por defecto es OS_TENANT_NAME.
  • username: Nombre de usuario de OpenStack. Por defecto es OS_USERNAME.
  • password: Contraseña de OpenStack. Por defecto es OS_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 tipo KEY: 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 si os_images_upload está establecido en True. Este valor por defecto es os_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 es HEAD.
  • 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

Acerca del proyecto

Role to generate guest instance images and upload to OpenStack

Instalar
ansible-galaxy install stackhpc.os-images
Licencia
apache-2.0
Descargas
201.6k
Propietario
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.