边用边学Puppet 系列 之 package exec file

163 阅读3分钟

一、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 : 该属性可以使命令变成仅刷新触发的,也就是说只有在一个依赖的对象被改变时,命令才会被执行。只有subscribenotify可以促发行为,而不是require,所以在使用refreshonly时,只有同时使用subscribe或notify才有意义

3.2 file

ensure:

  1. file:类型为普通文件,其内容由content属性生成或复制由source属性指向的文件路径来创建;
  2. link:类型为符号链接文件,必须由target属性指明其链接的目标文件;
  3. directory:类型为目录,可通过source指向的路径复制生成,

recurse属性指明是否递归复制; path:文件路径;source:源文件; content:文件内容; target:符号链接的目标文件; owner:属主 group:属组 mode:权限;

recurse =>   true,    #递归管理目录置是否以及如何进行递归操作,即可以管理子目录(recurse,purge和force连用,用于删除子目录中,不在资源控制的文件或目录)

purge => true #将不再资源中管理的其他数据,删除

force => true,      #可以删除文件和目录

ignore => "dir*";   #正则,忽略dir*的

image.png