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

Понимание inventory

Макет контейнеров и служб по умолчанию в OpenStack-Ansible (OSA) определяется файлом /etc/openstack_deploy/openstack_user_config.yml и содержимым каталогов /etc/openstack_deploy/conf.d/ и /etc/openstack_deploy/env.d/. Вы используете эти источники для определения сопоставлений групп, которые плейбуки используют для определения хостов и контейнеров для ролей, используемых при развертывании.

  • Группы хостов, которые объединяют целевые хосты в группы inventory, определяются с помощью файла /etc/openstack_deploy/openstack_user_config.yml и содержимого каталога /etc/openstack_deploy/conf.d/.

  • Вы определяете группы контейнеров, которые могут сопоставлять компоненты служб, подлежащие развертыванию, с группами хостов с помощью файлов в каталоге /etc/openstack_deploy/env.d/.

Чтобы настроить компоновку компонентов для вашего развертывания, измените группы хостов и группы контейнеров соответствующим образом перед запуском установочных плейбуков.

Понимание групп хостов (структура conf.d)

В рамках начальной конфигурации каждый целевой хост появляется либо в файле /etc/openstack_deploy/openstack_user_config.yml, либо в файлах в каталоге /etc/openstack_deploy/conf.d/. Формат, используемый для файлов в каталоге conf.d/, идентичен синтаксису, используемому в файле openstack_user_config.yml.

В этих файлах целевые хосты перечислены под одним или несколькими заголовками, такими как shared-infra_hosts или storage_hosts, которые служат в качестве сопоставлений групп Ansible. Эти группы сопоставлены с физическими хостами.

Файл haproxy.yml.example в каталоге conf.d/ содержит простой пример определения группы хостов (load_balancer_hosts) с двумя хостами (infra1 и infra2).

Файл swift.yml.example предоставляет более сложный пример. Здесь переменные хоста для целевого хоста указываются с помощью ключа container_vars. OpenStack-Ansible применяет все записи под этим ключом как переменные, специфичные для хоста, к любым контейнерам компонентов на определенном хосте.

Примечание

Для управления размером файла мы рекомендуем вам определять новые группы inventory, особенно для новых служб, используя новый файл в каталоге conf.d/.

Понимание групп контейнеров (структура env.d)

Дополнительные сопоставления групп находятся в файлах в каталоге /etc/openstack_deploy/env.d/. Эти группы рассматриваются как виртуальные сопоставления из групп хостов (описанных выше) на группы контейнеров, которые определяют, где развертывается каждая служба. Просматривая файлы в каталоге env.d/, вы можете начать видеть вложенность групп, представленных в макете по умолчанию.

Например, файл shared-infra.yml определяет группу контейнеров shared-infra_containers как подмножество группы inventory all_containers. Группа контейнеров shared-infra_containers сопоставляется с группой хостов shared-infra_hosts. Все компоненты служб в группе контейнеров shared-infra_containers развертываются на каждом целевом хосте в группе хостов shared-infra_hosts.

В разделе physical_skel динамический inventory OpenStack-Ansible ожидает найти пару ключей. Первый ключ сопоставляется с элементами в разделе container_skel, а второй ключ сопоставляется с целевыми группами хостов (описанными выше), которые отвечают за размещение компонента службы.

Продолжая пример, файл memcache.yml определяет группу контейнеров memcache_container. Эта группа является подмножеством группы shared-infra_containers, которая сама является подмножеством группы inventory all_containers.

Примечание

Группа all_containers автоматически определяется OpenStack-Ansible. Любой компонент службы, управляемый OpenStack-Ansible, сопоставляется с подмножеством группы инвентаризации all_containers, напрямую или косвенно через другую промежуточную группу контейнеров.

Макет по умолчанию не полагается исключительно на группы, являющиеся подмножествами других групп. Группа компонентов memcache является частью группы memcache_container, а также группы memcache_all и также содержит группу компонентов memcached. Если вы просмотрите сценарий playbooks/memcached-install.yml, вы увидите, что сценарий применяется к хостам в группе memcached. Другие службы могут иметь более сложные требования в развертывании. Они по-разному определяют и используют группы контейнеров inventory. Сопоставление компонентов с несколькими группами таким образом позволяет гибко нацеливать роли и задачи.