exec资源
exec资源的功能是调用linux系统命令,完成系统管理的基础操作。
1、exec资源常用属性
exec {‘资源标题‘:
command
creates
cwd
environment
group
logoutput
onlyif
path
refresh
refreshonly
returns
timeout
tries
try_sleep
user
provider
}
◆ command:指定要执行的系统命令。
◆ creates:指定命令所生成的文件。如果提供了这个参数,那么命令只会在所指定的文件不存在的情况的被执行,防止出现同一时刻多次执行的情况。
exec {‘tar -xf /root/nginx.tar.gz‘:
cwd => ‘/var/tmp‘,
creates => ‘/var/tmp/myfile‘,
path => ["/usr/bin","/usr/sbin"]
}
◆ cwd:指定命令执行的目录。如果目录不存在,则命令执行失败。
◆ environment:为命令设定额外的环境变量。要注意的是如果你用这个来设定PATH,那么PATH的属性会被覆盖。多个环境变量应该以数组的形式来设定。
◆ group:执行命令运行的账户组。
◆ logoutput:是否记录输出。默认会根据exec资源的日志等级(loglevel) 来记录输出。若定义为on_failure,则仅在命令返回错误的时候记录输出。可取的值为:true,false和其他合法的日志等级。
◆ onlyif:如果这个参数被设定了,则exec只会在onlyif设定的命令返回0时才执行。
◆ path:命令执行的搜索路径。如果path没有被定义,命令需要使用绝对路径。路径可以以数组或以冒号分隔的形式来定义。path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ]
◆ refresh =>true|false:刷新命令执行状态。
◆ refreshonly =>true|false:该属性可以使命令变成仅刷新触发的,也就是说只有在一个依赖的对象被改变时,命令才会被执行。只有同时使用subscribe或notify才有意义。
◆ returns:指定返回的代码。如果被执行的命令返回了其他的代码,一个错误(error)会被返回。默认值是0,可以定义为一个由可以接受的返回代码组成的数组或单值。
◆ timeout:命令运行的最长时间。如果命令运行的时间超过了timeout定义的时间,那么这个命令就会被终止,并作为运行失败处理。当定义为负值时就会取消运行时间的限制。timeout的值是以秒为单位的。
◆ tries:命令执行重试次数,默认为1。设置这个值之后命令会重试设置的次数直到正确的代码返回。
◆ try_sleep:设置命令重试的间隔时间,单位为秒。
◆ user:指定执行命令的账户。
◆ provider:shell和windows。
2、案例分析
通过exec资源以puppet账户身份来解压soft.tar.gz文件,编辑/etc/puppet/manifests/exec.pp。
exec { ‘test‘:
path => ["/usr/bin","/bin"],
creates => ‘/tmp/lock‘,
user => ‘puppet‘,
group => ‘puppet‘,
timeout => ‘3‘,
command => ‘tar xf /root/soft.tar.gz‘,
}
进行测试查看一下,可以看到文件正常解压好。
# puppet apply /etc/puppet/manifests/exec.pp
notice: /Stage[main]//Exec[test]/returns: executed successfully
notice: Finished catalog run in 0.20 seconds
欢迎关注http://www.wzlinux.com:45 和http://www.wzlinux.com 。