日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.1 Ansible 动态获取主机清单

發(fā)布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.1 Ansible 动态获取主机清单 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

場景

在實際工作環(huán)境中,較大的企業(yè)通常有內(nèi)部的CMDB管理系統(tǒng),每個部門基本也都有開發(fā)自己的運管系統(tǒng)之類,比如最基礎(chǔ)的本部門有哪些機器,它們都是什么配置,基本都是通過運管系統(tǒng)管理。這套內(nèi)部系統(tǒng)可能已經(jīng)使用很長時間,內(nèi)部也形成了一定的規(guī)范,比如初始化機器會有腳本自動注冊機器基礎(chǔ)信息到系統(tǒng)中,也就是說相應(yīng)的運管系統(tǒng)才保存在一手完整的元數(shù)據(jù)信息,當(dāng)然這一類的運管系統(tǒng)通常都有API對外暴露供用戶使用,比如調(diào)curl某個地址,返回全部機器IP等

換句話說,我們使用Ansible管理的機器IP地址,可能來自于某個接口返回的信息里,或者說存放在某個數(shù)據(jù)庫里,此時我們當(dāng)然可以每次接口有數(shù)據(jù)更新,人工將更新的內(nèi)容拷貝到我們的主機清單里,這種方式缺點顯而易見,當(dāng)機器規(guī)模比較大,更新較為頻繁,手動維護兩者之間的同步,費時費力,難保不出錯

此時我們就想,能不能寫一個腳本,自動調(diào)用運管系統(tǒng)里的相關(guān)接口,獲取指定的IP列表呢,比如調(diào)A腳本功能是返回全部WEB機器列表,B腳本功能是返回全部數(shù)據(jù)庫機器列表,由于每次執(zhí)行playboook這些腳本都重新執(zhí)行一次,即每次都動態(tài)拿到IP列表,這樣只要接口不變,腳本只要寫一次即可長久使用,不用擔(dān)心兩邊IP列表不同步的問題

類似這種需求,就需要用到Ansible動態(tài)獲取主機清單的功能(dynamic inventory),與之對應(yīng)之前手動寫死機器列表的方法,稱之為靜態(tài)主機清單(static inventory)

實現(xiàn)方式

具體來說,我們需要準備一個可執(zhí)行文件,充當(dāng)主機清單用。所謂可執(zhí)行即擁有+x權(quán)限,該文件可以是腳本文件,如python、php腳本,也可以是二進制文件,比如go、c語言編譯后的二進制可執(zhí)行腳本,這個腳本準備好之后,使用方法類似如下

ansible-playbook test1.yaml -i ${my-inventory-script}

-i參數(shù)相信大家已經(jīng)熟悉了,之前我們用它是接靜態(tài)主機清單文件,該參數(shù)同樣可以接動態(tài)主機清單文件

那么這個腳本具體該有些什么內(nèi)容呢,簡單來說這個腳本返回的是主機清單里該有的信息,也就是:機器IP、機器分組、主機變量、組變量這些,比如下面的示例

return {'mygroup1': {'hosts': ['192.168.31.100', '192.168.31.101'],'vars': {'mytest_var1': 'hello1','mytest_var2': 'hello2','mytest_common': 'hello_common'}},'mygroup2': {'hosts': ['192.168.31.102'],'vars': {'mytest_var3': 'hello3','mytest_common': 'hello_common'}},'_meta': {'hostvars': {'192.168.31.100': {'host_specific_var': 'foo100'},'192.168.31.101': {'host_specific_var': 'bar101'}}} }

上面的返回信息是以python語言寫的,其它編程語言情況類似,如果把上面的返回信息轉(zhuǎn)成我們之前學(xué)過的主機清單樣式,類似下面這樣

# cat /etc/ansible/hosts [mygroup1] 192.168.31.100 host_specific_var=foo100 192.168.31.101 host_specific_var=bar101[mygroup2] 192.168.31.102[mygroup1:vars] mytest_var1=hello1 mytest_var2=hello2 mytest_common=hello_common[mygroup2:vars] mytest_var3=hello3 mytest_common=hello_common

整體來說,Ansible規(guī)定了一個動態(tài)獲取主機清單的腳本,需要支持兩個參數(shù)即,--list 和 --host HOST

./my-inventory-script --list 使用來返回主機清單信息的,如上面所示,返回的數(shù)據(jù)是JSON格式./my-inventory-script --host HOST 這里的HOST指的就是主機清單IP地址,正常是循環(huán)調(diào)用這個接口來得到主機變量的,不過一般我們用`--list`返回的信息使其帶有 _meta ,這個特殊信息用來表示主機變量,那么只需要讓這個接口返回"空",即可,返回的數(shù)據(jù)是JSON格式

python獲取動態(tài)主機清單實踐

我們以python語言為例,演示以下具體用法

腳本地址 https://gitee.com/as4k/ysansible/tree/master/dynamic-inventory

python代碼細節(jié),我就不多說了,如果需要大家可自行到網(wǎng)上百度學(xué)習(xí),我們直接執(zhí)行看下效果

# ls inventory.py README.md test1.yaml # ansible all -i inventory.py -m ping # ansible-playbook test1.yaml -i inventory.py

大家自己寫腳本測試,可以使用下面這個命令,進行快速測試

./inventory.py --list | python -c "import json,sys; obj=json.load(sys.stdin); print(json.dumps(obj, indent=4))" && echo

參考資料

https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html https://docs.ansible.com/ansible/latest/dev_guide/developing_inventory.html

總結(jié)

以上是生活随笔為你收集整理的7.1 Ansible 动态获取主机清单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一区,二区 | 欧美亚洲日本一区 | 茄子视频懂你更多在线观看 | 豆花视频在线播放 | 亚洲精品在线免费播放 | 日韩av片在线播放 | 色妞网站 | 久久av高潮av无av萌白 | 国产天堂一区 | 国产精品精品久久久 | 香蕉视频91| 91视频免费看 | 亚洲成人久 | 国产日韩第一页 | 91精品国产aⅴ一区二区 | 欧美日韩中文视频 | av的天堂| 中文字幕一区二区三区不卡 | 美国黄色一级大片 | 国产成人99久久亚洲综合精品 | 国产色综合视频 | 可以直接看的毛片 | 日本激情视频在线观看 | 台湾三级伦理片 | 香蕉视频一区二区三区 | 91好色先生 | 在线看av的网址 | 亚洲国产精品电影 | 国产又黄又爽视频 | 久草青青视频 | 成人在线视频播放 | 久久精品国产亚洲av蜜臀色欲 | 亚洲欧美日韩中文字幕在线观看 | www黄色片网站 | 亚洲综合欧美 | 国产视频一区在线观看 | 黄页网站在线播放 | 老司机深夜福利网站 | 免费观看成人鲁鲁鲁鲁鲁视频 | 久久97精品久久久久久久不卡 | 奇米影视网 | 国产伦精品一区二区三区免费迷 | 中文毛片无遮挡高潮免费 | 成人午夜影院在线观看 | 婷婷调教口舌奴ⅴk | 久草视频免费看 | 亚洲成a人片在线www | 亚洲福利视频在线 | 亚洲三级黄色 | 插插插操操操 | 黄久久久| 一本毛片| 白白色视频在线 | 久久精品视频16 | 在线视频国产一区 | 精品久久久久久久久久久久久久久久久 | 国内外免费激情视频 | 国产日本亚洲 | 久久国产影视 | 综合一区在线 | 在线免费看mv的网站入口 | 亚洲欧美一区二区三区在线观看 | 国产精品自拍在线 | 在线国产福利 | 黄色伊人网 | 黄视频免费在线看 | 久久久久国产精品夜夜夜夜夜 | 国产精品国产三级国产专区52 | 欧美男女激情 | 九色蝌蚪9l视频蝌蚪9l视频 | 国产在线精品一区二区 | 国产欧美在线一区 | 日本三级网站在线观看 | 在线观看免费视频a | 麻豆传媒网站在线观看 | 五月婷婷伊人网 | 日本一区二区三区精品视频 | 欧美一级淫片免费视频魅影视频 | 在线播放国产精品 | 亚洲精品女| 影音先锋国产资源 | 91婷婷射 | 欧美一级α片 | av资源免费观看 | 亚洲网站色 | 人人艹视频 | h无码动漫在线观看 | 日日操网 | 91aaaa| 欧美做爰全过程免费看 | 91视频美女| 久草a在线 | 亚洲午夜精品在线 | 成人av在线播放网站 | 色婷婷狠狠爱 | 爱情岛论坛成人av | 国产尤物视频在线观看 | 鲁在线视频| 国产精品极品白嫩在线 |