Usamos una tarea de falla simple para obligar al usuario a especificar la opción de límite de Ansible , de modo que no se ejecute en todos los hosts de forma predeterminada / accidental.
La forma más fácil que encontré es esta:
---
- 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
Ahora debemos usar la opción -l
(= --limit
) cuando ejecutamos el libro de jugadas, por ejemplo
ansible-playbook playbook.yml -l www.example.com
Limitar los documentos de opciones :
Límite a uno o más hosts Esto es necesario cuando se quiere ejecutar un libro de jugadas contra un grupo de hosts, pero solo contra uno o más miembros de ese grupo.
Límite a un host
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit "host1"
Límite a varios hosts
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit "host1,host2"
Límite negado.
NOTA: DEBEN usarse comillas simples para evitar la interpolación bash.
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit 'all:!host1'
Límite al grupo anfitrión
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit 'group1'
hosts: "{{ variable_host | default('web')}}"