Puppet配置語法初步介紹及示例

jopen 11年前發布 | 35K 次閱讀 Puppet

實例一、文件分發

描述:通過puppet服務端可以向被管理機(客戶端)上推送文件,方法是使用file類型的source屬性

第一步:#vi /etc/puppet/fileserver.conf  
[files]
path /opt/              # 設置文件推送到目錄
allow 192.168.133.0/24  # 設置準許連接到服務端的主機地址

第二步:vi /etc/puppet/manifests/site.pp 

file
{ "/opt/mysql-5.1.49-linux-i686-icc-glibc23.tar.gz":
source => "puppet://$puppetserver/files/mysql-5.1.49-linux-i686-icc-glibc23.tar.gz",
}   
//設置服務器上/opt目錄下的mysql-5.1.49-linux-i686-icc-glibc23.tar.gz為被傳送文件
//此處“$puppetserver”是Puppet Server端的名稱,即hostname,在hosts文件里指定,生產環境下用內部的DNS上作解析

第三步:
在客戶端執行更新命令

#puppetd --test --server server.puppet

實例二、修改文件屬性


描述:把/tmp/dd142/ puppet-2.6.13.tar.gz文件的權限改為puppet用戶,并設置權限為666。

第一步:編輯服務端的site.pp
vi /etc/puppet/manifests/site.pp
------------------------------------------------------ 

file
{ "/tmp/dd142/puppet-2.6.13.tar.gz":
owner => "puppet",
group => "puppet",
mode => 666,
}

第二步:在客戶端執行命令

#puppetd --test --server server.puppet


實例三、執行SHELL命令或shell腳本

描述:通過puppet分發執行shell腳本,在客戶端的opt目錄下新建一目錄shelldir。

第一步:編輯服務端的site.pp

vi /etc/puppet/manifests/site.pp 

exec { "exec-mkdir": cwd => "/opt", //切換到命令行運行時目錄 command => "sh /opt/lgh.sh", user => "root", path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin", } </pre>
第二步:在客戶端編輯上一步command路徑中指定的shell腳本,例如

vi /opt/lgh.sh 

!/bin/bash

mkdir /opt/shelldir </pre>
第三步:在客戶端執行命令

# puppetd --test --server server.puppet 


在/opt目錄下查看shelldir目錄有沒有建立。


實例四、cron計劃任務

描述:接上面的shell程序實例,在17:30執行/opt/lgh.sh。

第一步:編輯服務端的site.pp

vi /etc/puppet/manifests/site.pp 

cron { "cron-shell": #title部分,可用來作為注釋。 command => "sh /opt/lgh.sh" #要執行的命令 user => "root", #添加到root用戶下的crontab中 minute => "30", #即第一個星號 hour => "17" #即第二個星號 } </pre>

第二步:在客戶端執行命令
puppetd --test --server server.puppet


然后在客戶端使用#crontab -l查看效果

[root@client ~]# crontab -l
# HEADER: This file was autogenerated at Mon Nov 04 16:56:25 +0800 2013 by puppet.
# HEADER: While it can still be managed manually, it is definitely not recommended.
# HEADER: Note particularly that the comments starting with 'Puppet Name' should
# HEADER: not be deleted, as doing so could cause duplicate cron jobs.
# Puppet Name: cron-shell
30 17 * * * sh /opt/lgh.sh


實例五、服務檢查及狀態修改

    描述:可以通過puppet對一些服務進行檢查。puppet是通過service命令操作的。所以,只能針對在/etc/init.d/目錄下的服務

實例:把客戶端的防火墻起來

第一步:編輯服務端的site.pp
vi /etc/puppet/manifests/site.pp 
----------------------------------------------
service
{ iptables:
ensure => "running",
}

第二步:在客戶端執行命令
puppetd --test --server server.puppet

參考 : http://369369.blog.51cto.com/319630/785895

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!