今回はインベントリの定義の動作を確認していきます。
内容としては以下になります。
・グループ化
・グループのネスト
・グループ変数
インベントリファイルは、デフォルトの/etc/ansible/hostsを使っていきます。
まずインベントリファイルにグループ名を付けた形で定義します。
[test]
node1 ansible_host=192.168.157.137
[test]がグループ名にあたります。node1はターゲットノードになります。
これをアドホックコマンドで使用してみます。
グループ名testを指定してみます。
[root@ansible-ctl ~]# ansible test -m ping
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@ansible-ctl ~]#
成功しました。次はnode1を指定してみます。
[root@ansible-ctl ~]# ansible node1 -m ping
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@ansible-ctl ~]#
こちらも同じく成功しました。インベントリで指定したグループ名を使用してansibleを実行できました。
次はグループのネストです。
インベントリに先ほど作成した[test]グループの上位グループを作成します。
[web:children]
test
[test]
node1 ansible_host=192.168.157.137
グループ[test]の上位グループ[web]を定義しました。アドホックコマンドで指定できるか見ていきます。
[root@ansible-ctl ~]# ansible web -m ping
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@ansible-ctl ~]#
成功しました。グループのネストはターゲットノードを分類分けする際に便利な機能として使えそうです。
次はグループ変数を見ていきます。インベントリに変数を定義していきます。
[test]
node1 ansible_host=192.168.157.137
[test:vars]
var_test="This is test message."
アドホックコマンドでこの変数を使えるのか見ていきます。
echoコマンドで変数の中身を表示できるのか試してみます。
[root@ansible-ctl ~]# ansible test -a "echo {{ var_test }}"
node1 | CHANGED | rc=0 >>
This is test message.
[root@ansible-ctl ~]#
成功しました。インベントリに指定したvar_testの内容が表示されています。
では、定義されていない変数名を指定した場合どうなるかも見てみます。
[root@ansible-ctl ~]# ansible test -a "echo {{ var_te }}"
node1 | FAILED | rc=-1 >>
The task includes an option with an undefined variable. The error was: 'var_te' is undefined
[root@ansible-ctl ~]#
変数が未定義だとしてエラーになりました。
変数の利用方法がわかりました。変数として状態を定義してansibleを実行することができそうです。
コメント