Chinaunix首页 | 论坛 | 博客
  • 博客访问: 147735
  • 博文数量: 53
  • 博客积分: 1776
  • 博客等级: 上尉
  • 技术积分: 545
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-05 00:17
文章分类

全部博文(53)

文章存档

2016年(1)

2013年(2)

2012年(11)

2011年(6)

2010年(9)

2009年(19)

2008年(5)

我的朋友

分类: LINUX

2012-01-11 16:49:00

puppet exec用法:

1、当条件不满足时则执行某命令:

exec { "/bin/echo root >> /usr/lib/cron/cron.allow": path => "/usr/bin:/usr/sbin:/bin", unless => "grep root /usr/lib/cron/cron.allow 2>/dev/null" }

上面这段代码先用grep在cron.allow文件(Solaris系统中)中找root,如果没有找到,就写入root。
要注意的是这个参数里的命令跟主命令遵循同样的规则,也就是说如果path没有被设置的话,需要使用绝对路径。

2、当条件满足时才执行某命令:

exec { "logrotate": path => "/usr/bin:/usr/sbin:/bin", onlyif => "test `du /var/log/messages | cut -f1` -gt 100000" }

只有在test返回true的时候logrotate才会被运行。
需要注意的是onlyif定义的命令跟主命令遵循同样的规则,也就是说如果path没有被设置的话,需要使用绝对路径。

除此之外,onlyif还可以接受数组做为其值,例如:

onlyif => ["test -f /tmp/file1", "test -f /tmp/file2"]
上面的代码限定了只有在所有数组中的条件返回true时exec才会被执行。

3、当文件有修改时执行某命令:

### sysctl.conf file { "/etc/sysctl.conf": source => "puppet://$puppetserver/files/etc/sysctl.conf", owner => "root", group => "root", mode => 0644, } # Rebuild the database, but only when the file changes # 当sysctl.conf有更的时候才执行sysctl -p exec { "sysctl refresh kernel config": path => ["/usr/bin", "/usr/sbin", "/bin", "/sbin"], command => "sysctl -p", subscribe => File["/etc/sysctl.conf"], refreshonly => true }

当/etc/sysctl.conf有更新时,就执行:sysctl -p

4、其他
creates
指定命令所生成的文件。如果提供了这个参数,那么命令只会在所指定的文件不存在的情况的被执行:

exec { "tar xf /my/tar/file.tar": cwd => "/var/tmp", creates => "/var/tmp/myfile", path => ["/usr/bin", "/usr/sbin"] }

cwd
指定命令执行的目录。如果目录不存在,则命令执行失败。

更多参考:

阅读(1703) | 评论(0) | 转发(0) |
0

上一篇:esxi网卡属性

下一篇:vps备忘录

给主人留下些什么吧!~~