puppet

一、puppet簡介
     puppet是一個爲實現數據中心自動化管理而設計的配置管理軟件,可以管理IT基礎設施的整個生命週期:供應(provisioning)配置 (configuration)、聯動(orchestration)及報告(reporting)。puppet基於C/S架構,相似於zabbiz, 有master與agent節點之分。它是一個開源的(談不上真正的開源,由於有商業版與社區版之分)、新一代的、集中化的配置管理工具,由ruby語言 研發,它擁有本身的配置語言(PCL,puppet configuration language)。
    puppet可以把IT平常的系統管理代碼化,而代碼可重用,這樣能夠減小運維人員的工做量,並且能快速、大規模部署服務器。在puppet的世界有其自 己的哲學思想:在IT系統管理中,puppet只關注結果,不關心過程!這名話怎樣理解,好比puppet的master端向各agent下達把 nginx這個包安裝上並啓動服務,puppet的agent端面只向master端報告軟件是否安裝完成,服務是否已啓動,puppet不關心軟件是怎 樣安裝上的,服務是怎樣啓動的,它只關心結果。
二、puppet工做原理
2.一、puppet兩種工做方式介紹   
    puppet有兩種工做方式,一種是獨立工做方式(standalon),另外一種是master-agent的方式 。以兩張圖片來講明這兩種工做方式。

(圖一:puppet以standalone方式工做流程示意圖,圖片來自網絡)
圖片中各術語解釋:
manifest:字面意思是清單,在這裏指被puppet代碼化的各類資源,是一種用PCL編寫的代碼;
catalog:表示把各類manifest編譯後生成的可執行代碼,也叫僞代碼;
apply:生成catalog後puppet就能夠把代碼進行運用,在運用時也要先對僞代碼進行檢測,檢測後才執行。
html


(圖二:puppet的master-agent工做流程圖,圖片來自網絡)
簡述:
a)、agent向主機請求catalog代碼,在請求時要帶上本身的主機名與facts,facts裏包含了agent服務器自身的一些系統特徵,好比操做系統是什麼,是哪一個版本,cpu是什麼型號,內存有多大等信息;
b)、master接收到agent的請求後開始查詢此節點包含的清單,把這些資源找出後編譯成catalog,再發送給agent;
c)、agent收到catalog後就開始應用代碼,並把執行的狀態結果生成報告返還給master;
d)、master接收報告並記錄日誌。
證書存放在/var/lib/puppet/ssl/。
在master/agent首次啓用的過程:
a)、master啓動時會爲本身生成key,並簽署證書,讓本身成爲一個ca;
b)、agent首次啓動要爲本身生成key,生成證書籤署請求,並將證書請求發送給master請求籤署;
c)、master收到agent的證書籤署請求後,由管理員先驗證請求是否合法,然後對證書籤署請求做出簽署或不簽署。node

三、puppet安裝及認證mysql

     http://blog.csdn.net/junjunjiao/article/details/50844816nginx

     systemctl start puppetserver/service puppetserver start  開啓puppet server服務     sql

      netstat -nltp | grep 8140 查看puppet server端口是否正常開啓ruby

      puppet status  查看puppet狀態服務器

      puppet agent -t  #同步puppet server一次網絡

      puppet agent/service puppet start     #開啓agent進程,週期性同步server,默認爲30分鐘一次架構

      puppet cert list     #來查看來查看全部待處理的請求app

      puppet cert sign <agent名稱>     #來簽發Puppet agents的證書

四、puppet語法

      http://blog.csdn.net/euguosir/article/details/51883616

      http://blog.csdn.net/euguosir/article/details/51884559

      https://www.iyunv.com/thread-77455-1-1.html (站點清單的使用,site.pp的存放位置,在每一個puppet版本是不同的,3.x存放路徑/etc/puppet/manifests/,4.x存放路徑/etc/puppetlabs/code/environment/production/manifests/)

node 'nod2.test.com' {
        include nginx
        include mysql
}

node 'nod2.test.com' {
        user{'test123':

               ensure => present,#確保用戶存在,不存在則建立

        }
}

 注意:puppet agent -t,若是想生效,必須在站點清單中定義該節點的node信息,好比該節點爲nod2.test.com,如上所示,加載nginx、mysql模塊。

相關文章
相關標籤/搜索