Inventory-группы Ansible
На этой странице мы будем называть группой (или inventory-группой) набор хостов для Ansible inventory. Inventory-группы нужны для того, чтобы разработчик бандлов использовал их в playbooks. Количество и типы inventory-групп зависят от компонентов, определённых с помощью bundle DSL.
Inventory-файл с такими группами генерируется каждый раз, когда ADCM запускает любую операцию (action), задачу (job) или подзадачу (sub job). Сгенерированные inventory-файлы имеют названия inventory.json и находятся в точке монтирования (mount point) вашей файловой системы (обычно /opt/adcm/run/…). Вы также можете скачать inventory-файл, используя иконку .
Inventory-группы, которые может сформировать ADCM, описаны ниже.
Основные группы
Эти группы содержат хосты, выбранные по основным признакам.
Группа | Описание | Тип бандла |
---|---|---|
CLUSTER |
Группа, которая содержит все хосты в кластере, кроме хостов, находящихся в режиме обслуживания |
Продуктовый |
PROVIDER |
Группа, содержащая все хосты, созданные с помощью хостпровайдера |
Инфраструктурный |
HOST |
Группа, содержащая хост, на котором запущена текущая операция (action) |
Инфраструктурный |
<service name> |
Группа, содержащая все хосты, на которые добавлен соответствующий сервис, кроме хостов, находящихся в режиме обслуживания |
Продуктовый |
<service name>.<component name> |
Группа, содержащая все хосты, на которые добавлен соответствующий компонент |
Продуктовый |
Группы для операций с атрибутом hc_acl
Эти группы генерируются в результате запуска action, у которого определён атрибут hc_acl
. Группы названы в соответствии с операциями.
Группа | Описание | Тип бандла |
---|---|---|
<service name>.<component name>.add |
Группа, содержащая все хосты, которые пользователь выбрал, чтобы добавить соответствующий компонент |
Продуктовый |
<service name>.<component name>.remove |
Группа, содержащая все хосты, которые пользователь выбрал, чтобы удалить соответствующий компонент |
Продуктовый |
Группа для операций, определённых на хостах
Эта группа содержит хост, на котором был запущен action с атрибутом host_action: true
.
Группа | Описание | Тип бандла |
---|---|---|
target |
Группа, содержащая все хосты, на которых запущены операции |
Продуктовый |
Группы для режима обслуживания
Эти группы содержат хосты, которые находятся в режиме обслуживания.
Группа | Описание | Тип бандла |
---|---|---|
<service name>.maintenance_mode |
Группа, содержащая все хосты, на которые добавлен соответствующий сервис, и при этом хосты находятся в режиме обслуживания |
Продуктовый |
<service name>.<component name>.maintenance_mode |
Группа, содержащая все хосты, на которые добавлен соответствующий компонент, и при этом хосты находятся в режиме обслуживания |
Продуктовый |
CLUSTER.maintenance_mode |
Группа, которая содержит все хосты кластера, находящиеся в режиме обслуживания |
Продуктовый |
Примеры
Пусть у нас есть кластер, содержащий 4 хоста. Компонент server
находится на хосте test-zookeeper-1
, а компонент client
находится на хосте test-zookeeper-2
. Компонент server
также находится на хосте test-zookeeper-4
, который переведён в режим обслуживания в отдельной группе.
Пусть у нас также есть сервис ZooKeeper, содержащий server
и client
в качестве компонентов. В сервис входят все хосты, на которых есть компоненты этого сервиса, следовательно, ZooKeeper включает test-zookeeper-1
и test-zookeeper-2
.
Мы бы хотели иметь action, который расширяет ZooKeeper на хост test-zookeeper-3
. В этом случае файл inventory.json будет выглядеть так, как показано ниже.
{
"all": {
"children": {
"CLUSTER": {
"hosts": {
"test-zookeeper-1": {
...
},
"test-zookeeper-2": {
...
},
"test-zookeeper-3": {
...
}
}
},
"zookeeper.server": {
"hosts": {
"test-zookeeper-1": {
...
}
}
},
"zookeeper": {
"hosts": {
"test-zookeeper-1": {
...
},
"test-zookeeper-2": {
...
}
}
},
"zookeeper.client": {
"hosts": {
"test-zookeeper-2": {
...
}
}
},
"zookeeper.server.add": {
"hosts": {
"test-zookeeper-3": {
...
}
}
},
"zookeeper.server.maintenance_mode": {
"hosts": {
"test-zookeeper-4": {
...
}
}
}
}
}
}
Пусть теперь у нас есть бандл для хостпровайдера SSH и 2 хоста (ssh-1
и ssh-2
), созданные с помощью этого хостпровайдера.
При запуске действия (action) Create users на этом хостпровайдере файл inventory.json будет выглядеть так, как показано ниже.
{
"all": {
"children": {
"PROVIDER": {
"hosts": {
"ssh-1": {
...
},
"ssh-2": {
...
}
}
}
}
}
}