一、package资源常见参数
puppet的package资源参数比较简单,常见参数如下:
ensure:可以选择installed、absent、purged、latest其中之一,installed表示软件若不存在则安装,absent和purged都表示卸载,但是当要卸载的软件包为其他软件包的依赖时,absent会拒绝执行卸载命令,而purged则会依然卸载,latest表示升级到最新版本。 version:表示指定安装的版本号。
二、package资源实战
下面,我们来进行puppet中package资源的实战,尝试使用puppet服务端控制puppet客户端安装tree和Apache两个软件。 在puppet服务端上,修改/etc/puppet/manifests/site.pp文件,使得该文件中内容为: 备注:
import "redis"
node /test\.laobing\.cn/ {
include redis
}
class redis {
package{
"redis":
ensure => "installed";
}
}
客户端执行:puppet agent --server puppetserver.test.laobing.cn --test
三、exec和file 参数实战
class redis {
exec{
"start":
path => ["/usr/bin", "/usr/sbin", "/bin", "/sbin"],
command => "sh /home/work/redis/redis.sh",
user=>work,
refreshonly => true;
}
file{
'/home/work/redis':
owner =>work,
source => "puppet:///data1/redis",
ensure => directory,
recurse => true,
purge => true,
force => true,
notify => Exec["start"];
}
}
客户端执行:puppet agent --server puppetserver.test.laobing.cn --test
3.1 exec
command : 指定要执行的命令。如果忽略,这个参数的值默认为资源的标题。必须填写命令的完整路径或者提供这个命令的查找路径。
creates : 命令创建的一个文件。加入这个参数设置的话,只有这个文件不存在的时候命令才会执行。
cwd : 命令执行的路径。
environment : 为命令设置附加的环境变量。
user : 定义运行命令的用户。group : 执行命令运行的用户组。
onlyif : 只有onlyif指定命令执行返回为0的时候,命令才会执行
refresh : 定义如何更新命令。当exec收到一个来自其他资源的事件时,默认只会重新执行一次命令。
refreshonly : 该属性可以使命令变成仅刷新触发的,也就是说只有在一个依赖的对象被改变时,命令才会被执行。只有subscribe和notify可以促发行为,而不是require,所以在使用refreshonly时,只有同时使用subscribe或notify才有意义
3.2 file
ensure:
- file:类型为普通文件,其内容由content属性生成或复制由source属性指向的文件路径来创建;
- link:类型为符号链接文件,必须由target属性指明其链接的目标文件;
- directory:类型为目录,可通过source指向的路径复制生成,
recurse属性指明是否递归复制; path:文件路径;source:源文件; content:文件内容; target:符号链接的目标文件; owner:属主 group:属组 mode:权限;
recurse => true, #递归管理目录置是否以及如何进行递归操作,即可以管理子目录(recurse,purge和force连用,用于删除子目录中,不在资源控制的文件或目录)
purge => true #将不再资源中管理的其他数据,删除
force => true, #可以删除文件和目录
ignore => "dir*"; #正则,忽略dir*的