Мы используем простую задачу сбоя, чтобы заставить пользователя указать параметр Ansible limit , чтобы мы не выполнялись на всех хостах по умолчанию / случайно.
Самый простой способ, который я нашел, - это:
---
- name: Force limit
# 'all' is okay here, because the fail task will force the user to specify a limit on the command line, using -l or --limit
hosts: 'all'
tasks:
- name: checking limit arg
fail:
msg: "you must use -l or --limit - when you really want to use all hosts, use -l 'all'"
when: ansible_limit is not defined
run_once: true
Теперь мы должны использовать параметр -l
(= --limit
), когда запускаем playbook, например
ansible-playbook playbook.yml -l www.example.com
Ограничить варианты документов :
Ограничение одним или несколькими хостами. Это требуется, когда кто-то хочет запустить playbook для группы хостов, но только против одного или нескольких членов этой группы.
Ограничить одним хостом
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit "host1"
Ограничить несколькими хостами
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit "host1,host2"
Отрицательный лимит.
ПРИМЕЧАНИЕ. ДОЛЖНЫ использоваться одинарные кавычки, чтобы предотвратить интерполяцию bash.
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit 'all:!host1'
Ограничить группу хостов
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit 'group1'
hosts: "{{ variable_host | default('web')}}"