#ansible
#ansible
Вопрос:
Я не могу настроить инвентарь, который будет простым и полезным в yml
формате для Ansible Playbook: (
Например:
all:
children:
db:
children:
production:
hosts:
1.1.1.1:
staging:
hosts:
11.11.11.11:
web:
children:
production:
hosts:
2.2.2.2:
staging:
hosts:
22.22.22.22:
Итак, у меня есть два сборника с:
playbook-db.yml
...
hosts:
- db
и playbook-web.yml
...
hosts:
- db
И я хочу использовать этот инвентарь как:
andible-playbook -D playbook-db.yml --limit=staging
Я ожидаю, что мой playbook будет использоваться только db
staging
для хостов and, но playbook применяется для всех staging
хостов: 11.11.11.11
и 22.22.22.22
(но я ожидаю только 11.11.11.11): (
Как я могу это правильно реализовать?
Ответ №1:
Похоже, у вас есть недопонимание относительно файла инвентаризации, поскольку ansible выполняет то, что вы описали
ansible-inventory -i your-posted-file.yml --list
выдает
{ ...
"all": {
"children": [
"db",
"ungrouped",
"web"
]
},
"db": {
"children": [
"production",
"staging"
]
},
"production": {
"hosts": [
"1.1.1.1",
"2.2.2.2"
]
},
"staging": {
"hosts": [
"11.11.11.11",
"22.22.22.22"
]
}
показывает, что в db
группе есть все члены production
и staging
, но staging
есть хосты "11.11.11.11", "22.22.22.22"
, как вы описали
Я думаю, возможно, вы объединяли отступ yaml с членством, но это не так, как работают инвентаризации ansible.
Гораздо более вероятно, что вам понадобится a db-staging
и db-production
group , для случая, который вы описали, когда вам нужны только db
те хосты, которые есть staging
, оставляя db
группу для обозначения каждого db
участника
Комментарии:
1. похоже, это единственный способ сделать
db-staging
и т. Д. — Я пробовал это раньше, и это сработало. Спасибо