[ 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
.