Repo 파일을 복사해야 하는 서버가 200개가 넘는데 AppCluster 및 DBCluster 서버와 같은 서버에 파일을 복사하고 싶지 않습니다. 클러스터에는 서로 다른 Repo 파일이 있으므로 표준에는 서로 다른 Repo 파일이 있습니다.
[AppCluster]
172.16.55.5
172.16.55.6
172.16.55.7
172.16.55.8
[DBCluster]
172.16.56.5
172.16.56.6
172.16.55.7
172.16.55.8
나는 노력했다
- name: Copy YUM File copy: src: /home/sysadmin/ansible_files/modules_utils/templates/repofile/rhel-remote.repo dest: /etc/yum.repos.d/ owner: root group: root mode: '0644' when: ansible_distribution_major_version == "7" and (group_names != "AppCluster" or group_names != "DBCluster")
하지만 작동하지 않는 것 같습니다
어떤 제안이라도
답변1
묻다:"AppCluster 및 DBCluster 서버에 이 파일을 복사하지 마십시오."
답: 이 조건을 시도해 보세요
when:
- ansible_distribution_major_version == '7'
- group_names|intersect(['AppCluster', 'DBCluster'])|length == 0
예
재고를 감안할 때
shell> cat hosts
srv1
srv2
srv3
[AppCluster]
srv2
[DBCluster]
srv3
스크립트
shell> cat pb.yml
- hosts: all
gather_facts: false
tasks:
- debug:
msg: "Copy repo to {{ inventory_hostname }}"
when: group_names|intersect(['AppCluster', 'DBCluster'])|length == 0
주어진
shell> ansible-playbook -i hosts pb.yml
PLAY [all] ********************************************************************************
TASK [debug] ******************************************************************************
skipping: [srv3]
ok: [srv1] =>
msg: Copy repo to srv1
skipping: [srv2]
PLAY RECAP ********************************************************************************
srv1: ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv2: ok=0 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
srv3: ok=0 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
답변2
호스트가 있는 그룹을 제외할 수 있다고 생각합니다.
주인:
all
!AppCluster
!DBCluster