當前位置:
首頁 > 知識 > Ansible Dynamic Inventory 介紹

Ansible Dynamic Inventory 介紹

Ansible Inventory實際上是包含靜態Inventory和動態Inventory兩部分,靜態Inventory指的是在文件/etc/ansible/hosts中指定的主機和組,Dynamic Inventory指通過外部腳本獲取主機列表,並按照ansible 所要求的格式返回給ansilbe命令的。這部分一般會結合CMDB資管系統、zabbix 監控系統、crobble安裝系統、雲計算平台等獲取主機信息。由於主機資源一般會動態的進行增減,而這些系統一般會智能更新。我們可以通過這些工具提供的API 或者接入庫查詢等方式返回主機列表。

一、最簡單示例

由於Ansible在接受腳本動態獲取主機信息時支持的是json格式,這裡我也不從其他系統中取了,向通過一段代碼列印一個段json格式的主機信息:

註:

1、主機部分必須是列表格式的;

2、hostdata行,其中的"hosts" 部分可以省略,但如果使用時,必須是"hosts" ,不能是其他如『『hostlist』』 等字元串。

省略後可以這樣寫:

直接執行該段代碼結果如下:

上面定義了兩個主機組,test1組內包含主機10.212.52.252、10.212.52.14,test2組內包含主機10.212.52.16 。ansible可以通過如下方法調用:

二、複雜示例

在靜態主機配置文件示例中,會有組變數(vars),組之間的包含,如下圖:

如果以上部分想要,通過腳本獲取實現,實現後返回的json格式應該如下圖:

像上面這種複雜的返回格式,一般不會用在ad-hoc環境中,多數會用在ansible-playbook 中,應為playbook文件中有時假會涉及到vars 參數的傳參。

三、從第三方平台獲取主機示例

這個在本篇一開頭就提到了,我們從如cobbler、cmdb等平台上獲取的示例。由於ansible 的發起者(作者)同時又是cobbler軟體的創建者,所以官方文檔給了我們cobbler的示例,同時給出了一個從AWS 去上獲取主機信息的示例 。如下:

cobbler 上獲取主機信息代碼

aws 雲上獲取主機信息代碼

關於如何從aws上獲取主機信息併入庫,這個我之前也寫過相關的篇章,具體也可以參看我之前的博文----AWS主機資產管理 (該篇也是純python實現的)。

通過zabbix api 獲取主機信息,我也寫過一篇zabbix小結(八)Zabbix api ,想要通過zabbix平台上獲取主機列表信息也可以參考下。

四、其他

1、ansible -i 參數後調用的腳本並非一定是py文件,也可以是其他腳本輸出的結果,這裡做了個簡單的測試:

2、-i 參數指定的腳本需要有可執行許可權 ,不然會報錯,如下:

?


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux資訊速推 的精彩文章:

人工智慧給腦癌帶來新福音

TAG:Linux資訊速推 |