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 19:00
下一篇 2016-04-12 22:51

相關推薦

  • Mysql cmake 編譯安裝、

    基于cmake的mysql安裝 1.1 前言 從mysql5.5起,mysql源碼安裝的編譯工具configure開始向cmake過渡。安裝方式和之前的略有不同。在這里簡單介紹總結下。 安裝之前,檢查下GNU make, GCC, Perl, libncurses5-dev,cmake-2.8.4是否都已經安裝,如果沒有安裝,用yum install 安裝補…

    Linux干貨 2017-08-29
  • yum命令的用法

    1.列出所有可更新的軟件清單命令:yum check-update 2.安裝所有更新軟件命令:yum update 3.僅安裝指定的軟件命令:yum install <package_name> 4.僅更新指定的軟件命令:yum update <package_name> 5.列出所有可安裝的軟件清單命令:yum list 用YUM安…

    Linux干貨 2017-08-11
  • 集群-基礎知識(1)

    背景 隨著互聯網訪問量的急劇增加,單臺服務器的能力已嚴重不能滿足需求。則需要從兩個方面考慮提高服務能力:1、向上擴展,2、向外擴展 向上擴展的缺點: 1、造價高 2、隨著性能的提高,會在某個臨界點遇到瓶頸,導致性能隨后降低。 向外擴展的優點: 1、造價低 2、提供高并發能力和高可用性 3、可擴展性好。 分類 負載均衡集群(Load Balance) 高可用集…

    Linux干貨 2015-11-26
  • N26-第七周作業-邢巖

    馬哥門徒-N26-邢巖      今天看了一本書《運維前線:一線運維專家的運維方法、技巧與實踐》,有一張運維全平臺規劃體系如下:      看完這張圖,瞬間覺得自動化運維真的是很龐大精深,我只是在運維這片海洋的岸邊,剛剛邁入一只腳步而已,究竟什么是山,什么是水,還不得而知。就讓我化身一條小魚,在這片…

    2017-03-11
  • ssh 筆記

    ssh

    Linux干貨 2018-01-08
  • Nginx lnmp環境及https的實現

    一、http事務簡明  request: <method> <URL> <VERSION> MHADERS <body> response: <version><status><reason phrase> <HEADERS> … <body&…

    2014-09-25
欧美性久久久久