巧用Salt,實現CMDB配置自動發現

2021-01-16 IT168

  優雲(uyun.cn)是廣通軟體旗下的新一代敏捷運維品牌,從高效、智能、迭代、協同等角度重新審視運維、在數據中心、網際網路、物聯網三個領域為用戶提供敏捷運維工具和服務,幫助用戶贏得數位化業務成功。本文作者龐輝富,任職優雲軟體資深架構師,10多年IT運維管理軟體的研發經驗,致力於自動化運維解決方案的研究和推廣

  前言:

  本文描述了使用SaltStack來實現自動化的CMDB配置發現方法。

  隨著網際網路+新形勢的發展,越來越多的企業步入雙態(穩敏雙態)IT時代,信息化環境越來越複雜,既有IOE三層架構,也有VCE、Openstack等雲虛擬化架構和網際網路化的分布式大數據架構。所以,企業急需建立一套合適的配置管理庫(CMDB),像人類「大腦」一樣統一存儲從基礎架構到業務應用各層面的配置信息,以便協調「身體」(運維系統)各部分完成複雜的運維工作。

  CMDB如此重要,但又是運維中最難建設好的部分,就連很多IT運維界大佬都感嘆CMDB是運維人的最痛點,他們總結CMDB建設有3大難點,而保證配置數據的準確性更是難中之難。當前業界主要靠流程控制、人工維護和自動發現解決數據鮮活、準確的問題。流程控制和人工維護都脫不了人的參與,既然我們是人、不是「神」,就意味著會「偷懶」、會出錯。在這個信息爆炸的大數據時代,再依靠人肉運維,我們已經傷不起。所以,要想數據準確,關鍵還是要靠自動發現。

  今天,筆者就來談一種配置信息的自動發現方案,望能解放運維人的雙手和大腦,這樣我們可以幹一些更有意義的事,比如喝喝咖啡、陪陪家人。

  一、採集工具的選型

  要實現配置自動發現,需要有一個好用的基礎採集工具(功若善其事、必先利其器嘛)。有些大佬可能會說:容易,自己寫一個唄。但現在是網際網路分享時代,前輩們已經踩過很多坑,並貢獻出自己的心血,我們就不必要再重複造輪子了,大可以「拿來主義」,找一個最適合自己的開源工具來用。

  談到開源的自動化配置管理工具,就不得不說Puppet、Chef、Ansible和SaltStack這四駕馬車。網際網路上對這四款工具有很多詳細的介紹和對比,這裡不再詳談,主要說說我們選型的理由和結論。

  首先,這四款工具的實現技術分兩大派別:Ruby(Puppet、Chef)和Python(Ansible、SaltStack)。很多前輩都說過,要真正應用好一項開源技術,你必須要真正掌控它。所以技術類型的選擇是至關重要的,Python號稱是運維人的語言,其簡潔統一、運行高效的特性更適合運維人使用。另外最重要的是Python有很多完善強大的OS、網絡編程方面的第三方庫,這些是Ruby無法比擬的。所以,從技術實現角度講,Ansible和SaltStack這兩個工具更適合我們運維人玩。

  第二,Ansible和SaltStack兩者最大的差別是代理技術的採用,當然SaltStack也可以通過salt-ssh命令實現類似Ansible的無代理執行能力,只是SaltStack的設計理念是通過執行代理(Minion)來實現高效和可擴展的配置管理體系。

  總結下來,有代理和無代理對比優勢主要有:

  1) 無需保存帳戶密碼等敏感信息,避免信息洩露,也便於管理員定期更換密碼;

  2) 可採集更豐富的配置信息和關聯關係,比如可通過配置文件分析獲取深層次配置信息;

  3) 可快速感知配置變化,無代理模式只能定時輪詢,增加了網絡流量的消耗;

  4) 可以實現快速的文件傳輸,比如可方便實現配置文件的收集。

  通過以上分析對比,我們選擇SaltStack作為配置自動採集的基礎工具。

  二、採集框架的搭建

  SaltStack是一款強大的、集中化的配置自動化管理工具,它可以通過grains、pillar實現上千臺伺服器的配置自動收集和管理(關於SaltStack我就不普及了,大家自行問問谷哥或者度娘吧)。不過現在它只提供了比較好的命令行工具,當然官方也提供了一個名叫halite的簡單WEB UI,只是這個WEB界面長得實在是挫了點,功能也有限,對不起SaltStack這個配置自動化管理「神器」的稱號啊!

  所以,我們的目標是利用SaltStack的框架和擴展能力來實現配置自動化採集,採集到數據後可以輸送到配置管理庫或者集中管理。整個採集框架邏輯設計如下圖所示:

  SaltStack從部署上包含Master和Minion兩大部分。一個網絡域內只需要部署一個Master實現集中發現調度和管理,Minion安裝在各個被管主機上負責接收和執行腳本,並將採集結果反饋給Master。因為本文不是重點介紹SaltSatck,所以其安裝部署就不介紹了,大家還是可以去問問無所不知的谷哥和度娘。

  三、自動發現的實現

  框架確定了,那麼我們接下來的主要任務就是編寫一個自動發現調度腳本(框架圖中的「自動發現Discovery」),定時從Master收集數據並進行集中處理。

  腳本用什麼寫?當然就選運維人專用語言Python了,其可與SaltStack天然集成,腳本的主要邏輯就是定時通過grains模塊從Master獲取配置信息併集中存儲或推送給其他需要的系統。在命令行下,我們可以用:

  salt '*' grains.items

  或

  salt '*' grains.item {key1} {key2} …

  獲取所有配置信息或者指定關鍵字名稱的配置信息,比如下圖獲取Tomcat_8080配置信息:

  各位親可能會覺得奇怪,常規的grains.item {Key} 命令獲取到的數據只有1項,但這裡得到一個多屬性的複雜對象。這是因為實際環境中在一個主機上會安裝多個服務,也就是存在多個配置項,所以我們採用Python的字典類型(dict)來存儲每個配置項的屬性信息,這樣只要通過一個Key就能獲取到配置項的所有信息。

  註:如何進行配置信息的發現採集,如何讓grains按字典格式存儲配置項的採集結果會在第五節「信息採集的擴展」裡細說。

  我們也可以通過:salt '*' grains.ls 獲取有哪些Key:

  既然我們用了強大的Python,在實際開發時就沒必要再通過Shell去調用SaltStack的命令行了,直接用salt.client模塊調用就可以獲得一個字典類型(dict)的返回結果,Python字典類型可直接輸出成JSON格式字符串,在對這個JSON串進行解析處理即可。

  代碼示意如下:

  四、配置採集的擴展

  有了配置自動採集框架後,我們需要的便是不斷的添磚加瓦,也就是根據管理需求和配置模型不斷擴展豐富SaltStack的grains採集腳本,並將腳本文件放在Salt Master的grains目錄下(默認為/srv/salt/_grains),然後通過「salt '*' saltutil.sync_grains 」命令將腳本文件同步到所有Minion主機端就行。

  我們以Tomcat服務的配置發現為例,收集安裝路徑、WEB服務埠、Tomcat版本信息、最大線程數等信息,腳本大致如下:

  ▲

  通過自定義採集腳本,某個Tomcat實例的配置信息發現如下:

  是不是感覺如點讀機一樣so easy!其他更多配置信息的獲取就留個各位親去大展手腳了。當然,SaltStack的應用並不只是實現配置發現這麼簡單,大家可以深入挖掘,發揮其最大的潛力,實現雙態IT下的自動化運維!

相關焦點

  • 「預警信息」關於SaltStack多個高危漏洞的預警通報
    01漏洞情況SaltStack是基於Python開發和C/S架構的開源自動化運維工具,具備遠程任務執行、配置管理和監控等功能。認證繞過漏洞(CVE-2020-25592):源於未實現恰當的訪問控制校驗,攻擊者可通過構造惡意請求訪問salt-api相關接口。
  • salt是鹽,earth是地球,那be the salt of the earth是什麼意思
    我們知道salt有「鹽」的意思,earth有「地球」的意思,那be the salt of the earth是什麼意思?be the salt of the earth的意思是「someone is a very good and honest person」,即「是誠實善良的人,高尚的人」。
  • 流行語:The salt of the earth
    >   關於「鹽」的短語,稍一拾掇就能羅列一大串,如:說「你加深我的痛苦」最常用You've rubbed salt in my wounds(你在我傷口上撒了把鹽),「邀請貴賓坐上席」可以說Please sit above the salt(請上座)…… 今天談的the salt of the earth(精英)源於《聖經》。
  • take with a grain of salt「對……持有懷疑」的運用
    Idiom of the Daytake with a grain of salt | take with a pinch of salt對……持有懷疑Meaning:You have doubts about the truth or
  • 詞源探究:salary一詞竟然來源於salt
    In ancient times, because salt wasn't always easy to come by (and because it was a leading way to improve flavor even back then), Roman soldiers were given a sum of money – a salarium – with which
  • 捷普科技(上海)研發中心的藍牙自動配對技術及其實現
    2.1 自動選擇設備在一般的MDS中,手機端通常使用BLE廣播過程來發現附近的其他所有BLE設備,並且需要用戶選擇需要連接的設備。自動配對將通過BLE廣播過程或輔助方法獲取設備的MAC地址和名稱,然後如果可能,根據設計規則檢查名稱以自動確定設備是否有效。
  • 自動氣象站的如何實現網絡監控與自動報警
    針對這個問題,環境監測部門在結合了氣象站應用的實際需要,並依據氣象環境觀測業務規範要求,設計出了一套環境監測雲平臺,來實現網絡監控與自動報警。現在市面上的自動氣象站,是能夠提供分鐘數據和小時數據的實時型自動站。同時也有不提供實時數據的和兩者兼具的類型。
  • 說說那些沒用的汽車配置,車主:我想把自動啟停拆了
    現在的車的種類可以說多種多樣,我們買車的時候也變得重視細節了,車的配置是非常重要的一點,我覺得在整體銷量上肯定會更好,但是,並不是所有的配置都令人滿意,一部分的配置甚至有雞肉的排骨,這次,介紹一下浪費汽車的配置,車主:我想停止自動駕駛。
  • 自動點擊器下載_自動點擊器手機版下載_自動點擊器安卓版免費下載...
    自動點擊器幫你自動點擊屏幕,無需ROOT權限。這個是個系統bug,Accessibility Service有些時候會不能正常工作,一般情況下殺掉應用重啟,重新賦權就好了,還有很多時候必須要重啟手機才能使用……暫時解不了,大概要等google解了吧T.T自動點擊器通過浮動控制面板以啟動/結束自動點擊。您可以使用控制面板在屏幕上添加點擊位置實現自動點擊。
  • above the salt 這句經常用!可不是"在鹽上面"
    2、above the salt千萬不要理解為「在食鹽上面」,實際意思是「在上席、坐上席」。這一短語源於舊時宴禮,在當時上席是離席上鹽瓶最近的席位,所以逐漸地用來表示「在上席、坐上席」之意。Steven was taken up above the salt at the reception。Steven在招待會上被邀請坐上席。3、above oneself這個短語可不能理解為「超越了自我」,它其實含貶義,是「自命不凡」、「目中無人」的意思。
  • 基於GPS結合電子羅盤實現天線自動跟蹤系統的設計
    基於GPS結合電子羅盤實現天線自動跟蹤系統的設計 劉新良,馮奎勝,田 發表於 2020-04-30 09:27:32 1、引 言 具有跟蹤能力的中等增益圓極化天線是中繼通信衛星和衛星移動通信這兩種通信系統的關鍵部件之一
  • 河北省棗強縣新屯鄉蔡屯村黨支部書記蔡保忠:巧用網絡善治村
    原標題:蔡保忠:巧用網絡善治村 「蔡支書,這幾天連陰雨,胡同裡的水排不出去,你得管管啊。」「世剛,你說的這事好多家也反映了,有的胡同正在整修排水口,很快就能修到你們那裡……」這是河北省棗強縣新屯鄉蔡屯村黨支部書記蔡保忠在蔡屯村兩委會博客上與村民互動的實錄。該博客是蔡保忠一手創建的與村民溝通的網絡平臺。
  • 投資自動售貨機需要多少費用
    為了使自動售貨機業務運轉流通,它需要一些相關的工作和費用。接下來,我將從四個方面分析投資自動售貨機的主要成本,以便您可以更好地進行預算和評估。1.自動售貨機場地費用就像我們開一家小商店一樣,自動售貨機也需要放置它們的位置。但是與傳統商店相比,自動售貨機的位置更加靈活且成本更低。
  • 三江源地區實現鄉鎮級自動氣象站全覆蓋
    青海新聞網·大美青海客戶端訊 近日,隨著玉樹藏族自治州囊謙縣東壩鄉六要素自動氣象站正式落成,標誌著我省三江源地區實現了鄉鎮級自動氣象站全覆蓋。東壩鄉地處青藏高原腹地,雪災、大風等自然災害頻發,是三江源地區唯一還未建設自動氣象站的鄉鎮,也是三江源地區實現鄉鎮自動氣象站全覆蓋的最後一站。東壩鄉區域自動氣象站的建成解決了該地區氣象要素監測空白的問題,增加了氣象站網監測密度,為各類業務的開展提供了科學準確的數據支撐,同時對該地區氣象災害防禦及生態文明建設工作起到積極作用。
  • JAVA實現對稱加密
    3與實現DES方式基本一致,算法名稱要改為DESede,密鑰長度為168,轉換密鑰時使用DESedeKeySpec類。new String(result));四、對稱加密算法-PBEPBE本質上是對DES/3DES/AES對稱加密算法的包裝,不是新的算法,不過也是最為牛逼的一種方式鹽:指加密的隨機字符串或者口令等,也可以認為是一些擾碼,防止密碼的暴力破解//初始化鹽SecureRandom random = new SecureRandom();byte[] salt
  • 買輛什麼車能實現L3級別自動駕駛?
    繼上次第一、二批基於高精地圖實現自動駕駛功能的城市開放後,目前第三批基於高精地圖實現的無人駕駛功能城市也正式開放了,您看有您的城市嗎?第三批基於高精地圖實現ADiGO 3.0自動駕駛系統的城市正式開放啦!
  • 濟南市工傷輔助器具配置實現聯網結算
    齊魯晚報·齊魯壹點記者 韓曉婉 通訊員 王卓 楊雲 馬玉超 實習生 曹心怡6日,齊魯晚報·齊魯壹點記者從濟南市社會保險事業中心獲悉,濟南市工傷保險輔助器具配置核准和費用結算,已實現與定點配置機構聯網結算,首批共有5家定點機構納入聯網結算範圍。
  • 利用任務計劃程序實現電腦自動定時關機
    優點:不用藉助第三方系統必備工具      缺點:對於電腦新手來講步驟繁瑣      怎麼設置讓我的電腦能定時自動關機?其實在微軟在Vista及以後發布的系統中,已經內置了強大的計劃任務功能,在不藉助其他工具的情況下,你可以簡單幾步設置,實現讓自己的電腦自動定時關機。
  • MIUI7無線WiFi經常自動斷開怎麼辦
    MIUI7系統無線WiFi網絡頻繁自動斷開連接怎麼解決呢?升級到最新版本的MIUI7系統後,發現無線Wifi網絡頻繁自動斷開,具體表明為連接一會無線WiFi後自動斷開,等待一會又自動連接,針對此類情況,我們可以通過以下方法來解決。
  • 傳奇技能第五祭:簡單假人系統的配置與解析
    傳奇技能-第五技本篇目錄:一、自動假人系統的運行控制二、假人的登錄控制與配置三、假人打怪控制四、在Qfunction-0.txt,中給假人配置裝備玩單機是不是感覺很無聊,本篇內容可以讓你用假人系統,營造出人氣爆棚的氛圍