本文系统Centos6.0 puppet 2.6.18
先看下file资源的部分属性:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
file {“absolute path”:
ensure=> present/absent/file/directory/link,
#定义absolute path的是否存在在及它应该是什么角色
user=>
"username"
,
group=>
"groupname"
,
mode=>
0777
,
path=>
"absolute path"
,
source=>
"puppet:///URL"
,
#指定到master上文件的路径或者agent上本地文件路径
content=>
"content"
,
#描述文件内容的字符串,也可以是模版或者输出内容的函数,模版常用
target=> #link文件源
recurse=> #递归处理
purge=> #清理文件及目录
force=> #必须使用此选项,否则不能清理
ignore => #不清理的文件
backup => 决定文件的内容在被修改前是否进行备份. 利用filebucket对文件进行备份,按文件的md5sum进行归类,便于恢复文件的时候找到文件.可以把文件备份到 puppet 客户端,也可以通过设置backpup => bucket_name 把文件备份到网络上的其他机器. 如果backup的值是一个点号”.”开头的字符串,puppet会把文件备份在同一目录下,备份文件的扩展名就是 bakcup里面的那个字符串.如果设置 backup =>
false
, 该文件不做备份.
checksum => 怎样检查文件是否被修改,这个状态用来在复制文件的时候使用, 这里有几种检测方式,包括md5 ,mtime,time,timestamp等.
默认的检测是用md5
}
|
主机信息:
master:master.lansgg.com 192.168.182.143
client1 :client1.lansgg.com 192.168.182.142
client2: client2.lansgg.com 192.168.182.149
相关安装请看http://lansgg.blog.51cto.com/5675165/1299604
案例一:
目的:在client1上/tmp/下创建文件lansgg.txt
在client2上/root/下创建目录testdir
master:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
[root@master ~]# cat /etc/puppet/manifests/site.pp
import
"node1.pp"
[root@master ~]# cat /etc/puppet/manifests/node1.pp
node
'client1.lansgg.com'
{
file {
"/tmp/lansgg.txt"
:
ensure => present,
owner => root,
group => root,
mode =>
0644
,
content => " # path /path/to/resource\n
# [environment envlist]\n
# [method methodlist]\n
# [auth[enthicated] {yes|no|on|off|any}]\n
# allow [host|ip|*]\n
# deny [host|ip]\n";
}
}
node
'client2.lansgg.com'
{
file {
"/root/testdir"
:
ensure => directory,
owner => nobody,
group => nobody,
mode =>
0755
,
}
}
|
client1:
client2:
案例二:
将master的sshd_config文件映射到client1上;
master:
1
2
3
4
5
6
7
|
[root@master manifests]# vim node1.pp
file {
"/etc/ssh/sshd_config"
:
ensure => present,
owner => root,
group => root,
mode =>
0400
,
}
|
client1:
案例三:
client2上/root/testdir目录下有多余文件及目录,我们进行清理;
master:
1
2
3
4
5
6
7
8
9
10
|
[root@master ~]# vim /etc/puppet/manifests/node1.pp
file {
"/root/testdir"
:
ensure => directory,
owner => root,
group => root,
mode =>
0755
,
recurse =>
true
,
purge =>
true
,
force =>
true
,
}
|
client2:
案例四:
接上例,如果不想test.file文件删掉,其他都删掉呢?
master:
1
2
3
4
5
6
7
8
9
10
11
|
[root@master ~]# vim /etc/puppet/manifests/node1.pp
file {
"/root/testdir"
:
ensure => directory,
owner => root,
group => root,
mode =>
0755
,
recurse =>
true
,
purge =>
true
,
force =>
true
,
ignore =>
'test.file'
,
}
|
client2:
案例五:
我们在client2上的/root/testdir/link.f创建为链接文件:
master:
1
2
3
4
5
|
[root@master manifests]# vim node1.pp
file {
"/root/testdir/link.f"
:
ensure => link,
target =>
'/etc/puppet/puppet.conf'
,
}
|
client2:
案例六:
我们在client端创建个目录树,类似mkdir -p 的效果。比如我要在/tmp/目录创建,/tmp/1,/tmp/1/2,/tmp/1/2,/tmp/1/2/3文件夹。
代码示例:
file { [ "/tmp/1", "/tmp/1/2", "/tmp/1/2/3" ]: ensure => "directory", }
案例七:
管理目录,不覆盖/覆盖已经存在的文件。
1
2
3
4
5
6
7
|
file {
"/tmp/test"
:
replace =>
"true"
, #不覆盖的话为
false
ensure =>
"present"
,
content => template(
"/etc/smartd.conf"
), #此为引用本地的文件
owner =>
'zhangsan'
,
mode =>
644
,
}
|
案例八:
将client端需要跟新的文件先备份,然后将文件更新
1
2
3
4
5
6
7
8
|
file {
"/tmp/ntp.conf"
:
backup =>
".zzq20131101"
, #先将文件备份ntp.conf.zzq.
20131101
# backup =>
"false"
, #此为不备份,默认是不备份的
ensure => present,
owner => zhangsan,
content => template(
"/etc/ntp.conf"
),
mode =>
644
,
}
|
本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1299857