
그래서 nginx 서버 그룹이 있습니다.
[nginx_internal_servers]
n01.local
n02.local
n03.local
그리고 실행할 사전 배포 작업이 있습니다. 저는 serial:1
모드로 실행 중이고 이 사전 배포 작업이 저를 제외한 모든 사람에게만 실행되기를 원합니다.
현재 내 작업은 다음과 같습니다. 모든 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
목록에서 현재 노드를 제외하는 방법에 대한 아이디어가 있습니까 groups['nginx_internal_servers']
?
답변1
알았어요! 언제를 사용하세요 :)
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
답변2
일반 작업 버전
- name: run on all but the first host in a play
some_module: some_param=some_value
when: inventory_hostname != play_hosts[0]