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%を一覧表示する方法を示しています。単一のホストコマンドよりもグローバルに役立つと思います。追加情報ファイルには、簡単な在庫レポートを作成する手順が含まれています。すべての事実を確認するには、プレイブックの最後でこのコマンドを実行する方が価値があります。ジョブの動作をデバッグするには、レジスタを使用します。