본질적으로 여기서 일어나는 일은 ansible을 실행하는 사용자 계정이 제어 노드와 대상 클라이언트 모두에 존재한다는 것입니다.
그러나 대상 클라이언트에서는 서버 복구 프로세스의 일부로 계정의 홈 디렉터리 위치를 /home/voltron/에서 /opt/home/voltron/으로 변경하는 단계 중 하나입니다(아니요, 불행히도 계정은 , 서버 생성 시 이 디렉터리를 사용하여 생성할 수 없습니다.
이를 수행하기 위해 ansible을 사용할 때의 문제점은 "대상 클라이언트(이 경우 서버 t-rex)의 ~/.ansible/tmp에 있는 작업 tmp 디렉토리에 대한 액세스가 손실된다"는 것입니다. 이로 인해 다음 오류 메시지와 함께 후속 재생 시 플레이북이 실패합니다.
fatal: [t-rex]: UNREACHABLE! => {"changed": false, "msg": "Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the remote directory. Consider changing the remote temp path in ansible.cfg to a path rooted in \"/tmp\". Failed command was: ( umask 77 && mkdir -p \"` echo /home/volton/.ansible/tmp/ansible-tmp-1507231978.66-123682989430617 `\" && echo ansible-tmp-1507231978.66-123682989430617=\"` echo /home/volton/.ansible/tmp/ansible-tmp-1507231978.66-123682989430617 `\" ), exited with result 1", "unreachable": true}
이제 내가 해야 할 일은 사실을 다시 수집하여 플레이북 실행 중에 대상 클라이언트의 작업 디렉터리 위치가 변경되었음을 ansible에 알려주는 것뿐입니다. 하지만 이는 도움이 되지 않는 것 같습니다. (적어도 나는 그러하다)
모듈이 Ansible 계정(voltron) 작업 임시 디렉터리 위치를 변경한 직후에 재생 중인 설정 모듈을 호출하려고 하는데 실행되는 것처럼 보이지만 다음 "import_playbook" 문을 읽으면 위의 오류가 발생합니다. 오류가 발생하면 모든 것이 폭발하여 상당히 긴 스크립트를 다시 실행해야 할 수도 있습니다. 분명히 다음 실행은 ansible이 작업 디렉토리가 변경되었음을 알고 있기 때문에 작동합니다.
작업 임시 디렉토리 위치가 변경될 때 Ansible에 알리는 방법을 아는 사람이 있습니까? 말해 보세요. 감사합니다!
답변1
왜 바꾸지 않니?임시 디렉토리안세보는 어떤 용도로 사용되나요? 예를 들어 ansible.cfg
다음과 같은 컬렉션 에서
remote_tmp = /var/tmp/notfiddledwithduringtheplay
그런 다음 부팅 프로세스의 일부로 생성해야 할 수도 있고 일부 공용 tmp
디렉터리를 사용할 위험이 있을 수도 있습니다.
local_tmp
로컬 시스템의 내용을 만지작거리는 경우에도 디렉토리가 있습니다.