실행 중에 사실을 수집하는 다른 많은 게시물과 질문에서 읽은 것처럼 ansible 플레이북은 시간이 좀 걸릴 수 있으며 여러 가지 이유로 중단될 수 있습니다.
제 경우에는 동작이 꽤 이상합니다.
서버를 설정하기 위한 ansible 플레이북이 있습니다. SSH를 통해 모든 것에 접근할 수 있으며 플레이북은 한 번에 하나의 호스트에서만 실행될 때 예상대로 실행됩니다(호스트에 관계 없음). 사실 수집은 매우 매력적이며 단 몇 초 만에 완료됩니다.
여러 호스트에 대해 플레이북을 실행할 때 문제가 발생하기 시작합니다. 호스트 파일에 설정을 위해 둘 이상의 호스트를 입력하자마자 사실을 수집하는 데 무한한 시간이 걸립니다.
누군가 이 문제를 경험했고 이 문제를 해결하는 방법에 대한 힌트를 줄 수 있습니까?
다음과 같이 플레이북을 시작할 때
ansible-playbook frontend_rollout.yml -i hosts -K -vvv
Ansible은 예상대로 sudo 비밀번호와 SSH 비밀번호 문구를 입력하도록 요구합니다. 각 서버에 대해 SSH 암호를 요청하면 프롬프트 출력이 아래와 같이 한 줄로 나타납니다.
Enter passphrase for key '/home/bouldrini/.ssh/ansible_ssh': Enter passphrase for key '/home/bouldrini/.ssh/ansible_ssh':
두 프롬프트 모두에 대해 비밀번호를 한 번만 입력할 수 있습니다. 이것이 예상되는 동작입니까? 내가 뭐 놓친 거 없니 ?
답변1
관심을 가져주시는 분들도 계실 것 같아서 지금은 질문을 삭제하지 않았습니다.
끝없는 사실 수집의 이유는 SSH 암호 문구 프롬프트의 설명된 동작 때문이었습니다.
정상적인 인간은 다음과 같은 행동을 기대합니다.
[Pre fact gathering phase]
- prompt for ssh passphrase for host 1
- input for host 1
- prompt ssh passphrase for host 2
- input for host 2
[fact gathering phase]
하지만 실제로는 어땠나요?
[Pre fact gathering phase]
- prompt ssh passphrase for host 1 AND host 2 in buggy output
- input for host 1
[fact gathering phase]
- host 1 fact gathering ok
- waiting for input for host 2 without any prompting
정말 혼란스러웠어요.
그런데 저는 Python3.7과 함께 Ubuntu 16.04에서 Ansible 2.8을 사용하고 있었습니다. 이 버그가 다른 소프트웨어 집합에서도 발생하는지 테스트하지는 않았지만 그럴 수도 있습니다!