puppet使用ruby语言研发,所以在使用中还要掌握一些ruby的语法;
本处使用epel仓库安装puppet,版本是3.6.2
yum -y install puppet
puppet获取帮助信息
puppet help
puppet有两种工作模型
standalone模型 master/agent模型
puppet的资源类型
puppet describe -l #显示所有的puppet资源类型 puppet describe -ms group #显示指定资源的简要信息,-s显示简要信息,-m显示元信息
定义资源的语法
resource {'title':
attribute => value
……
}
#resource必须使用小写,title在同一资源中必须唯一puppet的八种常用资源类型:
1、group资源
创建组
cat group.pp
group{'mygrp': #资源名称是group,title是mydb,以冒号标识
ensure => present, #ensure表示创建或删除组,此处present表示创建组,absent表示删除组
name => mygrp, #组名称,如果未定义则使用title指定的字符串,即此字段可以省略
system => yes, #此组是系统组
gid => 1991, #定义组id
}
#上述我们创建一个创建组的资源清单,每字段尾都要以逗号隔开,最后一行的逗号则可以写也可以不写
puppet apply -v --noop group.pp
#-v显示详细信息,--noop表示干跑,即模拟测试此资源清单,实际操作可以去掉--noop参数
#如果此组已经存在,多执行几次命令结果都是不变的,因为此资源是幂等的2、user资源
创建用户
cat user.pp
user{'user1':
ensure => present,
uid => 3000, #指定用户id
groups => puppet, #用户所属辅助组
home => '/app', #指定用户家目录
shell => '/bin/csh', #在使用路径标识时一定要记得加引号,否则报错
}
#创建用户资源清单
#如果用户属于多个辅助组,可以使用groups => ['puppet','mygrp'],数组的表示方式
puppet apply -v user.pp
#应用此清单,即可创建资源资源依赖/资源引用
user{'user1':
ensure => present,
uid => 3000,
home => '/app',
shell => '/bin/csh',
groups => ['testgrp','mygrp'],
require => [Group['testgrp'],Group['mygrp']], #require引用资源,资源的首字母必须大写
}
group{'testgrp':
ensure => present,
}
group{'mygrp':
ensure => present,
}
#资源依赖,即要创建user1用户,必须存在testgrp和mygrp组,而且这两个组必须被引用
#除了require外,资源依赖还有一种表示方式:before,即某个资源被别的资源依赖,如下在testgrp组资源下定义
before => User['user1'], #此组被user1用户资源所依赖,即此组要先存在才能创建user1
#总结,依赖关系用两种方式定义,一是被前资源依赖,一是被后资源依赖3、package资源
安装软件包
cat package.pp
package{'nginx':
ensure => latest,
}
#就这些字段就可以将nginx安装了4、service资源
启动服务
cat service.pp
service{'nginx':
ensure => running, #是否开启服务
enable => true, #开机自启动
hasrestart => true, #是否有重启命令
restart => "service nginx restart", #设置重启命令
require => Package['nginx'], #开启服务依赖于package资源,只有先安装软件包才能启动服务
}
package{'nginx':
ensure => latest,
}原文:http://blog.51cto.com/panpangao/2044074