puppet与ansible都是运维自动化工具,二者最大的区别在于,puppet重量级适用于较大规模运维场景,而ansible较轻量级在较大规模站点的功能显得不那么强。
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, }
时间: 2024-10-01 07:47:47