Ansible使用動態inventory

2021-08-19 07:25:41 字數 1321 閱讀 7295

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...