puppet進階管理之終極應用

     上一篇博客寫了puppet操作file、cron、user、group、exec基礎資源的使用,連接地址為 http://www.www58058.com/13990 

這次實驗puppet的操作Package、Server和puppet的特殊資源屬性Metaparameters。

回顧下Package、Server資源屬性:  

    package的常用屬性:
    ensure:present安裝, installed安裝, absent不能安裝, latest,VERSION(2.3.1-2.el7)–目標狀態
    name: 程序包名稱:
    source:包文件的路徑,可以是本地文件系統路徑,也可以網絡文件路徑;
    puppet:///modules/MODULE_NAME/FILENAME

    provider:指明程序包提供者默認為yum;

 

   service的常用屬性:
    ensure:
    true, running
    false, stopped
   enable: true|false 是否開機自動啟動
   name:服務名稱
   hasrestart:是否支持restart參數
   hastatus:是否支持status參數
   path: 服務腳本路徑
   pattern:用于搜索此服務相關的進程的模式,當腳步不支持restart/status時,用于確定服務是否處于運行狀態;

 

一、puppet使用package安裝glances監控工具:

            

    1、編輯site.pp:

          site-glances.jpg

        本地測試site.pp

        glances-apply.jpg

      2、agent連接master:

            agent-glance.png

            agent運行glances監控命令:

            glance1.jpg

 

二、puppet特殊資源屬性:Metaparameters

        
    puppet提供了before、require、notify、subscribe四個元參數來定義資源間的相關性,這四個元參數都有另外的其他資源或資源組作為其值,這也稱     作資源引用,資源引用要通過“Type [title]”的方式進行,如User['test'],首字母必須大寫。
    依賴關系:
        before => Type['title'] 被依賴的資源中使用
        require => Type['title']依賴其他資源的資源
        鏈式依賴:->
    通知關系
        notify =>  通知被依賴的資源中使用
        subscribe => 訂閱監聽其他資源的資源
        鏈式通知:~>

1、創建linux組,gid=3000。linux組的gid依賴用戶centos的gid。

            user-group.jpg

           agent-user.jpg

            同理,如果使用require。在user段中加入require => Group['linux']即可。

三、puppet使用server屬性安裝nginx服務:

        nginx.png

        nginx-apply.jpg

        

四、puppet使用class、modules功能:

     類:命名的puppet代碼塊,需要時可通過名稱進行調用,用于公共目的一組資源,是命名的代碼塊,創建后可用在puppet全局調用,類可以被繼承

             備注:類的名字只能以小寫字母開頭,類在聲明后方可執行。

     類的的聲明:                 
         類聲明方式1:聲明一個類
               include class1, class2, …
                       class {'classname': }

         定義帶參數的類:
                   class class_name ($arg1=value1, $arg2=value2) {
                    …puppet code…
                                           }

         類聲明方式2,傳遞參數:
               class {'class_name':
                    para1 =>  new_value1,
                    para2  =>  new_value2,
                           }

1、使用class創建webserver類:

          class-nginx.jpg

            本地測試:

         class-nginx1.jpg

 

puppet模板:基于ERB模板語音,在靜態文件中使用變量等編程元素生成適用于多種不用的環境的文本(配置文件):Embedded RUBY
                      用于實現在文本中嵌入ruby代碼,原來的文本信息不會改變,但ruby代碼會被執行,執行結果將直接替換原來代碼:

         puppet模塊:為了實現某種完備功能而組織成的一個獨立的、自我包含的目錄結構

              目錄結構:/etc/puppet/modules
               module_name:  manifests: –資源清單
               init.pp: 至少應該包含一個與當前模塊名稱同名類;      
               MODULE_NAME::[SUBDIR_NAME]::MANIFESTS_FILE_NAME
               files:靜態文件
               puppet url    puppet:///modules/MODULE_NAME/[SUBDIR_NAME]/FILE_NAM
               templates: 模板文件目錄    模板文件:*.erb
               template('MODULE_NAME/TEMPLATE_FILE_NAME');

               lib: 插件目錄  tests: 模塊使用幫助文檔    spec: 類似于tests目錄,存儲lib目錄下定義的插件的使用幫組和示例文件:

 

1、手工創建nginx模塊并新建nginx、nginx_webserver、nginx_proxy類:

    module-nginx1.jpg

    [root@master modules]# cp /etc/puppet/manifests/site.pp /etc/puppet/modules/nginx/manifests/init.pp

    [root@master modules]# cp /opt/moudules/nginx/nginx_proxy.conf /etc/puppet/modules/nginx/files/nginx.conf

        module-nginx2.jpg

     編輯/etc/puppet/manifests/site.pp調用模板中的類:(在生成環境中根據不同節點調用不同的模板和類)

        module-site.jpg

    在agent.puppet.com上應用模板中的類nginx_proxy:

        moudule-agent1.jpg

        注意:生成環境中先在本地測試跑在運行

                    puppet agent –server=master.puppet.com –no-daemonize –verbose –noop

2、puppet多環境配置:

        在實際工作中服務器配置可能會有開發環境、測試環境、生成環境。puppet可以定義不同的環境配置讓其agent連接。

        master:  vim /etc/puppet/puppet.conf  在master端中添加支持

                     [master]
                     environmnet=production,testing,development — 聲明master支持環境
                      [production]
                              manifest = /etc/puppet/envionments/production/manifests/
                              modulepath = /etc/puppet/envionments/production/modules/
                              fileserverconfig = /etc/puppet/filesserver.conf
  
                      [testing]
                              manifest = /etc/puppet/envionments/testing/manifests/
                              modulepath = /etc/puppet/envionments/testing/modules/
                              fileserverconfig = /etc/puppet/filesserver.conf

                      [development]
                              manifest = /etc/puppet/envionments/development/manifests/
                              modulepath = /etc/puppet/envionments/developmentmodules/
                              fileserverconfig = /etc/puppet/filesserver.conf

agent:
      [agent] –聲明agent處于哪個環境 
          enviroment = testing

五、puppet拓展思路:

隨著公司應用需求的增加,需要不斷的擴展,服務器數量也隨之增加,當服務器數量不斷增加,我們會發現一臺puppetmaster響應很慢,壓力大,解析緩慢,有什么優化的方案嗎?可以使用Puppetmaster配置多端口,結合Nginx web代理,這樣puppetmaster承受能力至少可以提升10倍以上。

要使用puppet多端口配置,需要指定mongrel類型,默認沒有安裝。如果配置多主集群的話,可以共享master1的證書,然后另外一臺master通過NFS掛載證書即可。

                    

 

 

 

   感謝馬哥,每天進步一點點!         

原創文章,作者:n18-jude,如若轉載,請注明出處:http://www.www58058.com/14611

(0)
n18-juden18-jude
上一篇 2016-04-12
下一篇 2016-04-12

相關推薦

  • Linux用戶和組管理整理

    本節介紹Linux用戶和組相關的配置文件,用戶賬號管理、查詢用戶信息以及切換用戶的相關命令,將會讓我們更了解各配置文件中各個字段的含義,以及各相關命令的使用方法,方便Linux運維人員管理Linux系統中的用戶和組。 背景: Linux是個多用戶、多任務的系統,考慮到每個人的隱私權、每個人喜好的工作環境以及每個用戶所使用的權限等方面的不同,所以設定了“用戶”…

    Linux干貨 2015-06-15
  • 第二周部分練習

    (1)用戶管理: 1.創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,注釋信息為”Gentoo Distribution” 使用id命令查看用戶信息 使用cat命令查看配置文件/etc/passwd 2.創建下面的用戶、組和組成員關系 名字為admins的組 用戶natasha,使用admins作為附…

    2017-07-23
  • raid 5 軟件實現

    raid 5        RAID 5是一種存儲性能、數據安全和存儲成本兼顧的存儲解決方案。 RAID 5可以理解為是RAID 0和RAID 1的折中方案。RAID 5可以為系統提供數據安全保障,但保障程度要比Mirror低而磁盤空間利用率要比Mirror高。RAID 5具有和RAID 0相近似的…

    2017-05-02
  • 系統基礎之權限管理

    權限管理: 概論:  上節,為大家介紹了用戶,和組的知識.今天為大家介紹與用戶,組息息相關的知識,權限.linux是多用戶,多任務的操作系統,面對多人的操作,安全問題就很重要,權限機制就很好的對安全進行防護,避免他人操作自己的文件.下面給大家詳細介紹權限.   首先讓我們先直觀地看下權限,對權限有個最基本的認識.以/etc/issue文件…

    Linux干貨 2016-08-04
  • 計算機的組成和Linux發展史

    計算機的組成及功能   計算機是由CPU,內存,輸入裝置和輸出裝置四大部件組成計算機,每一部件分別按要求執行特定的基本功能。  CPU: 控制器和運算器合稱中央處理器,也就是CPU,它的功能主要是解釋計算機指令以及處理計算機軟件中的數據。  內存: 它是與CPU進行溝通的橋梁。計算機中所有程序的運行都是在內存中進行的,內存(Me…

    Linux干貨 2016-10-30
欧美性久久久久