linux运维学习之自动化运维工具Puppet

  Puppet是集中配置管理系统,能够说使咱们Ansible的升级版,当咱们的服务器集群过于大时,Ansible就可能力不从心了,咱们知道Ansible是基于ssh的链接,而咱们的Puppet则是经过https xmlrpc连接,安全系数明显上了一个层次。
  Puppet的工做模式,是经过对Puppetmasterd进行更改,client每隔半个小时取一次数据,无论对数据的处理成功与否,都要返回一个报告,通知到master,Puppet有两种工做模型,一种是单机模型,一种是master/agent模型,看名字都知道一种是在本地本身玩本身的,一种是管理从的,咱们今天就先来玩一下单机模型。
  单机模型甚至都不用开启Puppet服务,直接可使用命令,固然了命令的格式很长,可是Puppet提供很好的帮助文档来帮助咱们对该命令的使用,咱们可使用Puppet help查看具体语法和相关选项。
  语法:puppet <subcommand> [options] <action> [options]
  <subcommand>中有几个是咱们经常使用的选项,好比:linux

    apply:本地使用puppet,也就是单机模型的必需选项
    agent:咱们下章的master/agent模型使用的必需选项
    cert:Puppet的证书相关,既然使用的https xmlrpc来通讯,自带了CA和cert
    describe:这个选项特别重要,资源,是咱们在进行控制时可使用的相似Ansible的一些模块,咱们可使用puppet describe --help来查看都支持哪些资源
    device:网络设备远程管理
    doc:文档相关
    facts:系统变量相关,Puppet还能够调用系统变量,不过无论是定义仍是调用,都要使用$
    nginx

  通常来讲,咱们接触过Ansible以后,再来瞅Puppet,会简单的多,咱们Puppet也是编写一些相似剧本同样的资源清单,来调用资源进行管理,那么咱们可用的资源都有什么呢?
  咱们使用puppet describe --list查看全部的清单列表,咱们介绍几种经常使用的:安全

  cron:计划任务相关的,相似于Ansible的cron模块
  exec:执行外部命令
  file:文件相关
  group:用户组相关
  host:主机相关
  mount:挂载相关
  notify:通知机制
  package:安装包相关,相似于Ansible的yum,不过package能够指定以什么方式安装
  service:服务相关的
  yumrepo:yum仓库先关
  ...
  服务器

  有不少的资源,咱们何时用,何时查,不过死记硬背,固然咱们知道了资源名,怎么用啊,我具体分为三步:网络

  1 puppet describe --list:查看都有什么资源
  2 puppet describe file -m -s:查看file的简短的providers和元参数,使用这个查出选项
  3 puppet describe file -p:查看file的一些providers,使用这个看选项参数app

  举个例子,咱们想安装一个nginx服务,安装后启动,开机自启动。
  首先咱们先要定义一个以.pp结尾的文件,puppet的资源清单就是这么定义的,好比为install.pp,内容以下:运维

package{'nginx':
  name => "nginx",  #name指定安装包为nginx
  ensure => installed,  #安装方式为默认yum安装
}ssh

service{'nginx':
  ensure => running,  #服务名称为nginx的启动
  enable => true,  #开机启动为true
}ide

  有个可能看出来了,这个格式是怎么回事?为何有的有name,有的没有name,service没有name会不会不知道启动哪一个服务,你这些参数怎么查到的?工具

  首先格式:

type {'title':
  attribute1 => value1,
  atrribute2 => value2,
……
}
注意:type必须使用小写字符;title是一个字符串,在同一类型中必须唯一,资源清单通常以.pp结尾;

  其次是name没有定义的问题,资源属性中有一个为namever的属性,当你不定义时,会自动引用title的名称为name。

  最后是关于这些资源的查询与用法,好比咱们先用的是package,因此咱们能够这样查询,puppet describe package -m -s,查看简短的介绍

linux运维学习之自动化运维工具Puppet

  属性是能够了,那么怎么用呢?有什么选项呢?咱们可使用puppet describe package -p查看具体属性怎么用,那么既然package能够查的到那咱们的service也是妥妥的可使用了。

  咱们配置好以后,可使用puppet apply -v --noop install.pp来试运行一下,若是没有报错,去掉--noop再运行,能够提升正确率哦,其中有些经常使用选项,我来和你们介绍一下:

  -v:详细输出

  -d:debug模式,输出极为详细

  --noop:调试模式,试运行,能够提早排错

  -l PATH:输出结果到指定文件中

  资源间有的还存在一些依赖关系,好比咱们直接启动服务,而服务没有安装完成怎么办?因此资源间的次序可使用一些属性before、require、notify和subscribe来定义,咱们有多种方法,定义这种依赖关系:

  1 在package下加入一行before => Service['nginx']  2 在service下加入一行require => Package['nginx'],  3 package的}后面加入->也能够实现一依赖关系  4 在因此资源定义的下面,本身一行 Package['nginx'] -> Service['nginx']

相关文章
相关标签/搜索