나중에 처리하기 위해 원격 파일(결국 원격 팩트 파일)에 인벤토리 호스트 이름을 쓰려고 합니다. 아래 호스트에는 물리적 호스트 이름이 있지만 calvin.mydomain
컨트롤러는 인벤토리 호스트 이름(다른 DNS)을 사용하여 호스트에 연결하므로 원격(AFAIK)의 관점에서만 정보를 수집하는 사실 변수를 calvin.test.mydomain
사용할 수 없습니다 .-m setup
환경 변수를 원격으로 내보낸 다음 파일에 쓰면 이 작업을 수행할 수 있다고 생각했지만 문자 그대로의 단어만 생성됩니다.인벤토리_호스트 이름.
원격에서 파일에 hostvars[inventory_hostname]
쓰거나 {{inventory_hostname}}
파일에 어떻게 쓸 수 있나요 ?/etc/ansible/facts.d/
sudo ansible-playbook ./playbooks/hostname.yml -k -u root -i calvin.test.mydomain,
TASK [echo the LAN_HOSTNAME environment var] *******...
changed: [calvin.my.testing.dom]
이건 내 플레이북이야
---
- hosts: all
tasks:
- name: "echo the LAN hostname into a file on the remote"
shell: "echo $LAN_HOSTNAME > /tmp/hostname.ans"
environment:
LAN_HOSTNAME: inventory_hostname
답변1
copy
이것을 사용하는 데 필요합니다( @Michael Hampton이 제안한 대로 변경됨 ).
---
- hosts: all
tasks:
- name: "Create custom fact directory"
file:
path: "/etc/ansible/facts.d"
state: "directory"
- name: "Insert custom fact file"
copy:
content: "#!/bin/bash\necho {\\\"ansible_LAN_hostname\\\" : \\\"{{ inventory_hostname }}\\\"}"
dest: /etc/ansible/facts.d/lan_hostname.fact
owner: root
group: sysadmin
mode: 0775