#ansible
#ansible
Вопрос:
В документах указано, что я могу запустить свой playbook на определенном хосте, используя -i:
Шаблоны и флаги ansible-playbook
Вы можете изменить поведение шаблонов, определенных в playbooks, используя параметры командной строки. Например, вы можете запустить playbook, который определяет hosts: all на одном хосте, указав -i 127.0.0.2, . Это работает, даже если целевой хост не определен в вашем инвентаре. Вы также можете ограничить целевые хосты для конкретного запуска с помощью флага —limit:*
Тем не менее, я попытался запустить ansible-playbook <playbook> -i <new_hostname> -u <username>
, и используемый инвентарь по-прежнему был моим по умолчанию. Как правильно это использовать?
Комментарии:
1. =>
-i <new_hostname>,
. Кома в конце имеет значение.
Ответ №1:
Цитата из «man ansible»
-i, —inventory, —inventory-file укажите путь к хосту инвентаризации или список хостов, разделенных запятыми.
Чтобы указать один хост в качестве «списка хостов, разделенных запятыми», запятая по-прежнему необходима. Например, playbook
shell> cat playbook.yml
- hosts: all
gather_facts: false
tasks:
- debug:
var: inventory_hostname
дает
shell> ansible-playbook -i test_99, playbook.yml
PLAY [all] ****
TASK [debug] ****
ok: [test_99] =>
inventory_hostname: test_99
Без запятой после хоста Ansible принимает аргумент как «путь к хосту инвентаризации».
shell> ansible-playbook -i test_99 playbook.yml
[WARNING]: Unable to parse /scratch/test_99 as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'
PLAY [all] ****
skipping: no hosts matched