puppet进阶指南――exec资源详解

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 。




你可能感兴趣的:(puppet)