最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過Python使用saltstack生成服務(wù)器資產(chǎn)清單

 更新時(shí)間:2016年03月01日 14:23:14   作者:youerning  
人工去對每一臺服務(wù)器的硬件信息并記錄早已經(jīng)過去了,無論通過腳本還是自動(dòng)化工具都是可以進(jìn)行一次編寫到處抓取的,本文主要使用saltstack作為使用工具,然后利用其提供的APi編寫所需的Python腳本

SaltStack是一個(gè)服務(wù)器基礎(chǔ)架構(gòu)集中化管理平臺,具備配置管理、遠(yuǎn)程執(zhí)行、監(jiān)控等功能,一般可以理解為簡化版的puppet和加強(qiáng)版的func。SaltStack基于Python語言實(shí)現(xiàn),結(jié)合輕量級消息隊(duì)列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構(gòu)建。

通過部署SaltStack環(huán)境,我們可以在成千上萬臺服務(wù)器上做到批量執(zhí)行命令,根據(jù)不同業(yè)務(wù)特性進(jìn)行配置集中化管理、分發(fā)文件、采集服務(wù)器數(shù)據(jù)、操作系統(tǒng)基礎(chǔ)及軟件包管理等,SaltStack是運(yùn)維人員提高工作效率、規(guī)范業(yè)務(wù)配置與操作的利器。

前言:人工去對每一臺服務(wù)器的硬件信息并記錄早已經(jīng)過去了,無論通過腳本還是自動(dòng)化工具都是可以進(jìn)行一次編寫到處抓取的,本文主要使用saltstack作為使用工具,然后利用其提供的APi編寫所需的Python腳本~~

需求如下:生成服務(wù)器主機(jī)名,IP地址,內(nèi)存,CPU核數(shù),操作系統(tǒng),數(shù)據(jù)盤配額,主要運(yùn)行服務(wù)

saltstack快速入門,可參考:Saltstack快速入門簡單匯總

這里主要用到saltstack的grains,就是saltstack minion端生成的一些靜態(tài)信息,比如CPU,內(nèi)存,主機(jī)名什么的,而這些就是我們所需要的

執(zhí)行salt \* grains.items,會(huì)打印一大堆的默認(rèn)抓取的信息,其中一部分,如下


我們當(dāng)然只挑我們需要的,操作如下

獲取主機(jī)名

salt H-T-4 grains.item host

獲取IP地址

salt zabbix grains.item ipv4

獲取CPU核數(shù)

salt \* grains.item num_cpus

以此類推,根據(jù)自己所需,提取~~~

值得注意的是,grains信息里面并沒有硬盤信息,所以還需通過disk.usage這個(gè)選項(xiàng),得到我們所需的硬盤信息

執(zhí)行salt zabbix disk.usage,得到結(jié)果如下

其中1K-blocks即我們所需的硬盤信息,根據(jù)需求只需要數(shù)據(jù)盤/data,所以后面就會(huì)計(jì)算這個(gè)盤的配額

最終腳本如下

#coding=utf-8
import salt.client as sc
import json
###salt調(diào)用
local = sc.LocalClient()
###目標(biāo)主機(jī)指定
tgt = "*"
###獲取grains,disk信息
grains = local.cmd(tgt,"grains.items")
diskusage = local.cmd(tgt,"disk.usage")
###主要應(yīng)用列表即文件開頭
app_name = ["tomcat","zookeeper","redis","mysql","nginx"]
cols = "主機(jī)名,IP地址,內(nèi)存(GB),CPU核數(shù),操作系統(tǒng),數(shù)據(jù)盤/data(GB),所屬項(xiàng)目,主要應(yīng)用"
###打開一個(gè).csv文件,以便寫入
ret_file = open("ret.csv","w")
###首先寫入開頭,有點(diǎn)字段名的意思
ret_file.write(cols + "\n")
try:
for i in grains.keys():
###打印信息可注釋掉
print grains[i]["nodename"]
print "ipv4" + ":" ,grains[i]["ipv4"]
print "mem_total" + ":" , grains[i]["mem_total"] / 1024 + 1
print "num_cpus" + ":" , grains[i]["num_cpus"]
print "osfullname" + ":" , grains[i]["osfullname"]
print "release" + ":" , grains[i]["lsb_distrib_release"]
###可能一些主機(jī)沒有/data數(shù)據(jù)盤1048576是1024x1024
if "/data" not in diskusage[i]:
print "diskusage" + ":" + "have no /data disk"
else:
data_vol = int(diskusage[i]["/data"]["1K-blocks"])
print "diskusage" + ":" , data_vol / 1048576 
###去掉127.0.0.1這個(gè)地址
ipv4 = str(grains[i]["ipv4"]).replace(", '127.0.0.1'","")
###因?yàn)橐恍v史遺留問題,這里取得不是主機(jī)名,而是salt-minion的id名,用以判斷主要應(yīng)用
hostname = grains[i]["id"]
ipv4 = str(grains[i]["ipv4"]).replace(", '127.0.0.1'","")
ipv4 = ipv4.replace(",","and")
mem = grains[i]["mem_total"] / 1024 + 1
num_cpu = grains[i]["num_cpus"]
OS = grains[i]["osfullname"] + grains[i]["lsb_distrib_release"]
if "/data" not in diskusage[i]:
disk_data = "None"
else:
disk_data = data_vol / 1048576
###項(xiàng)目名為空
project = ""
###通過minion ID名來判斷主要運(yùn)行服務(wù),比如xx-mysql-1,則運(yùn)行mysql
for j in app_name:
if j in hostname.lower():
app = j
break
else:
app = "undefined"
c = ","
###連接并寫入
line = hostname + c + ipv4 + c + str(mem) + c + str(num_cpu) + c + str(OS) + c + str(disk_data) + c + project + c + app
ret_file.write(line + "\n")
except Exception,e:
print "Exception:\n",e
finally:
ret_file.close()

用記事本打開應(yīng)該是這樣

以上內(nèi)容是小編給大家介紹的通過Python使用saltstack生成服務(wù)器資產(chǎn)清單的全部敘述,希望對大家有所幫助!

相關(guān)文章

  • selenium+python自動(dòng)化測試之鼠標(biāo)和鍵盤事件

    selenium+python自動(dòng)化測試之鼠標(biāo)和鍵盤事件

    這篇文章主要介紹了selenium+python自動(dòng)化測試之鼠標(biāo)和鍵盤事件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 詳解Python3.6的py文件打包生成exe

    詳解Python3.6的py文件打包生成exe

    這篇文章給大家分享了Python3.6的py文件打包生成exe的方法步驟以及相關(guān)知識點(diǎn),有需要的朋友可以參考學(xué)習(xí)下。
    2018-07-07
  • windows下pycharm安裝、創(chuàng)建文件、配置默認(rèn)模板

    windows下pycharm安裝、創(chuàng)建文件、配置默認(rèn)模板

    這篇文章主要為大家詳細(xì)介紹了windows下pycharm安裝、創(chuàng)建文件、配置默認(rèn)模板,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python生成單位陣或?qū)顷嚨娜N方式小結(jié)

    python生成單位陣或?qū)顷嚨娜N方式小結(jié)

    這篇文章主要介紹了python生成單位陣或?qū)顷嚨娜N方式小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python文件寫入write()的操作

    python文件寫入write()的操作

    這篇文章主要介紹了python文件寫入write()的操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python常用模塊os.path之文件及路徑操作方法

    Python常用模塊os.path之文件及路徑操作方法

    os.path 模塊主要用于獲取文件的屬性。這篇文章主要介紹了Python常用模塊os.path——文件及路徑操作,需要的朋友可以參考下
    2019-12-12
  • python實(shí)現(xiàn)大文件分割與合并

    python實(shí)現(xiàn)大文件分割與合并

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)大文件分割與合并,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Numpy中對向量、矩陣的使用詳解

    Numpy中對向量、矩陣的使用詳解

    這篇文章主要介紹了Numpy中對向量、矩陣的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python實(shí)現(xiàn)Smtplib發(fā)送帶有各種附件的郵件實(shí)例

    Python實(shí)現(xiàn)Smtplib發(fā)送帶有各種附件的郵件實(shí)例

    本篇文章主要介紹了Python實(shí)現(xiàn)Smtplib發(fā)送帶有各種附件的郵件實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Python爬蟲教程之利用正則表達(dá)式匹配網(wǎng)頁內(nèi)容

    Python爬蟲教程之利用正則表達(dá)式匹配網(wǎng)頁內(nèi)容

    這篇文章主要給大家介紹了關(guān)于Python爬蟲教程之利用正則表達(dá)式匹配網(wǎng)頁內(nèi)容的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

柘荣县| 正安县| 罗甸县| 五指山市| 措美县| 通化县| 通州市| 鹿邑县| 汉川市| 慈溪市| 宁陵县| 遂宁市| 梁山县| 江源县| 甘肃省| 临沧市| 宁城县| 北川| 鸡泽县| 永宁县| 邵阳县| 朝阳县| 丰原市| 沈丘县| 金秀| 白玉县| 民县| 北票市| 遵义市| 金湖县| 云浮市| 大化| 武平县| 荥经县| 偏关县| 济源市| 绵竹市| 贵德县| 大兴区| 台山市| 华宁县|