generated at
inventory

Ansibleの実行対象であるインフラのリスト
INIYAMLで書くことができる
ansible-playbookでは -i オプションで指定する
ansibleコマンドだと引数なしで指定することがあってややこしいなkadoyau
と思ったけど、-iではinventoryのパスを指定しているだけで上の例はデフォルトってことかも
表記の注意
グループ名
- は利用できない
数字はじまりにできない
case sensitive
metagroup
groupやmetagroupをgroupingできる
変数
グループの要素に変数を追加することで、 ansible-playbook で引数指定を省略できる
ip, OS, sshユーザーなど
ini
[leafs] # グループ名 leaf01 ansible_host=10.16.10.11 ansible_network_os=vyos ansible_user=my_vyos_user # ホスト名(leaf01)と変数
グループ変数
グループに対して共通の変数を定義できる
ini
[leafs] leaf01 leaf02 [leafs:vars] # leafグループのhostには以下の変数をつける ansible_network_os=vyos ansible_user=my_vyos_user
大きくなってきた時のイメージ
ini
# meta group "datacenter"には複数のmetagroup # - network # - web # それぞれに別の変数を指定したい場合こうする # ホストのグループを定義 [network_leafs] leaf01 ansible_host=10.16.10.11 leaf02 ansible_host=10.16.10.12 [network_spines] spine01 ansible_host=10.16.10.13 spine02 ansible_host=10.16.10.14 # グループはvyos [network:children] network_leafs network_spines # vyosの共通変数を指定 [network:vars] ansible_connection=network_cli ansible_network_os=vyos ansible_user=my_vyos_user # webも定義 [web] webserver01 ansible_host=10.16.10.15 webserver02 ansible_host=10.16.10.16 [web:vars] ansible_user=my_web_user # vyosはnetworkというmetagroupに属している [datacenter:children] network web
ここまでくるとindentがあるyamlの方が可読性が高いかもしれない
深くなりすぎたらmetagroupを作る必要はある
iniとyamlはkeyでnestするかフラットに書くかが違う
仮にinventory#628c80b73f44250000be9fd6のようなprefixをつけ忘れてしまったらINIの可読性は一気に落ちる
大きくなったらどっちも読みにくいかなあ...
yml
leafs: hosts: leaf01: ansible_host: 10.16.10.11 leaf02: ansible_host: 10.16.10.12 spines: hosts: spine01: ansible_host: 10.16.10.13 spine02: ansible_host: 10.16.10.14 network: children: leafs: spines: vars: ansible_connection: network_cli ansible_network_os: vyos ansible_user: my_vyos_user web: hosts: webserver01: ansible_host: 10.16.10.15 webserver02: ansible_host: 10.16.10.16 vars: ansible_user: my_web_user datacenter: children: network: websrs:
パスワードの暗号化
ansible-vaultを使って暗号化できる
playbookやgroup_varsは両方YAMLで書かれているが、変数の構文は異なるので注意