글로벌 인벤토리와 함께 -m을 사용할 때 Ansible은 상대 변수 파일을 확인합니까?

글로벌 인벤토리와 함께 -m을 사용할 때 Ansible은 상대 변수 파일을 확인합니까?

파일을 만들었는데,

./group_vars/all

간단한 줄이 있어요

---
ansible_user: centos

내 재고 파일 /etc/ansible/inventory에는

[centos]
10.1.38.15

그런데 막상 사용해 보니 ansible -m ping일반 사용자와 연결을 시도하고 있는 것을 발견했습니다.

~/cp/ansible$ ansible -vvv centos -m ping
.... stuff
    "msg": "Failed to connect to the host via ssh: [email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).",
    "unreachable": true

ecarroll@연결 대신 연결을 시도하는 것을 볼 수 있습니다 centos@. 글로벌 인벤토리를 사용하면 Ansible이 -m작동합니까?./group_vars/

답변1

~에 따르면문서화(필자의 강조):

플레이북 디렉터리 group_vars/에 디렉터리를 추가할 수도 있습니다 . host_vars/ansible-playbook명령은 기본적으로 현재 작업 디렉터리에서 이러한 디렉터리를 찾습니다. 기타 Ansible 명령(예: ansibleansible-console)인벤토리 디렉토리에서만 검색 group_vars/하고 존재합니다.host_vars/다른 명령으로 플레이북 디렉터리에서 그룹 및 호스트 변수를 로드하려면 --playbook-dir명령줄에서 이 옵션을 제공해야 합니다. 플레이북 디렉터리와 인벤토리 디렉터리 모두에서 인벤토리 파일을 로드하는 경우 플레이북 디렉터리의 변수가 인벤토리 디렉터리에 설정된 변수보다 우선 적용됩니다.

따라서 이러한 변수를 명령 자체에 제공해야 합니다.

ansible -m setup 10.1.38.15 -e ansible_user=centos

또는,

ansible -u centos -m setup 10.1.38.15

관련 정보