Ansible: 특정 그룹에 속하지 않은 서버를 제외한 모든 서버의 파일 복사(2)

Ansible: 특정 그룹에 속하지 않은 서버를 제외한 모든 서버의 파일 복사(2)

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

관련 정보