全部博文(2065)
分类: LINUX
2010-10-20 14:50:09
Puppet语法
时间:2010-10-19
说明:它的语法规则与ruby的语法非常类似的。
1、 File资源
管理系统本地文件
依赖:该资源没有依赖关系
平台:支持所有平台
示例:
我们在109上面因为它安装了客户端。先用客户来测试吧,配置文件如下:
file { "/tmp/testcopy": source => "/tmp/test", mode=>0644; } #表示的是从/tmp/test复制一份新文件 运行puppet /tmp/1.pp 就行了! |
参数
#backup 参数
可以利用filebucket对文件进行备份的。可以将文件备份到指定的机器是本地还是网络上面的其他机器的。如果指定其备份参数为false那就不做备份了!
#checksum
检查文件是否被修改过。判断一个文件是否被修改过的方式包括使用md5与mtime等默认为md5
#conent表示写入文件的内容了
define resolve(nameserver1, nameserver2, domain, search) {
$str = "search $search
domain $domain
nameserver $nameserver1
nameserver $nameserver2"
file { "/etc/resolv.conf":
content => $str #可以使用一个变量使用的
}
}
#ensure
如果文件本来不存在是否要新建文件。可以设置值为:absent和present,file和directory.
present,就会检查该文件是否存在,如果不存在就新建该文件,如果指定是 absent, 就会删除该文件(如果recurse => true ,就会删除目录)
file { "/tmp/testcopy123": ensure => "present", #指定了这个值那如果不存在就新建 mode=>0644; } |
#force 它的作用在把一个目录变成一个链接。可用的值为true或false
#group 指定那个文件的用户组,值可以是gid或组名 即这个文件是属于哪个组的
#ignore 当用recursion方法复制一个目录的时候,可以用ignore来指定过滤条件,符合过滤条件的文件就不会被复制(它后面会接上过滤条件即哪些符合条件的就不会被复制了)可以支持shell级别的正则
#links 定义操作符合链接文件,可以设置的值是follow和manage文件拷贝的时候,设置follow,会拷贝文件的内容,而不是只拷贝符合链接本身,如果设置成manage ,会拷贝符合链接本身.
说明:链接本身就相当于是一个快捷方式
#mode 定义文件权限
#owner 文件的属主
#path 指定要管理文件的路径.要管理的是这个文件了
#recurse 设置是否以及如何进行递归操作,可以设置为false\true\inf\remote
#recurselimit 递归的深度可以匹配的/^[0-9]+$/
#source 拷贝一个文件覆盖当前文件
说明:我们先来配置一下fileserver吧
[root@server ~]# more /etc/puppet/fileserver.conf # This file consists of arbitrarily named sections/modules # defining where files are served from and to whom # Define a section 'files' # Adapt the allow/deny settings to your needs. Order # for allow/deny does not matter, allow always takes precedence # over deny [files] path /var/lib/puppet/files #表示服务端把这个目录里面的文件所共享出去 allow * #客户端限制 有点类似于NFS [modules] allow * [plugins] allow * 重启下服务器端 [root@server ~]# service puppetmaster restart |
此时客户端的配置如下:
[root@localhost ~]# more /tmp/1.pp file { "/tmp/testcopy123": #将这个文件覆盖掉 source => "puppet://server.puppet.com/files/a.conf" #表示从哪下载 } 说明:这里要非常感谢一个朋友(智弘) 这里面的source的值要依据服务器端的配置而变化的 简单总结如下: /etc/puppet/modules/test/files/a.conf #这个地址与我的不同哦! 对应客户端的 puppet:// #看到没有 表示的是主控端的主机名 .这就有一个问题了如果加了一层ngix的话怎么写? |