當前位置:
首頁 > 知識 > 10分鐘帶你光速入門運維工具之-Puppet

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。在執行前先進行代碼的驗證,再執行,完成最開始所定義好的狀態。代碼編譯過程如圖所示:



10分鐘帶你光速入門運維工具之-Puppet



如下所示為整個puppet自動部署過程中agent和master的詳細的交互過程:



10分鐘帶你光速入門運維工具之-Puppet


過程說明:


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


10分鐘帶你光速入門運維工具之-Puppet



實例二:此manifests代碼為安裝httpd包,為其提供配置文件,並且啟動服務



10分鐘帶你光速入門運維工具之-Puppet



實例三:每三分鐘同步下系統時間,寫入定時任務



10分鐘帶你光速入門運維工具之-Puppet



實例四:puppet之if條件判斷



10分鐘帶你光速入門運維工具之-Puppet


實例五:puppet之case語句



10分鐘帶你光速入門運維工具之-Puppet




10分鐘帶你光速入門運維工具之-Puppet



四、puppet類與繼承


puppet中命名的代碼模塊,經常需要被使用,如如重寫則代碼冗餘,使用定義一組通用目標的資源,可在puppet全局調用,就能解決這類問題,類可以被繼承,也可以包含子類。


類的語法格式有兩種,調用類的方法常用的有三種,可以在類中傳遞參數等靈活的操作,如以下實例:



10分鐘帶你光速入門運維工具之-Puppet



10分鐘帶你光速入門運維工具之-Puppet



類的繼承:子類可繼承父類的資源屬性,同時可定義父類不存在的額資源屬性,一個父類可同時被多個子類所繼承


五、puppet模板(此內容不過多解釋,需自行加強)


模板是一個按照約定的、預定的結構存放了多個文件或子目錄的目錄,目錄裡面的這些文件或子目錄必須遵循一定的格式的命名規範,puppet會在配置的路徑下查找所需的資源模塊。模塊的名稱通常是只能以小寫字母開頭,可以包含小寫字母,數字下劃線,但是不能使用main和settings。


模塊的組成部分:


manifests/:資源清單


init.pp:必須定義一個類,類名必須與模塊名相同;


files/:靜態文件

templates/:模板文件


lib/: 插件目錄,常用於存儲自定義的facts以及自定義類型


spec/:類似於tests目錄,存儲lib/目錄下插件的使用幫助和範例;


tests/:當前模塊的使用幫助或使用範例文件;


總結:


運維工具有很多例如:


Puppet,Ansible,slackstack等,puppet還是一個很好用的自動化運維工具,大大減輕的運維人員的重複操作,提高了工作效率,在運維過程中可根據業務需求選擇不同的運維工具,在伺服器數量不是很大的情形下可使用輕量級的ansible,在伺服器數量達到一定的規模時使用重量級的puppet相對來說效率更高。當面臨有得選擇的時候想起一句話:籮卜白菜各有所愛,適合自己專註、精通一個運維工具比全會那麼一點,解決問題更有優勢。


文章來源:馬哥教育


官方微信:馬哥linux運維

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

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


請您繼續閱讀更多來自 馬哥Linux 的精彩文章:

Linux的常用命令
MySQL主從複製架構及原理

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