저는 제품 및 응용 프로그램의 구성 파일, 유지 관리 스크립트의 배포 등과 같은 다양한 종류의 응용 프로그램을 관리하기 위해 Anipal을 구현하려고했습니다.UNIQUE 사용자/호스트 조합에 대한 유용한 지침서를 실행하십시오.
우리 팀은 무의미한 이름을 가진 300 개 이상의 호스트가 있기 때문에 "호스트 이름"을 사용하지 않습니다. 그 때문에, 나는 Ansible 호스트에 그들을 위해 별칭을 만드는 시작처럼 파일 :
[bpm-i]
bpm-app1-i1 ansible_user=bpmadmin ansible_host=el1001.bc
bpm-app1-i2 ansible_user=bpmadmin ansible_host=el1003.bc
[bpm-u]
bpm-app1-u1 ansible_user=bpmadmin ansible_host=el2001.bc
bpm-app1-u2 ansible_user=bpmadmin ansible_host=el2003.bc
[bpm-all:children]
bpm-i
bpm-u
우리가 "APP1"라는 이름의 BPM의 응용 프로그램이 있고이 통합 테스트에서 두 호스트와 사용자 - 두 개의 호스트에 배포있어 의미 수락 테스트. 여태까지는 그런대로 잘됐다. 이제 (예를 들어) 팀 멤버에 대한 SSH 액세스 (authorized_keys)를 설정하거나 유지 관리 스크립트를 푸는 Ansible 플레이 북을 실행할 수 있습니다. 각 PBT를 각 호스트에서 개별적으로, 모든 호스트 ITT 또는 UAT 또는 심지어 모든 곳에서 실행할 수 있습니다.
그러나 일반적으로 우리는 기존 호스트에 동일한 응용 프로그램을 다시 설치하지만 "교육"환경과는 다른 용도로 사용합니다. 내 반사는이 작업을 수행하는 것입니다 :
는[bpm-i]
bpm-app1-i1 ansible_user=bpmadmin ansible_host=el1001.bc
bpm-app1-i2 ansible_user=bpmadmin ansible_host=el1003.bc
[bpm-u]
bpm-app1-u1 ansible_user=bpmadmin ansible_host=el2001.bc
bpm-app1-u2 ansible_user=bpmadmin ansible_host=el2003.bc
[bpm-t]
bpm-app1-t1 ansible_user=bpmadmin ansible_host=el2001.bc
bpm-app1-t2 ansible_user=bpmadmin ansible_host=el2003.bc
[bpm-all:children]
bpm-i
bpm-u
bpm-t
하지만 ... 실행 PB의 지금 엉망이되고 오류가 발생합니다. 논리적으로 동일한 사용자/호스트 조합 (bpm-app1-u1 및 bpm-app1-t1)에 도달하는 두 개의 별명이 있습니다. 괜찮 았어, 그건 완벽하게 논리적이지만, 만약 내가 새로운 유지 보수 스크립트를 테스트한다면, 나는 먼저 bpm-app1-i1에 테스트를 맡기고, 괜찮 으면 bpm-all에 대해서 PB를 돌릴 것이다. 그러나 일부 별칭에 대해 고유하지 않은 사용자/호스트 조합으로 인해 PB는 동일한 사용자/호스트에서 여러 번 실행됩니다. PB의 동작에 따라 우연히 작동하지만 무시할 수도 있습니다.
Ansible "ALL - UNIQUE 사용자/호스트 조합 실행"을 말할 수있는 방법이 있습니까?
위의 코멘트 : 이것은 양식화 된 예입니다. 별명의 이름을 변경하고 u1과 t1 (및 u2와 t2)을 다른 별명으로 그룹화하는 것은 옵션이 아니며 "t"가없는 "u"만이 옵션이 아닙니다. 중요 사항은 다음과 같습니다. "모든"호스트에 대해 게임을 실행할 때 두 번 사용자/호스트에서 게임 플레이를 실행하지 않는지 확인하십시오. – domi756
"t"호스트가 "u"호스트와 같은 이름을 가져야하는 이유를 이해하지 못했습니다. 호스트 이름은 고유해야합니다. 그러나 일반적으로 서로 다른 환경에 서로 다른 인벤토리 파일을 사용하는 것이 좋습니다. 실수로 잘못된 호스트 집합을 사용하지 못하도록 방지하기위한 추가 예방 조치입니다. 이 원인은 문제를 해결하지 못하지만 다른 호스트 파일을 사용하면 각 인벤토리 파일을 별도로 여러 번 호출 할 수 있습니다. 그러면 고유하지 않은 호스트 이름 문제가 해결됩니다. – udondan
그러나 host_vars를 개별적으로 정의 할 수 없으며 사실 캐싱을 사용할 수 없기 때문에 동일한 이름을 가진 다른 호스트간에 충돌이 발생합니다. – udondan