Entonces tengo un grupo de servidores nginx:
[nginx_internal_servers]
n01.local
n02.local
n03.local
Y tengo una tarea previa a la implementación que ejecutar. Estoy ejecutando en serial:1
modo y solo quiero que esta tarea previa a la implementación se ejecute en todos los demás excepto en mí.
Actualmente mi tarea se ve así, que se ejecuta perfectamente en todos los servidores nginx:
pre_tasks:
- name: Take service out of nginx upstream pools
local_action: command {{ playbook_dir }}/scripts/nginx-upstream-management.sh -s {{ item[0] }} -r {{ item[2] }} -g {{ item[1] }}
with_nested:
- groups['nginx_internal_servers']
- services_endpoints.keys()
- ansible_all_ipv4_addresses|last
¿Alguna idea de cómo excluir el nodo actual de la lista groups['nginx_internal_servers']
?
Respuesta1
¡Entiendo! Usa un cuando :)
pre_tasks:
- name: Take service out of nginx upstream pools
local_action: command {{ playbook_dir }}/scripts/nginx-upstream-management.sh -s {{ item[0] }} -r {{ item[2] }} -g {{ item[1] }}
with_nested:
- groups['nginx_internal_servers']
- services_endpoints.keys()
- ansible_all_ipv4_addresses|last
when: item[0] != inventory_hostname
Respuesta2
Versión de tarea genérica
- name: run on all but the first host in a play
some_module: some_param=some_value
when: inventory_hostname != play_hosts[0]