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 (ветка, тег, хеш) для клонирования. По умолчаниюHEAD
elements_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/ansible-role-os-images