stackhpc.os-images
ЗАМЕТКА:
Этот репозиторий больше не поддерживается - роль была перенесена в Ansible коллекцию по адресу ➡️ https://github.com/stackhpc/ansible-collection-openstack
Образы OpenStack
Эта роль генерирует образы гостевых экземпляров с помощью disk-image-builder
и загружает их в OpenStack с использованием модуля os_image.
Требования
API OpenStack должны быть доступны с целевого хоста.
Учётные данные клиента должны быть настроены в окружении или
с использованием формата clouds.yaml.
Вы должны использовать virtualenv с включёнными системными пакетами, так как эта роль зависит от python-пакетов, установленных пакетным менеджером, например:
virtualenv --system-site-packages ~/venvs/dib
Переменные роли
os_images_package_dependencies_extra: Список дополнительных пакетов для установки
на хосте сборки.
os_images_cache: путь к директории, в которой будут кэшироваться артефакты сборки.
По умолчанию это ~/disk_images.
ЗАМЕТКА: новые образы НЕ будут собираться, даже если внесены изменения в конфигурацию, если образ уже закэширован.
Используйте флаг force_rebuild, чтобы применить новые изменения конфигурации.
os_images_auth_type: Точка аутентификации OpenStack и учётные данные.
По умолчанию это password.
os_images_auth: Точка аутентификации OpenStack и учётные данные. Например, словарь следующего вида:
auth_url: URL-адрес точки аутентификации Keystone. По умолчанию этоOS_AUTH_URL.project: тенант/проект OpenStack. По умолчанию этоOS_TENANT_NAME.username: имя пользователя OpenStack. По умолчанию этоOS_USERNAME.password: пароль OpenStack. По умолчанию этоOS_PASSWORD.
os_images_region: Определяет регион для загрузки образов. По умолчанию None.
os_images_cacert - необязательный путь к пакету сертификатов CA.
os_images_interface - тип URL-адреса точки обслуживания для получения из каталога
услуг. Может быть один из public, admin или internal.
os_images_list - список словарей YAML, где elements и image_url являются
взаимно исключающими, каждый содержит:
name: имя образа, которое будет использовано в OpenStack.elements: список элементов diskimage-builder, которые будут включены в образ.image_url: URL-адрес местоположения образа в Интернете.checksum: Контрольная сумма для проверки загруженного образа. Формат: <алгоритм>:<контрольная сумма|url>.env: (необязательно) переменные окружения, которые нужно определить для параметров diskimage-builder. Это словарь видаКЛЮЧ: ЗНАЧЕНИЕ.packages: (необязательно) список пакетов для установки в образ.size: (необязательно) размер файловой системы образа.properties: (необязательно) словарь свойств для задания на образ glance. Общие свойства изображения доступны здесь.type: (необязательно) тип образа. По умолчанию в DIB qcow2. Форматы изображений доступны здесь.force_rebuild: (необязательно) логический флаг, указывающий, нужно ли всегда собирать изображение (даже если ранее было собрано существующее изображение с таким именем). Изображения в glance будут заменены, еслиos_images_uploadустановлено вTrue. По умолчанию этоos_images_force_rebuild, если не указано.is_public: (необязательно) нужно ли установить изображение как видимое для всех проектов или оставить его приватным.owner: (необязательно) ID проекта, который должен владеть загруженным изображением.
os_images_common: Набор элементов, которые должны быть включены в каждый перечисленный образ.
По умолчанию это cloud-init enable-serial-console stable-interface-names.
os_images_dib_pkg_name: При желании измените параметр имени, передаваемый
модулю ansible.builtin.pip при установке diskimage-builder. Это можно
использовать для установки diskimage-builder из версии управления.
os_images_dib_version: При желании укажите версию diskimage-builder для установки.
По умолчанию это не ограничено.
os_images_git_elements: Необязательный список элементов для извлечения из github, развертывания
на локальном уровне для включения в образы. Предоставьте список словарей с
следующими параметрами:
repo: URL-адрес git-репозитория для клонирования (если он ещё не присутствует)local: локальный путь для клонирования gitversion: необязательная ссылка на git (ветка, тег, хеш) для клонирования. По умолчаниюHEADelements_path: необязательный относительный путь к элементам внутри репозитория.
os_images_elements: Необязательный список путей для специфических для сайта элементов DIB.
os_images_upload: Нужно ли загружать собранные образы в Glance. По умолчанию True.
os_images_force_rebuild: Нужно ли принудительно пересобирать образ DIB. Образы в Glance
будут заменены вновь созданным изображением, если os_images_upload установлено в True. По умолчанию
False.
os_images_public: Нужно ли загруженные образы сделать публичными. По умолчанию True - обратите внимание, что для этого требуются административные права.
os_images_venv: Путь к virtualenv, в котором следует установить python-зависимости для загрузки изображений.
os_images_dib_venv: Путь к virtualenv, в котором следует установить DIB для создания образов.
os_images_promote: Нужно ли уволить старые и продвигать новые образы. По умолчанию False.
os_images_build: Нужно ли строить образы.
os_images_name_suffix: Суффикс изображения, который будет удален во время продвижения образа, например: -rc, -dev, -test и т.д. Обязательно для функциональности продвижения. По умолчанию пусто.
os_images_hide: Нужно ли скрывать изображения в списке Glance. Скрытие изображений доступно как опция в процессе увольнения/продвижения изображений. По умолчанию False.
Зависимости
Пример плейбука
Следующий плейбук генерирует образ для гостя и загружает его в OpenStack:
---
- name: Генерация образа гостя и загрузка
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
Информация об авторах
- Stig Telfer (stig@stackhpc.com)
Role to generate guest instance images and upload to OpenStack
ansible-galaxy install stackhpc.os-images