Как я могу пройти хозяева от основного сборника пьес к прилагаемому сборнику пьес?
Я пытаюсь создать мастер-сценарий для определенного типа сервера (например, веб-сервера), который разделяет некоторые общие сценарии с другими типами серверов (например, сервер шлюза, сервер базы данных и т. Д.). Я использую Ansible 1.9.1 на Ubuntu 14.04.
В инвентарь файл:
[web-servers]
192.168.0.217
[db-servers]
192.168.0.218
Мастер-сценарий развертывание веб-серверов.yml является:
---
- hosts: web-servers
tasks:
- debug: var=hostvars
- include: setup-common.yml
vars:
server: "{{ hostvars['inventory_hostname'] }}"
Включенный playbook setup-common.yml является:
---
- hosts: "{{ server }}"
tasks:
- debug: var=server
Когда я запускаю это с помощью команды:
ansible-playbook deploy-web-servers.yml -i inventory
Он выводит:
PLAY [web-servers] ************************************************************
TASK: [debug var=hostvars] ****************************************************
ok: [192.168.0.217] => {
"var": {
"hostvars": {
"group_names": [
"web-servers"
],
"groups": {
"all": [
"192.168.0.218",
"192.168.0.217"
],
"db-servers": [
"192.168.0.218"
],
"ungrouped": [],
"web-servers": [
"192.168.0.217"
]
},
"inventory_hostname": "192.168.0.217",
"inventory_hostname_short": "192"
}
}
}
PLAY [{{ hostvars['inventory_hostname'] }}] ***********************************
skipping: no hosts matched
PLAY RECAP ********************************************************************
192.168.0.217 : ok=1 changed=0 unreachable=0 failed=0
Включенный playbook setup-common.yml никогда не запускается, потому что хост не был успешно перенаправлен, как указано в строках:
PLAY [{{ hostvars['inventory_hostname'] }}] ***********************************
skipping: no hosts matched
Как я могу перенаправить хост на включенный playbook?
Вот в чем проблема:
- include: setup-common.yml
vars:
server: "{{ hostvars['inventory_hostname'] }}"
Вам вообще не нужно указывать эту переменную, и вы не должны пытаться использовать ее в другой книге. По умолчанию playbook запускается для всех хостов, которые Это указывает. Так что не делайте этого, а просто напишите нормальный сценарий.