实例一、文件分发
描述:通过puppet服务端可以向被管理机(客户端)上推送文件,方法是使用file类型的source属性
第一步:#vi
/etc/puppet/fileserver.conf
1
[files]
2 path
/opt/
# 设置文件推送到目录
3 allow 192.168.133.0/24 #
设置准许连接到服务端的主机地址
第二步:vi /etc/puppet/manifests/site.pp
1 file
2 {
"/opt/mysql-5.1.49-linux-i686-icc-glibc23.tar.gz":
3
source =>
"puppet://$puppetserver/files/mysql-5.1.49-linux-i686-icc-glibc23.tar.gz",
4
}
5
//设置服务器上/opt目录下的mysql-5.1.49-linux-i686-icc-glibc23.tar.gz为被传送文件
6
//此处“$puppetserver”是Puppet
Server端的名称,即hostname,在hosts文件里指定,生产环境下用内部的DNS上作解析
第三步:
在客户端执行更新命令
1
#puppetd --test --server
server.puppet
实例二、修改文件属性
描述:把/tmp/dd142/
puppet-2.6.13.tar.gz文件的权限改为puppet用户,并设置权限为666。
第一步:编辑服务端的site.pp
vi
/etc/puppet/manifests/site.pp
------------------------------------------------------
1 file
2 {
"/tmp/dd142/puppet-2.6.13.tar.gz":
3 owner =>
"puppet",
4 group => "puppet",
5
mode => 666,
6
}
第二步:在客户端执行命令
1 #puppetd --test
--server
server.puppet
实例三、执行SHELL命令或shell脚本
描述:通过puppet分发执行shell脚本,在客户端的opt目录下新建一目录shelldir。
第一步:编辑服务端的site.pp
1
vi /etc/puppet/manifests/site.pp
2
---------------------------------------------
3
exec { "exec-mkdir":
4 cwd =>
"/opt", //切换到命令行运行时目录
5
command => "sh /opt/lgh.sh",
6 user =>
"root",
7 path =>
"/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",
8
}
第二步:在客户端编辑上一步command路径中指定的shell脚本,例如
1
vi /opt/lgh.sh
2
---------------------------------------------
3
#!/bin/bash
4 mkdir
/opt/shelldir
第三步:在客户端执行命令
1 # puppetd --test
--server
server.puppet
在/opt目录下查看shelldir目录有没有建立。
实例四、cron计划任务
描述:接上面的shell程序实例,在17:30执行/opt/lgh.sh。
第一步:编辑服务端的site.pp
1
vi /etc/puppet/manifests/site.pp
2
---------------------------------------------
3
cron { "cron-shell": #title部分,可用来作为注释。
4
command => "sh /opt/lgh.sh" #要执行的命令
5 user
=> "root", #添加到root用户下的crontab中
6 minute =>
"30", #即第一个星号
7 hour => "17"
#即第二个星号
8 }
第二步:在客户端执行命令
puppetd --test
--server server.puppet
然后在客户端使用#crontab
-l查看效果
1 [root@client ~]# crontab
-l
2 # HEADER: This file was autogenerated at Mon Nov
04 16:56:25 +0800 2013 by puppet.
3 # HEADER: While
it can still be managed manually, it is definitely not
recommended.
4 # HEADER: Note particularly that the
comments starting with ‘Puppet Name‘ should
5 #
HEADER: not be deleted, as doing so could cause duplicate cron
jobs.
6 # Puppet Name: cron-shell
7
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://www.cnblogs.com/ruiy/p/expl.html