puppet资源之augeas
Edit by leary
一.概述
augeas是puppet的标准资源。可以用来管理配置文件。但这种资源的使用需要有augeas及ruby-augeas的支持.
augeas提供了一个API接口,供puppet调用。在Linux上需要安装三个包:
augeas
augeas-libs
ruby-augeas
二.augeas的树型结构
augeas是通过树形结构来配置修改相应的配置文件的。注:并不是所有的配置文件都可以通过augeas管理。
所谓的树形结构和linux的文件系统有些类似。
前缀→路径→键:值
前缀:目前我们用的到只有/files
路径:即配置文件的路径,以/etc/sysctl.conf为例,其它路径即为 /etc/sysctl.conf
键(姑且先这么叫):kernel.panic
值:7
在/etc/syscty.conf中有这样一条记录:
kernel.panic = 7
那么这条记录的结构就为:
/files/etc/sysctl.conf/kernel.panic
它所对应的值为:7
三.puppet调用augeas
augeas {“defaulctl5″:
context => “/files/etc/sysctl.conf”,
changes => [
"set net.ipv4.ip_forward 1",
"set kernel.panic 7",
],
}
以上为一sysctl.conf的修改实例,说明如下:
1. 与其它资源调用类似。augeas也是以资源名称开头,即augeas
2. title为唯一值,这里的default5是为了标识rhel5的sysctl.conf所采用的默认配置。
3. context为要操作的路径。(并不一定为全路径,现在只知道不一定为全路径即可。)
4. changes变更。其它方法有
set 设置为。(没有则添加,有则查看其值)语法:set [PATH] [VALUE]
rm 删除 语法:rm [PATH]
5. 数组的概念。在puppet中的数表示为中括号,如[“a”,”b”,”c”].上例中就用到的数组的方法
四. augeas工具augtool
在系统中可以使用augtool进入augeas。通过命令相看其格式。
ls 可以使用这个命令来查看是否可被augeas管理。如果可以,可以通过print查看其树形结构。
[root@spider58 ~]# augtool
augtool> ls /files/etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
kernel.panic = 7
net.core.netdev_max_backlog = 4096
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.ip_local_port_range = 1024
net.ipv4.tcp_low_latency = 1
net.ipv4.tcp_max_syn_backlog = 17000
net.ipv4.tcp_max_tw_buckets = 360000
net.ipv4.tcp_rmem = 4096
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_wmem = 4096
augtool> quit
[root@spider58 ~]#
其中红色部分为系统显示的结果。
同样,我们看一下print的结果是什么样的
[root@spider58 ~]# augtool
augtool> print /files/etc/sysctl.conf
/files/etc/sysctl.conf
/files/etc/sysctl.conf/net.ipv4.ip_forward = “1″
/files/etc/sysctl.conf/net.ipv4.conf.default.rp_filter = “1″
/files/etc/sysctl.conf/net.ipv4.conf.default.accept_source_route = “0″
/files/etc/sysctl.conf/kernel.sysrq = “0″
/files/etc/sysctl.conf/kernel.core_uses_pid = “1″
/files/etc/sysctl.conf/net.ipv4.tcp_syncookies = “1″
/files/etc/sysctl.conf/kernel.msgmnb = “65536″
/files/etc/sysctl.conf/kernel.msgmax = “65536″
/files/etc/sysctl.conf/kernel.shmmax = “4294967295″
/files/etc/sysctl.conf/kernel.shmall = “268435456″
/files/etc/sysctl.conf/kernel.panic = “7″
/files/etc/sysctl.conf/net.core.netdev_max_backlog = “4096″
/files/etc/sysctl.conf/net.core.rmem_default = “262144″
/files/etc/sysctl.conf/net.core.rmem_max = “262144″
/files/etc/sysctl.conf/net.core.wmem_default = “262144″
/files/etc/sysctl.conf/net.core.wmem_max = “262144″
/files/etc/sysctl.conf/net.ipv4.conf.all.arp_announce = “2″
/files/etc/sysctl.conf/net.ipv4.conf.all.arp_ignore = “1″
/files/etc/sysctl.conf/net.ipv4.conf.lo.arp_announce = “2″
/files/etc/sysctl.conf/net.ipv4.conf.lo.arp_ignore = “1″
/files/etc/sysctl.conf/net.ipv4.ip_local_port_range = “1024″
/files/etc/sysctl.conf/net.ipv4.tcp_low_latency = “1″
/files/etc/sysctl.conf/net.ipv4.tcp_max_syn_backlog = “17000″
/files/etc/sysctl.conf/net.ipv4.tcp_max_tw_buckets = “360000″
/files/etc/sysctl.conf/net.ipv4.tcp_rmem = “4096″
/files/etc/sysctl.conf/net.ipv4.tcp_tw_recycle = “1″
/files/etc/sysctl.conf/net.ipv4.tcp_tw_reuse = “1″
/files/etc/sysctl.conf/net.ipv4.tcp_wmem = “4096″
augtool> quit
[root@spider58 ~]#
print打印出了其完整的树形结构,而对应的值,被引号引了起来。
使用puppet控制sysctl.conf
关于augeas的语法,这里不再赘述。而sysctl的分类目前分为两类,按系统分为两类。共4类。
as4 no arp single
rhel5 no arp single
一.相关配置文件位置
/etc/puppet/manifests/classes/sysctl
二.配置文件列表及功能说明
defaultctl.pp 默认的sysctl.conf中的配置。在里面分了as4和rhel5
noarp.pp 添加no arp等配置的支持,用于nginx,apache等应用。并执行sysctl -p
singlectl.pp 引用默认配置,并执行sysctl –p
三.类的定义及继承
class defaultctl 基本sysctl类。其中包含了对as4和rhel5默认的sysctl.conf的修改
class noarpctl inherits defaultctl 其中noarpctl定义了为nginx、apache、squid及屏蔽arp广播等应用所需的配置。此类继承了defaultctl,中的结果。
class singlectl inherits defaultctl 继承defaultctl直接执行sysctl -p
四.类的引用
所在这些类的引用通过site.pp引入
import ‘classes/sysctl/*.pp’
五.类的执行
节点控制文件位于/etc/puppet/manifests/nodes/lan/allnodes.pp
以某节点为例
node ‘spider58.XXX.com’ inherits basenode {
include noarpctl
}
阅读(3453) | 评论(1) | 转发(0) |