単純なfailタスクを使用して、ユーザーに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
オプション)を使用する必要があります。たとえば、
ansible-playbook playbook.yml -l www.example.com
オプションドキュメントの制限:
1つ以上のホストに制限これは、ホストグループに対してプレイブックを実行したいが、そのグループの1つ以上のメンバーに対してのみ必要な場合に必要です。
1つのホストに制限
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')}}"