10分鐘帶你光速入門運維工具之-Puppet
一、簡介
當伺服器數量達到一定的規模時,僅依靠人為完成批量部署伺服器個資源的配置,運維工作將變得繁瑣且容易出錯,為了解決這一問題,我們應該怎麼辦呢?我們可以引入一批工具,這批工具可編寫相應的manifests代碼,運行它便可以自動完成所有的工作,目前比較流行的運維工具主要有:puppet,ansible, slackstack等,在這我們主要以puppet來展開話題。在一些大型互聯網企業中,運維自動化管理著幾百甚至上千台伺服器,它可以針對多台伺服器進行統一操作,例如部署統一軟體、進行統一上線維護等,而且能夠快速完成上線部署,減少人力及人力誤操作風險。
二、Puppet的工作原理
puppet的目的是讓系統管理員只集中於要管理的目標伺服器,而忽略實現的細節。puppet既可以在單機上使用,也可以C/S結構使用,在大規模部署puppet的情況下,通常我們會使用C/S結構,在這種結構下,服務端運行puppet-master程序客戶端運行puppet-client服務程序
具體的工作流程圖如下所示:
對於puppet的的掌握,理解puppet的工作原理是一個必要的的階段,只有在了解了puppet的工作原理後才能更好應用puppet,下面讓我們一起了解學習
puppet的工作原理:
說到puppet的工作原理,不得不從以下四個方面來說到,如下所示:
(1)定義:使用Puppet特定的語言定義基礎配置信息。通常我們把這些信息寫在Modules中。
(2)模板:在配置執行之前檢測代碼,但並不真正執行。
(3)執行:定義的配置自動部署。檢測並記錄下所發生變化的部分。
(4)報告:將期待的變化、實際發生的變化及任何修改發送給報告系統。
如下所示為puppet的工作數據流示意圖
數據流說明:
1.首先所有的節點(Node)Node節點將Facts和本機信息發送給Master
2.Master告訴Node節點應該如何配置,將這些信息寫入Catalog後傳給Node。
3.Node節點在本機進行代碼解析驗證並執行,將結果反饋給Master。
4.Master通過API將數據發給分析工具。報告完全可以通過開放API或與其他系統集成。
整個數據流的走向是基於SSL安全協議的,如下圖所示:
模板文件處理過程說明如下:
Puppet通過編譯Manifest中的內容 (即模板中內容),將編譯好的代碼存入Catalog。在執行前先進行代碼的驗證,再執行,完成最開始所定義好的狀態。代碼編譯過程如圖所示:
如下所示為整個puppet自動部署過程中agent和master的詳細的交互過程:
過程說明:
1. Puppet客戶端Agent將節點名與facts信息發送給Master。
2. Puppet服務端Master通過分類判斷請求的客戶端是誰,它將要做什麼。這個判斷是通過site.pp中包含的Node.pp配置文件定義的。
3. Puppet服務端Master將所需要的Class類信息進行編譯後存入Catalog並發送給Puppet客戶端Agent,到此完成第一次交互。
4. Puppet客戶端Agent對Catalog進行代碼驗證(語法檢查及錯誤檢查)並執行。主要是代碼的驗證,並將執行過程的信息及結果寫入日誌。
5. Puppet客戶端Agent最終達到最開始所定義的狀態,並且將結果及任何執行數據通過開放API的形式發送給Puppet服務端Master。
以上就是puppet的工作原理需要注意是:因為整個過程中都是基於ssl實現的,所以首要的是保證agent和master間可以基於ssl通訊!
三、puppet常用資源及配置實例
實例一: 創建centos用戶為普通用戶,且uid為4000,gid為3000,所屬組為centos,附加組為mygrp
實例二:此manifests代碼為安裝httpd包,為其提供配置文件,並且啟動服務
實例三:每三分鐘同步下系統時間,寫入定時任務
實例四:puppet之if條件判斷
實例五:puppet之case語句
四、puppet類與繼承
puppet中命名的代碼模塊,經常需要被使用,如如重寫則代碼冗餘,使用定義一組通用目標的資源,可在puppet全局調用,就能解決這類問題,類可以被繼承,也可以包含子類。
類的語法格式有兩種,調用類的方法常用的有三種,可以在類中傳遞參數等靈活的操作,如以下實例:
類的繼承:子類可繼承父類的資源屬性,同時可定義父類不存在的額資源屬性,一個父類可同時被多個子類所繼承
五、puppet模板(此內容不過多解釋,需自行加強)
模板是一個按照約定的、預定的結構存放了多個文件或子目錄的目錄,目錄裡面的這些文件或子目錄必須遵循一定的格式的命名規範,puppet會在配置的路徑下查找所需的資源模塊。模塊的名稱通常是只能以小寫字母開頭,可以包含小寫字母,數字下劃線,但是不能使用main和settings。
模塊的組成部分:
manifests/:資源清單
init.pp:必須定義一個類,類名必須與模塊名相同;
files/:靜態文件
templates/:模板文件
lib/: 插件目錄,常用於存儲自定義的facts以及自定義類型
spec/:類似於tests目錄,存儲lib/目錄下插件的使用幫助和範例;
tests/:當前模塊的使用幫助或使用範例文件;
總結:
運維工具有很多例如:
Puppet,Ansible,slackstack等,puppet還是一個很好用的自動化運維工具,大大減輕的運維人員的重複操作,提高了工作效率,在運維過程中可根據業務需求選擇不同的運維工具,在伺服器數量不是很大的情形下可使用輕量級的ansible,在伺服器數量達到一定的規模時使用重量級的puppet相對來說效率更高。當面臨有得選擇的時候想起一句話:籮卜白菜各有所愛,適合自己專註、精通一個運維工具比全會那麼一點,解決問題更有優勢。
文章來源:馬哥教育
官方微信:馬哥linux運維
TAG:馬哥Linux |
※微軟發布Win10 Template Studio 2.0工具
※Chips 2.0:基於python語言的高級FPGA設計工具
※Google 文件管理工具 Files Go 更名,月活達 3000 萬
※最快的密碼破解工具 Hashcat v4.0 下載
※iStat Menus 6.00 超強大的Mac系統監視工具
※2018年最棒的8款Twitter分析工具
※iOS 10.x 越獄工具釋出!不支持iPhone 7/7 Plus
※Snapchat下架P2P支付工具Snapcash
※移動端Xbox APP 5月更新推送 配合全新Win10 Xbox工具欄
※兜里有鉗—SOG Power Access Deluxe PA2001-CP多功能工具鉗測評
※Python擴大領先優勢,PyTorch僅佔6.4%:2018年數據科學語言&工具排名
※工具 | jieba分詞快速入門
※Electra 越獄工具箱 支持全系iOS11 64位設備 更新b9版本
※re:Invent 2018:AWS Marketplace新增大量應用容器和IoT工具
※Python領先優勢,PyTorch僅佔6.4%:2018年數據科學語言&工具排名
※Adobe Photoshop將於2019年登陸蘋果iPad:將提供桌面版全套工具
※Caffeinated 6.828:實驗工具指南
※iOS滲透測試工具Part 1:App Decryption以及class-dump
※這 11款watchOS 小工具,讓你的 Apple Watch 更實用
※我的新生產力工具——2017款MacBookPro 15.4