天天看點

自動化運維管理平台-Puppet資源管理

當我們配置完畢puppet相關資訊時,我們需要更近一步來部署puppet真正應用,那puppet怎麼使用呢?希望幫助到初學的朋友,一起交流和學習,歡迎大家分享!

  1. Puppet常用資源:  
  2. 常用的資源主要有以下幾個:  
  3. file:主要負責管理檔案  
  4. package:軟體包的安裝管理   
  5. service:系統服務的管理     
  6. cron:配置自動任務計劃    
  7. exec:遠端執行運作指令  
  8. 更多資源詳細資料,可參見:http://puppet.wikidot.com  
  9. 寫一個預設配置:vi  /etc/puppet/manifests/site.pp  

一、File資源:

  1. file {  
  2.  "/tmp/test.txt":  
  3.  content => "hello";  
  4.   }  
  5. 意思是在/tmp建立一個test.text檔案,檔案内容為hello。  

二、Package資源:

  1. package {  
  2.  ["screen","ntp"]:  
  3.  ensure => "installed";  
  4.  "pppoe":  
  5.  ensure => "absent";  
  6.   }  
  7. 定義的意思是yum install screen 和ntp服務,并且解除安裝pppoe安裝包。  

三、Service資源:

  1. service {    
  2.  "sshd":    
  3.  ensure => running;    
  4.  "nfs":    
  5.  ensure => stopped;    
  6.   }    
  7. 意思是定義啟動sshd服務,停止nfs服務。 

四、 Cron資源:

  1. cron{  
  2.  "ntpdate":  
  3.   command => "/usr/sbin/ntpdate pool.ntp.org",  
  4.   user => root,  
  5.   hour => 0,  
  6.   minute => 0,  
  7.   }  
  8. 意思是在用戶端寫入一個計劃任務:0 0  * * *  /usr/sbin/ntpdate pool.ntp.org 自動同步時間!  

五、向用戶端推送本地腳本:

  1. 首先修改vi /etc/puppet/fileserver.conf 檔案,添加如下三行:  
  2. [files]  
  3. path  /etc/puppet/files  
  4. allow *  
  5. 然後cp所需要的腳本到 /etc/puppet/files目錄,沒有這個目錄則建立!  
  6. file {  
  7.    "/tmp/nginx_install.sh":  
  8.    source => "puppet://master.puppet.com/files/nginx_install.sh",  
  9.    group => root,  
  10.    owner => root,  
  11.    mode => "755"  
  12. }   
  13. 意思是把 /etc/puppet/files/nginx_install.sh這個腳本推送到用戶端的/tmp/下!  

六、Exec遠端執行腳本:

如第五步,我們把nginx_install.sh推送過去後,這時候我們就可以執行了如下:

  1. exec {  
  2.   "/tmp/nginx_install.sh":  
  3.   cwd => "/tmp",  
  4.   user => root,  
  5.   path => ["/usr/bin","/usr/sbin","/bin","/bin/sh"],  
  6.   }  

這樣的配置後,你可以在用戶端測試,測試結果已經自動安裝完nginx!如下結果

  1. [root@master tmp]# puppetd --server=master.puppet.com --test  
  2. info: Caching catalog for master.puppet.com  
  3. info: Applying configuration version '1337450399'  
  4. notice: /Stage[main]//Node[default]/Exec[/tmp/nginx_install.sh]/returns: executed successfully  
  5. notice: Finished catalog run in 49.96 seconds  
  6. 但是這裡有個地方需要注意,這每次同步都會執行這個腳本,是以我們要設定一個參數,如果nginx_install.sh有更新才執行:  
  7. exec {  
  8.   "/tmp/nginx_install.sh":  
  9.   cwd => "/tmp",  
  10.   user => root,  
  11.   path => ["/usr/bin","/usr/sbin","/bin","/bin/sh"],  
  12.   subscribe => File["/tmp/nginx_install.sh"],  
  13.   refreshonly => true;   
  14.   }  

七、執行指令:

  1. ###更新sysctl.conf  
  2.        file { "/etc/sysctl.conf":  
  3.    source =>     "puppet://master.puppet.com/files/sysctl.conf",  
  4.        owner => "root",  
  5.        group => "root",  
  6.        mode => 644,  
  7.         }  
  8. exec {  
  9.       "sysctl refresh kernel config":  
  10.        path => ["/usr/bin", "/usr/sbin", "/bin", "/sbin"],  
  11.        command  => "/sbin/sysctl -p",  
  12.        subscribe => File["/etc/sysctl.conf"],  
  13.        refreshonly => true  
  14.      }  

繼續閱讀