Назад | Перейти на главную страницу

Перенос хостов из основной книги во включенную книгу

Как я могу пройти хозяева от основного сборника пьес к прилагаемому сборнику пьес?

Я пытаюсь создать мастер-сценарий для определенного типа сервера (например, веб-сервера), который разделяет некоторые общие сценарии с другими типами серверов (например, сервер шлюза, сервер базы данных и т. Д.). Я использую 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 запускается для всех хостов, которые Это указывает. Так что не делайте этого, а просто напишите нормальный сценарий.