Как выполнить ansible -плейбук с Azure Dynami c Запасы вместе с условными группами с ключами - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь использовать плагин azure_rm в ansible для генерации динамических c хостов на платформе Azure. С условной группой ключей я могу успешно заставить ее работать с помощью команды ansible ad-ho c. Тем не менее, это не работает, когда я пытаюсь пройти то же самое с "ansible -playbook". Может ли кто-нибудь помочь, как я могу запустить ansible -плейбук таким же образом?

Ниже приведен мой файл создания инвентаря динамического c:

---
plugin: azure_rm
auth_source: msi
keyed_groups:
- prefix: tag
  key: tags

Когда я использую этот файл для ping целевой VM, ниже приведен ответ об успешном выполнении.

Используемая команда:

ansible -m ping tag_my_devops_ansible_slave -i dynamic_inventory_azure_rm.yml

Ответ:

devops-eastus2-dev-ansibleslave-vm_2f44 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

Однако, когда я использую то же самое с ansible -playbook, я получаю следующую ошибку. Используемая команда:

ansible-playbook  tag_cdo_devops_ansible_slave -i dynamic_inventory_azure_rm.yml test-playbook.yml

Ошибка:

ansible-playbook: error: unrecognized arguments: test-playbook.yml

Может ли кто-нибудь помочь с тем, как выполнить ansible -плейбук для приведенного выше варианта использования?

1 Ответ

0 голосов
/ 24 февраля 2020

Команда ansible-playbook не принимает список целей в командной строке, скорее, файл playbook имеет hosts: в качестве ключа верхнего уровня, указывающего хосты, к которым будет применяться playbook.

Итак, если playbook всегда будет использоваться с этим тегом, вы можете просто указать, что в playbook:

- hosts: tag_cdo_devops_ansible_slave
  tasks:
  - debug: var=ansible_host

Также кажется, что hosts: соблюдает шаблоны jinja2, так что вы можете достичь того, что вы пытаетесь сделать это с помощью:

- hosts: '{{ azure_playbook_hosts }}'
  tasks:
  - debug: var=ansible_host

, а затем ansible-playbook -e azure_playbook_hosts=tag_cdo_devops_ansible_slave -i dynamic_inventory_azure_rm.yml test-playbook.yml

Или вы можете создать выделенный файл инвентаря, который возвращает только хосты, соответствующие вашему желаемому тегу, и затем использовать -i для этого инвентаря вместе с hosts: all в файле playbook.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...