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