Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29305940
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 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

检查文件是否被修改过。判断一个文件是否被修改过的方式包括使用md5mtime等默认为md5

#conent表示写入文件的内容了

define resolve(nameserver1, nameserver2, domain, search) {

    $str = "search $search

            domain $domain

            nameserver $nameserver1

            nameserver $nameserver2"

    file { "/etc/resolv.conf":

        content => $str                  #可以使用一个变量使用的

    }

}

#ensure

如果文件本来不存在是否要新建文件。可以设置值为:absentpresent,filedirectory.

present,就会检查该文件是否存在,如果不存在就新建该文件,如果指定是 absent, 就会删除该文件(如果recurse => true ,就会删除目录)

file {

        "/tmp/testcopy123":

        ensure => "present",     #指定了这个值那如果不存在就新建

        mode=>0644;

}

 

#force  它的作用在把一个目录变成一个链接。可用的值为truefalse

#group  指定那个文件的用户组,值可以是gid或组名   即这个文件是属于哪个组的

#ignore 当用recursion方法复制一个目录的时候,可以用ignore来指定过滤条件,符合过滤条件的文件就不会被复制(它后面会接上过滤条件即哪些符合条件的就不会被复制了)可以支持shell级别的正则

#links  定义操作符合链接文件,可以设置的值是followmanage文件拷贝的时候,设置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的话怎么写?

 

 

 

阅读(1305) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~