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