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
おわりに
ファクト変数をみてみました。
たぶんもっといいつかいかたがあると思いますけれど思いつかぬ。
Ansible実践ガイド 第2版 (impress top gear)
- 作者: 北山晋吾,塚本正隆,畠中幸司
- 出版社/メーカー: インプレス
- 発売日: 2018/03/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る