ansible不僅可以通過預設的hosts檔案獲取主機清單,也可以通過外部指令碼檔案動態管理和獲取主機資訊。存放主機資訊的外部指令碼檔案可以使用python、php等語言進行編寫,其執行結果返回的必須為json串,ansible會對json格式的字串進行解析,並最終將其轉化為ansible可用的inventory檔案格式。所以,所謂的動態inventory檔案指令碼開發,其實就是編寫指令碼根據具體環境將主機資訊及關係(這些資料可用通過抓取資料庫,呼叫外部api或者直接讀取檔案獲得)以json格式表示出來,並將其作為指令碼輸出結果傳給ansible。此處給出形式為如下hosts主機清單的python指令碼(其中192.168.13.5是連線不到的):
[group1]
127.0.0.1
[group2]
192.168.13.128
192.168.13.5
[group2:vars]
ansible_ssh_port=5555
ansible_connection=ssh
# hostlist.py
#!/usr/bin/python
#coding = utf-8
import json
group1 = 'group1'
group2 = 'group2'
hosts1 = ['127.0.0.1']
hosts2 = ['192.168.13.128', '192.168.13.5']
vars =
hostdata = , group2:}
print(json.dumps(hostdata, indent=4))
執行指令碼:
[root@localhost /home/***/***_test/ansible_test]# python hostlist.py
, "group2":
}}
使用ansible進行測試:
[root@localhost /home/***/***_test/ansible_test]# ansible -i hostlist.py group1 -m ping
127.0.0.1 | success =>
[root@localhost /home/***/***_test/ansible_test]# ansible -i hostlist.py group2 -m ping
192.168.13.5 | unreachable! =>
192.168.13.128 | success =>
Ansible使用動態inventory例項講解
ansible不僅可以通過預設的hosts檔案獲取主機清單,也可以通過外部指令碼檔案動態管理和獲取主機資訊。存放主機資訊的外部指令碼檔案可以使用python php等語言進行編寫,其執行結果返回的必須為json串,ansible會對json格式的字串進行解析,並最終將其轉化為ansible可用的in...
為何使用Ansible
b size large it 自動化 size b 現在市面上用一些實現it自動化的工具,例如 puppet,chef,salt。ansible 是乙個相對比較新的工具,但目前社群十分活躍。我用過puppet和ansible。這裡想討論一下我偏愛ansible的原因。b size large 架構...
ansible使用文件
假設a機器上安裝ansible yum install ansible vim etc ansible hosts 對每個主機加key認證 ssh copy id i ssh id rsa.pub root b ip ansible all m ping 乙個playbook檔案可以引入其他的yml...