간단한 실패 작업을 사용하여 사용자가 Ansible 제한 옵션 을 지정하도록 강제 하므로 모든 호스트에서 기본 / 사고로 실행되지 않습니다.
내가 찾은 가장 쉬운 방법은 다음과 같습니다.
---
- 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
제한 옵션 문서 :
하나 이상의 호스트로 제한 호스트 그룹에 대해 플레이 북을 실행하려는 경우 필요하지만 해당 그룹의 하나 이상의 구성원에 대해서만 필요합니다.
하나의 호스트로 제한
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')}}"