[ English | Deutsch | русский | English (United Kingdom) | Indonesia ]
Расширение 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.yml, вы можете определить переменную окружения 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.yml. Пример вызова плейбука из коллекции (установленной с помощью 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.
