集中管理利器-puppet快速入門-下

<51cto文檔上傳功能較弱,讀者可留言索取puppet word文檔,tks>

在掌握《集中管理利器-puppet快速入門-上》的基本功學習後,我們可以進行接下來的學習

Puppet配置

文件管理 file

文件服務器寫法:

/etc/puppet/ fileserver.conf 定義

223319735.png

223320531.png

223320677.png

223320564.png

223320456.png

223320996.png

223324957.png

http://docs.puppetlabs.com/references/latest/type.html#user
http://docs.puppetlabs.com/references/latest/type.html#group



用戶管理



223324501.png


http://docs.puppetlabs.com/references/latest/type.html#file


命令執行

實例:

###命令執行

/etc/puppet/manifests/site.pp 配置

file  {"/tmp/mysql_test/mysql_test.tgz":    ##將pmaster  /tmp/files/mysql_test.tgz文件下發到agent  /tmp/mysql_test/目錄下

    source =>  "puppet://pmaster.example.com/files/mysql_test.tgz",  


}

exec { "unzip tgz packget":

    command => "tar -xvf  /tmp/mysql_test/mysql_test.tgz",    ###所有命令必須爲全路徑或者path參數指定命令搜索路徑

    path => "/usr/bin:/usr/sbin:/bin:/sbin",

    cwd => "/tmp/mysql_test"   ##命令執行的路徑爲: /tmp/mysql_test/

    creates => "/etc/my.cnf"   #當/etc/my.cnf不存在的時候,纔會執行該命令

    tries => 2,  #重試次數

    try_sleep => 3, #重試間隔 s爲單位

}



223324737.png



常用命令詮釋:

1. command
指定要執行的命令。如果忽略,這個參數的值默認爲資源的標題。必須填寫命令的完整路徑或者提供這個命令的查找路徑。假如命令執行成功,執行過程的輸出將會記錄到普通(normal)日誌中,但是如果命令執行失敗,任何的輸出都會記錄到錯誤日誌中

2. creates
命令創建的一個文件。加入這個參數設置的話,只有這個文件不存在的時候命令纔會執行,例子:

3. cwd
命令執行的路徑。假如目錄不存在,命令執行將會失敗。

4. environment
爲命令設置附加的環境變量。加入你用這個參數設置PATH,那麼將會把path參數的值覆蓋。多個環境變量需要使用數組指定。

5. group
執行命令運行的用戶組。這個看起來在各個平臺運行結果不確定,這是平臺的問題不是ruby或者puppet的問題。

6. logoutput
是否記錄輸出信息。默認會根據exec資源的日誌等級來記錄輸出信息,使用on_failure只有當命令執行出錯的時候纔會記錄輸出信息。值可以爲true、fales、on_failure和任何合法的日誌等級。

7. onlyif
只有onlyif指定命令執行返回爲0的時候,命令纔會執行

8. path
命令執行搜索的路徑。如果沒有指定path,命令需要填寫完整的路徑。路徑可以指定爲一個數組並通過冒號分隔。

9.timeout
指定命令運行的最長時間。假如命令執行的時間查過timeout設定的時間,那麼就會認爲命令執行失敗了並且會停止該命令。設置爲0表示沒有執行時間限制。時間以秒爲單位。

10.tries
命令執行重試次數,默認爲1。設置這個參數命令將會重試你設置的次數直到合理的代碼返回。

11.try_sleep
設置命令重試的間隔時間,單位是秒。

12.user
指定執行命令的用戶。
備註:加入你使用這個參數,任何錯誤輸出不會在當下撲捉。這是源自ruby內部的一個bug

更多請參見:

http://docs.puppetlabs.com/references/latest/type.html#exec




Cron管理


實例:

cron { "sh /tmp/a.sh":

    command => "/bin/sh /tmp/a.sh",

    user=> root,

    minute  => '*/3'

    #ensure  =>  "absent";   ##cron刪除

}



命令用法

puppet –genconfig#查看當前配

service  puppetmasterd start   #啓動puppetmaster

service puppet  start     ##啓動客戶端

客戶端的運行報告在服務器端:/var/lib/puppet/reports/
每次運行會生產一個報告,報告文件名爲:/var/lib/puppet/reports/hy18.uniqlick.com/201108020948.yaml

Agent  /etc/hosts中添加主機信息

puppetmasterd genconfig > puppet.conf

puppet master --verbose --no-daemon

agent   連接server

puppet agent --server=pmaster --no-daemonize --verbose

使用waitforcert 參數改變agent等待時間

puppetmasterd --configprint modulepath   ##打印默認路徑

連接並對agent進行驗證,我們需要對agent發送到master的證書進

puppet cert list  ##顯示等待簽名的服務器

puppet cert --sign node1.example.com   ##簽名

puppert cert sign all #對所有等待的證書進行簽名






服務器控制客戶端立即運行


Puppet kick 官網不造成使用,只檢查客戶端返回狀態,不檢查命令執行結果,新版本會棄用

Agent配置:


puppet.conf


[agent]

listen = true


auth.conf 紅色部分爲新增

path /run

auth any

method save

allow pmaster.example.com

# this one is not stricly necessary, but ithas the merit

# to show the default policy which is denyeverything else

path /

auth any


demo方式啓動agent

service puppet restart    ###啓動成功不代表成功了,netstat確認端口被監聽,puppet這塊功能有待完善…

224157297.png



Master遠程確認8139端口可通


223328509.png


Client確認文件是否被重新生成

class類的嘗試

配置文件作如下變更:

223328184.png


Mysql單獨起一個模塊配置

[root@pmaster puppet]# tree manifests/

manifests/

|-- init.pp

|-- nodes

|    `-- nodes.pp

|-- site.pp

|-- site.pp_normal

`-- site.ppaa


1 directory, 5 files

[root@pmaster puppet]# pwd

/etc/puppet

[root@pmaster puppet]# tree modules/

modules/

|-- mysql

|    |-- manifests

|    |   |-- config.pp

|    |   |-- init.pp

|    |   |-- init.ppa

|    |   |-- install.pp

|    |   `-- service.pp

|    `-- template

|        `-- my.cnf.erb

`-- test

    `-- manifests

        `-- init.pp


5 directories, 7 files

[root@pmaster puppet]# cat modules/mysql/manifests/config.pp  

class mysql::config{

file  {"/tmp/mysql_test/mysql_test.tgz":    ##將pmaster  /tmp/files/mysql_test.tgz文件下發到agent  /tmp/mysql_test/目錄下

    source =>  "puppet://pmaster.example.com/files/mysql_test.tgz",  


}


}

[root@pmaster puppet]# cat  modules/mysql/manifests/init.pp

class mysql::mysql{

    include mysql::install,mysql::config

}

[root@pmaster puppet]# cat  modules/mysql/manifests/service.pp

class mysql::service{

    service{"mysql":

          ensure    => running,

          hasstatus => true,

          hasrestart => true,

          enable     => true,

          name       =>  "mysql",

          require    =>  Package["mysql"],

          #subscribe  =>  File["/etc/my.cnf"],

}



}

[root@pmaster puppet]# cat  modules/mysql/manifests/install.pp

class mysql::install{

exec { "unzip tgz packget":

    command => "tar -xvf  /tmp/mysql_test/mysql_test.tgz",    ###所有命令必須爲全路徑或者path參數指定命令搜索路徑

    path => "/usr/bin:/usr/sbin:/bin:/sbin",

    cwd => "/tmp/mysql_test",   ##命令執行的路徑爲: /tmp/mysql_test/

    creates => "/etc/my.cnf",   #當/etc/my.cnf不存在的時候,纔會執行該命令

    tries => 2,  #重試次數

    try_sleep => 3, #重試間隔 s爲單位

}

}


高級擴展:

Master kick 主動推送配置到agent


223324610.png



223324667.png


*******************************************************************************************

* 爲最大限度不影響讀者感官: *

* http://fengzhilinux.blog.51cto.com/1343279/1320317另起欄目,也請大家多支持 *

*******************************************************************************************


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章