Inventory - Overview
Inventory 就是主機清單,Ansible 要連到哪些主機做操作,就是依據這個檔案。
Inventory 可以使用很多種格式,每種格式的處理都依靠 Plugin,這可以在 ansible.cfg 裡去啟用跟關閉。
例如要啟用 host_list、script、auto、yaml、ini、toml ,就可以這麼寫:
[inventory]
enable_plugins = host_list, script, auto, yaml, ini, toml
下面簡單介紹一下 host_list, yaml, ini 這三種格式,後續再針對每種格式做更詳盡的介紹。
host_list
host_list 即是主機列表,以下面這個例子來說,就是 -i 後面所列出來的主機。
ansible-playbook -i 192.168.11.1,192.168.11.2, playbook.yml
ini
ini 格式的主機清單,這是最常見的一種,官方文件裡的舉例很常使用到。
例如:
[lb_servers]
servera.lab.example.com
[web_servers]
serverb.lab.example.com
serverc.lab.example.com
[backend_server_pool]
server[b:f].lab.example.com
lb_servers, web_servers, backend_server_pool 就是 section,表示群組,每個 section 裡再去列出主機。
YAML
YAML 格式的主機清單,這種格式會比較要求縮排。
以上面 ini 的例子,轉換為 YAML 以後,就會是
lb_servers:
hosts:
servera.lab.example.com:
web_servers:
hosts:
serverb.lab.example.com:
serverc.lab.example.com:
backend_server_pool:
hosts:
server[b:f].lab.example.com:
每個群組裡,會定義 hosts ,用來列出主機。
格式間的轉換
格式間的轉換可以利用 Ansible 提供的工具:ansible-inventory ,來做轉換。
例如:
ansible-inventory --yaml -i origin_inventory --list \
--output destination_inventory.yml