Ansibleのファクト変数を見てみたいと思います。
そもそもファクト変数とは?
ターゲットノードのメタデータが格納されている変数のことです。
IPアドレスからCPUやディスクの情報などを見ることができます。
特に意識しなくてもデフォルトでansible-playbook
を実行したときにメタデータを取得してくれています。
実際に見てみる
以下のコマンドでファクト変数を取得することができます。
$ ansible -i ./ansible_hosts test_server -m setup
(ansible_hosts
はインベントリファイルで、test_server
はそのグループです)
実行結果
以下のようにいろいろな情報が取得できます。
本当にいろいろ取得できてめちゃめちゃ記事が長くなるので省略。
192.140.1.62 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"192.140.1.62"
],
"ansible_all_ipv6_addresses": [
"fe80::49c:a8ff:fe3f:24ae"
],
"ansible_apparmor": {
"status": "disabled"
},
"ansible_architecture": "x86_64",
"ansible_bios_date": "08/24/2006",
"ansible_bios_version": "4.2.amazon",
"ansible_cmdline": {
"BOOT_IMAGE": "/boot/vmlinuz-4.9.76-38.79.amzn2.x86_64",
"biosdevname": "0",
"console": "ttyS0,115200n8",
"net.ifnames": "0",
"nvme_core.io_timeout": "4294967295",
"ro": true,
"root": "UUID=a065cb27-9117-45b3-afc3-53eaff6cd0a1"
},
"ansible_date_time": {
"date": "2018-03-21",
"day": "21",
"epoch": "1521628532",
"hour": "10",
~~~~~~省略~~~~~~
活用法を考えてみる
活用法を考えてみます。
以下のようなplaybookをつくってCPUがx86の64bitだったときのみ⌘を実行するようにしてみる。
実行結果
x86_64だよ!!!
というメッセージが出力されていることがわかります。
$ ansible-playbook -i ansible_hosts fact_x86.yml
PLAY [localhost] ********************************************************************
TASK [Gathering Facts] ********************************************************************
ok: [localhost]
TASK [check architecture x86_64] ********************************************************************
ok: [localhost] => {
"msg": "x86_64だよ!!!"
}
PLAY RECAP ********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0
おわりに
ファクト変数をみてみました。
たぶんもっといいつかいかたがあると思いますけれど思いつかぬ。