Ansible 변수는 다양한 소스에서 나옵니다. 예를 들어 매니페스트 파일이 포함된 폴더의 하위 폴더 및 하위 폴더에 각각 YAML 파일을 생성하여 host_vars
host_vars 및 group_vars를 제공 할 수 있습니다.group_vars
어떻게 목록을 올릴 수 있어?모든 변수안시푸르회의플레이북에 나오는 그룹이나 호스트를 알고 있나요? 참고: 나는 이것을 시도했지만 성공 ansible -m debug -e 'var=hostvars' host
하지 못했습니다 ansible -m debug -e '- debug: var=hostvars'
.
팁: ansible <group|host> -m setup
예아니요정답은 이것이다아니요다른 소스의 모든 변수를 포함합니다(만 포함됩니다 . 실제로 { "ansible_facts" : { ... } }
동적 매니페스트 스크립트(등을 통해 ) _meta
에서 제공되는 변수 도 포함하지 않습니다.
앤서블 버전: 1.9.1.
답변1
ansible <host pattern> -m debug -a "var=hostvars[inventory_hostname]"
작동하는 것 같습니다. 유효한 것으로
바꾸십시오 .<host pattern>
호스트 모드.
유효한 변수 소스( 동적 목록의 host_vars
, group_vars
등)가 고려됩니다._meta
동적 인벤토리 스크립트를 사용하십시오 hosts.sh
.
#!/bin/sh
if test "$1" = "--host"; then
echo {}
else
cat <<EOF
{
"ungrouped": [ "x.example.com", "y.example.com" ],
"group1": [ "a.example.com" ],
"group2": [ "b.example.com" ],
"groups": {
"children": [ "group1", "group2" ],
"vars": { "ansible_ssh_user": "user" }
},
"_meta": {
"hostvars": {
"a.example.com": { "ansible_ssh_host": "10.0.0.1" },
"b.example.com": { "ansible_ssh_host": "10.0.0.2" }
}
}
}
EOF
fi
당신은 얻을 수 있습니다:
$ chmod +x hosts.sh
$ ansible -i hosts.sh a.example.com -m debug -a "var=hostvars[inventory_hostname]"
a.example.com | success >> {
"var": {
"hostvars": {
"ansible_ssh_host": "10.0.0.1",
"ansible_ssh_user": "user",
"group_names": [
"group1",
"groups"
],
"groups": {
"all": [
"x.example.com",
"y.example.com",
"a.example.com",
"b.example.com"
],
"group1": [
"a.example.com"
],
"group2": [
"b.example.com"
],
"groups": [
"a.example.com",
"b.example.com"
],
"ungrouped": [
"x.example.com",
"y.example.com"
]
},
"inventory_hostname": "a.example.com",
"inventory_hostname_short": "a"
}
}
}
답변2
위의 매우 좋은 답변에 작은 메모를 추가하면 프로그래밍 방식으로 탐색하려면 다음을 수행하십시오.
기존 답변 사용호스트 변수:
ansible -m debug myhost -a "var=hostvars[inventory_hostname].ansible_version"
하지만 가능한 사실debug
모듈이 실행되고 있지 않기 때문에 비어 있습니다 setup
. 따라서 jq
유효한 json으로 만들기 위해 출력을 다듬은 후 몇 가지 추가 작업을 시도해야 합니다.
ansible -m setup myhost | sed 's#.*SUCCESS =>##' | jq .ansible_facts.ansible_all_ipv4_addresses
나는 사람들이 Ansible 사실로 반환된 텍스트의 거대한 벽을 조사할 때 다음과 같이 한 가지만 원할 때 이것이 유용하다고 생각할 것이라고 생각합니다.jq .ansible_facts.ansible_devices.vda.size
답변3
참고로:이것이 github 프로젝트는 모든 호스트에 있는 변수의 90%를 나열하는 방법을 보여줍니다. 단일 호스트 명령보다 전역적으로 더 유용하다고 생각합니다. 추가 정보 파일에는 간단한 재고 보고서 작성에 대한 지침이 포함되어 있습니다. 모든 사실을 확인하려면 플레이북 끝부분에서 이 명령을 실행하는 것이 더 가치가 있습니다. 작업 동작을 디버깅하려면 레지스터를 사용하십시오.