[ English | Deutsch | русский | English (United Kingdom) ]

Расширение OpenStack-Ansible дополнительным контентом Ansible

Включение OpenStack-Ansible в ваш проект

Включение репозитория OpenStack-Ansible в другой проект можно осуществить несколькими способами:

  • Подмодуль git указывающий на выпущенную метку.

  • Скрипт для автоматического выполнения проверки git OpenStack-Ansible.

При включении OpenStack-Ansible в проект рассмотрите возможность использования параллельной структуры каталогов, как показано в разделе файлов ansible.cfg.

Также обратите внимание, что копирование файлов в такие каталоги, как env.d или conf.d, должно осуществляться с помощью какого-либо скрипта в проекте расширения.

Добавление OpenStack-Ansible в вашу структуру Ansible

Вы можете создать собственную структуру сценариев, переменных и ролей, одновременно включив роли и библиотеки OpenStack-Ansible, установив переменные среды или настроив /usr/local/bin/openstack-ansible.rc.

Соответствующие переменные среды для OpenStack-Ansible следующие:

ANSIBLE_LIBRARY

Эта переменная должна указывать на /etc/ansible/plugins/library. Это позволяет ролям и плейбукам получать доступ к включенным в OpenStack-Ansible модулям Ansible.

ANSIBLE_ROLES_PATH

Эта переменная должна указывать на /etc/ansible/roles по умолчанию. Это позволяет Ansible правильно искать любые роли OpenStack-Ansible, на которые могут ссылаться роли расширения.

ANSIBLE_INVENTORY

Эта переменная должна указывать на openstack-ansible/inventory/dynamic_inventory.py. С этой настройкой расширения имеют доступ к тому же динамическому inventory, который использует OpenStack-Ansible.

Пути к каталогу верхнего уровня openstack-ansible в этом файле могут быть относительными.

Рассмотрим следующую структуру каталога:

my_project
|
|- custom_stuff
|  |
|  |- playbooks
|- openstack-ansible
|  |
|  |- playbooks

Набор переменных среды будет использовать ../openstack-ansible/playbooks/<directory>.

Добавление новых или переопределение ролей в вашей установке OpenStack-Ansible

По умолчанию OpenStack-Ansible использует свой файл ansible-role-requirements для получения ролей, необходимых для процесса установки.

Роли будут загружены в стандартный ANSIBLE_ROLES_PATH, который по умолчанию равен /etc/ansible/roles.

ANSIBLE_ROLE_FILE — это переменная среды, указывающая на местоположение файла YAML, который может использовать ansible-galaxy, определяя, какие роли следует загрузить и установить. Значение по умолчанию для этого — ansible-role-requirements.yml.

Чтобы полностью переопределить файл ansible-role-requirement, можно определить переменную окружения ANSIBLE_ROLE_FILE перед запуском скрипта bootstrap-ansible.sh. При таком подходе теперь ответственность за поддержку соответствующих версий пинов ролей ansible лежит на операторе, если требуется обновление.

Если вы хотите расширить или частично переопределить содержимое файла ansible-role-requirements.yml, вы можете создать новый файл конфигурации, путь к которому по умолчанию /etc/openstack_deploy/user-role-requirements.yml. Этот путь можно переопределить с помощью другой переменной среды USER_ROLE_FILE, которая, как ожидается, будет относительно папки OSA_CONFIG_DIR (/etc/openstack_deploy).

Этот файл имеет тот же формат, что и ansible-role-requirements.yml, и может использоваться для добавления новых ролей или выборочного переопределения существующих. Новые роли, перечисленные в user-role-requirements.yml, будут объединены с ролями в ansible-role-requirements.yml, а роли с соответствующим ключом name переопределят роли в ansible-role-requirements.yml. В случае, если ключ src не определен, скрипт начальной загрузки пропустит клонирование таких ролей.

Разработчик может легко сохранить этот файл под своим собственным контролем версий и вне дерева OpenStack-Ansible.

Добавление новых или переопределение коллекций в вашей установке OpenStack-Ansible

Подобно ролям, коллекции для установки хранятся в файле ansible-collection-requirements. Путь к этому файлу можно переопределить через переменную окружения ANSIBLE_COLLECTION_FILE.

В выпуске OpenStack-Ansible Victoria добавлен новый необязательный файл конфигурации, который по умолчанию имеет имя /etc/openstack_deploy/user-collection-requirements.yml.

Он должен быть в собственном формате файла требований ansible-galaxy и может использоваться для добавления новых коллекций на хост развертывания или переопределения версий или источника для коллекций, определенных в ansible-collection-requirements.

user-collection-requirements будет объединен с ansible-collection-requirements с использованием name коллекции в качестве ключа. В случае, если source не определен в user-collection-requirements, установка коллекции будет пропущена. Таким образом, вы можете пропустить установку нежелательных коллекций.

Вы можете переопределить расположение user-collection-requirements.yml, установив переменную среды USER_COLLECTION_FILE перед запуском скрипта bootstrap-ansible.sh. Хотя ожидается, что она будет относительно папки OSA_CONFIG_DIR (/etc/openstack_deploy).

Вызов дополнительных сценариев во время развертывания

Если вы установите некоторые дополнительные функции развертывания в виде коллекции или репозитория git на хосте развертывания, можно будет автоматически включать дополнительные плейбуки в определенные моменты во время развертывания.

Точки, в которых существует возможность вызова внешнего сценария, следующие:

  • pre_setup_hosts_hook

  • post_setup_hosts_hook

  • pre_setup_infrastructure_hook

  • post_setup_infrastructure_hook

  • pre_setup_openstack_hook

  • post_setup_openstack_hook

Переменные хука должны быть настроены в подходящем файле user_variables. Пример вызова плейбука из коллекции (установленной с помощью user-collection-requirements.yml):

pre_setup_hosts_hook: custom.collection.playbook

Установка дополнительных сценариев с использованием коллекций и ссылка на сценарий с его полным именем FQCN — наиболее надежный подход к включению дополнительных пользовательских сценариев.

Установка дополнительных пакетов Python внутри Ansible virtualenv

Некоторые коллекции Ansible могут потребовать наличия определенных библиотек Python внутри среды выполнения. Чтобы добиться этого, оператор может создать файл /etc/openstack_deploy/user-ansible-venv-requirements.txt со списком библиотек Python, которые должны быть установлены внутри виртуальной среды вместе с Ansible во время выполнения bootstrap-ansible.sh.

Вы можете переопределить путь по умолчанию к файлу user-ansible-venv-requirements.txt с помощью переменной среды USER_ANSIBLE_REQUIREMENTS_FILE перед запуском скрипта bootstrap-ansible.sh.

Определение переменных среды для развертывания

В документации мы много говорим о различных переменных среды, которые управляют поведением OpenStack-Ansible и самого Ansible.

Начиная с релиза Zed файл user.rc может быть помещен в папку OSA_CONFIG_DIR (/etc/openstack_deploy) и содержать любые определения переменных среды, которые могут потребоваться для изменения поведения по умолчанию или любого произвольного параметра Ansible configuration. Эти переменные среды являются переменными общего назначения и не ограничиваются теми, которые понимает Ansible.

Путь к этому файлу можно изменить, установив переменную OSA_USER_RC, но переменные OSA_CONFIG_DIR и OSA_USER_RC нельзя переопределить или контролировать через файл user.rc.