7月 192017
 

在使用puppet之前,先认识下puppet 配置文件和一些常用资源的使用

img

一、默认情况下,配置文件

默认的配置文件在/etc/puppet/下
1.auth.conf为认证配置文件
2.modules目录,里面存放一些自定义的模块,在manifests中调用,在modules某模块结构如下
manifests  #存放代码,另外init.pp必须存在
files       #存放用于同步到客户端的文件
templates  #存放模板
3.manifests目录,里面存放site.pp 程序主入口
4.fileserver.conf,文件服务配置文件,格式如下:
[tools]
path /etc/puppet/modules/
allow


5. puppet.conf,服务启动主配置文件
配置文件命名空间
main 通用配置选项
puppetd 客户端配置选项
puppetmasterd 服务端配置选项

main命名空间选项
confdir 配置文件目录,默认在/etc/puppet
trace 发生错误时显示跟踪信息,默认false
filetimeout 检测配置文件状态改变的时间周期,单位秒,默认15秒
syslogfacility 指定syslog功能为user级,默认为daemon级

puppetmasterd命名空间选项
user 后台进程执行的用户
group 后台进程执行的组
mainfestdir mainfests文件存储目录,默认为$confdir/mainfests
mainfest mainfest站点文件的名字,默认为site.pp
bindaddress 后台进程绑定的网卡地址接口
masterport 后台进程执行的端口,默认为8140

puppet命名空间选项
server puppet puppet服务器,默认为puppet
runinterval seconds puppet应用配置的时间间隔,默认1800秒(0.5小时)
puppetport port 后台进程执行的端口,默认8139

6.autosign.conf,自动答名,格式如下:
*                       表示所有
puppet*                  puppet开头的所有
192.168.140.0/24                 网段
事先要在puppet.conf中[puppetmaster]下填加
autosign=true
autosing=/etc/puppet/autosign.conf 这两行

二、Puppet管理的资源

可以用以下命令查看资源

puppet describe  –list      查询所支持的资源
puppet describe  file       查看该资源的用法

1).puppet file资源管理
   puppet file 参数介绍

backup

决定文件的内容在被修改前是否进行备份. 利用filebucket对文件进行备份,按文件的md5sum进行归类,便于恢复文件的时候找到文件.可以把文件备份到 puppet 客户端,也可以通过设置backpup => bucket_name 把文件备份到网络上的其他机器. 如果backup的值是一个点号”.”开头的字符串,puppet会把文件备份在同一目录下,备份文件的扩展名就是 bakcup里面的那个字符串.如果设置 backup => false , 该文件不做备份.

checksum
怎样检查文件是否被修改,这个状态用来在复制文件的时候使用, 这里有几种检测方式,包括md5 ,mtime,time,timestamp等.默认的检测是用md5

content
把文件的内容设置为content 参数后面的字符串, 新行,tab,空格可用 escaped syntax 表示

ensure
如果文件本来不存在是否要新建文件,可以设置的值是 absent和present,file和directory. 如果指定 present,就会检查该文件是否存在,如果不存在就新建该文件,如果指定是 absent, 就会删除该文件(如果recurse => true ,就会删除目录).

force
force 当前的唯一作用是用在把一个目录变成一个链接,可用的值是ture和false

group
指定那个该文件的用户组,值可以是gid或者组名

ignore
当用recursion 方法复制一个目录的时候,可以用ignore来设定过滤条件,符合过滤条件的文件不被复制. 使用ruby自带的匹配法则.因此shell级别的过滤表达式完全支持,例如[a-g]*

links
定义操作符合链接文件. 可以设置的值是follow和manage; 文件拷贝的时候,设置follow,会拷贝文件的内容,而不是只拷贝符合链接本身,如果设置成manage ,会拷贝符合链接本身.

Mode
mode用于设置文件的权限

owner
设置文件的属主

path
指定要管理文件的路径,必须用引号引起来, 这也是一个资源的 namevar ,通常path 等于资源的title

recurse
设置是否以及如何进行递归操作, 可以设置的值是 false,true ,inf ,remote

source
拷贝一个文件覆盖当前文件,用checksum来判断是否有必要进行复制,可以设置的值是一个引用的完整的文件路径,或者是URI,当前支持的URI只有puppet和file ; 这是一个对文件常用的操作,可以让puppet修改系统的配置文件.
target
是为创建链接的。可以设置的值为notlink.
type
检查文件是否只读

2).puppet exec资源管理
puppet exec 参数介绍】

command:将会被执行的命令,必须为被执行命令的绝对路径,或者得提供该命令的搜索路径。如果命令被成功执行,所有的输出会被记录在实例的正常(normal)日志里,但是如果命令执行失败(既返回值与我们所指定的不同),那么所有的输出会在错误(err)日志中被记录。
这个是exec资源类型的名变量(namevar)。

creates:
指定命令所生成的文件。如果提供了这个参数,那么命令只会在所指定的文件不存在的情况的被执行:
cwd:
指定命令执行的目录。如果目录不存在,则命令执行失败。
Group
定义运行命令的用户组。在不同的平台下的运行的结果无法确定,由于不同用户运行命令的时候,变量是不变的,所以这是平台的问题,而不是Ruby或Puppet的问题。

logoutput

是否记录输出。默认会根据exec资源的日志等级(loglevel) 来记录输出。若定义为on_failure,则仅在命令返回错误的时候记录输出。可取的值为:true,false和其他合法的日志等级。
Onlyif

如果这个参数被设定了,则exec只会在onlyif设定的命令返回0时才执行。例如:

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才会被执行。“

 

path

命令执行的搜索路径。如果path没有被定义,命令需要使用绝对路径。路径可以以数    组或以冒号分隔的形式来定义。

 

refresh

定义如何更新命令。当exec收到一个来自其他资源的事件时,默认只会重新执行一次   命令。不过这个参数允许你定义更新时执行不同的命令。

refreshonly

该属性可以使命令变成仅刷新触发的,也就是说只有在一个依赖的对象被改变时,命令才会被执行。仅当命令与其他对象有依赖关系时,这个参数才有意义。当你要触发某个行为时,会显得很有用:

# Pull down the main aliases file file { “/etc/aliases”: source => “puppet://server/module/aliases” } # Rebuild the database, but only when the file changes exec { newaliases: path => [“/usr/bin”, “/usr/sbin”], subscribe => File[“/etc/aliases”], refreshonly => true }

要注意的是只有subscribe和notify可以促发行为,而不是require,所以在使用refreshonly时,只有同时使用subscribe或notify才有意义。有效的值为true, false。

 

unless

如果这个变量被指定了,那么exec会执行,除非unless所设定的命令返回0。?

user

定义运行命令的用户。 注意如果你使用了这个参数,那么任何的错误输出不会在当下被捕捉,这是Ruby的一个bug。
3).puppet package资源管理
【puppet package 参数介绍】

adminfile

软件包管理器,通常是为了安装软件包。这个参数只适用于Solarias

allowcdrom
告诉 apt 允许使用cdrom作为软件源, 可以设置成false或者 true

category
软件包设置的一个只读的属性

configfiles
是否保留或者替换软件的配置文件,大多数软件不支持这个参数,可设置的值是false,true

description
描述软件包,软件包设置的一个只读属性

ensure
设置该软件包应该在什么状态. installed 表示要安装该软件,也可以写成present; absent 表示反安装该软件,pureged 表示干净的移除该软件,latest 表示安装软件包的最新版本.

namevar
该资源的namevar ; 软件包的名字

 

4).puppet service资源管理
【puppet service 参数介绍】
binary :可执行文件。这个只用在不支持init脚本的情况下。
control :用来管理服务的,通常是用在hp-unix系统上。
enable :服务是否随开机而启动,可设置的值为true,false.
ensure: 服务是否运行,可设置的值为running,stopped,也可以用true,false.
hasrestart: 服务的init脚本是否支持restart参数,可设置的值为true,false.
hasstatus :服务的init脚本是否支持status参数,可设置的值为ture,false.
manifest :Specify a command to config a service,or a path to a manifest to do so.配置服务的命令,或者指定路径。
name: 要运行的服务名字。
path: 指定查找init 脚本的路径。
pattern :搜索进程表匹配字符串,用于不支持init的脚本。
provider :The specific backend for provider to use,可设置的值有base, daemontools,init等
restart :重启服务。
Start: 开启服务
status :服务运行状态
stop: 停止服务

5).puppet cron资源管理
  【puppet cron 参数】

command:
crontab要执行的命令, 环境变量按照系统本地规则进行管理,推荐使用绝对路径.

ensure:指定该资源是否启用,可设置成true或false

environment:在crontab环境里面指定环境变量,例如 PATH=/bin:/usr/bin:/usr/sbin.

hour: 运行crontab的小时,可设置成0-23

minute:运行crontab的分钟,可设置成0-59
month: 设置crontab运行的月份,1-12
monthday:一个月份中的日子,1-31

name:
该crontab的名字,这个名字用于管理员区分不同的crontab,以及puppet管理各种资源关系.

user:

把该crontab加到那个用户的crontab列表,默认是运行puppet的用户

weekday:

运行crontab的星期数,0-7,周日是为0.

打赏
 Posted by at 下午 9:34

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)