Puppet--自动化运维工具基本功能介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Puppet--自动化运维工具基本功能介绍相关的知识,希望对你有一定的参考价值。

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,
}
































以上是关于Puppet--自动化运维工具基本功能介绍的主要内容,如果未能解决你的问题,请参考以下文章

自动化运维之Puppet服务部署

?自动化运维工具介绍(第一章)

ansible puppet saltstack三款自动化运维工具的对比

自动化运维工具puppet详解

自动化运维工具之Saltstack

puppet部署与应用