小技巧 - Inventory 格式的轉換
Inventory 就是主機清單,裏面描述主機的連線資訊,一般文件常用的是 ini 格式。
但在 DO447 的第二章有提到 inventory 格式的轉換,我自己是比較熟悉 ini 格式的 inventory,所以對於要轉換為 YAML 格式的地方就覺得比較卡頓。
那該怎麼克服呢?我臨機一動,想到 ansible 有提供 ansible-inventory 指令,用這個就可以解決我的問題。
假定已經有個 ini 格式的 inventory 檔案,內容如下
# inventory
[ubuntu20]
u3 ansible_host=127.0.0.1 ansible_port=2201 ansible_user='ubuntu'
u1 ansible_host=127.0.0.1 ansible_port=2222 ansible_user='vagrant'
[ubuntu18]
u4 ansible_host=127.0.0.1 ansible_port=2202 ansible_user='vagrant'
[ubuntu16]
u2 ansible_host=127.0.0.1 ansible_port=2200 ansible_user='vagrant'
接著就可以用下面指令來轉換
ansible-inventory -i inventory --list --yaml > inventory.yml
轉換結果如下
all:
children:
ungrouped:
hosts:
u1:
ansible_host: 127.0.0.1
ansible_port: 2222
ansible_user: vagrant
u2:
ansible_host: 127.0.0.1
ansible_port: 2200
ansible_user: vagrant
u3:
ansible_host: 127.0.0.1
ansible_port: 2201
ansible_user: ubuntu
u4:
ansible_host: 127.0.0.1
ansible_port: 2202
ansible_user: vagrant
透過這個指令就可以很快的轉換格式,也可以幫助自己去記憶跟學習 YAML 格式的 inventory 了。