设为首页 收藏本站
查看: 836|回复: 0

[经验分享] linux运维学习之自动化运维工具Puppet-Linux运维

[复制链接]

尚未签到

发表于 2018-8-1 12:35:47 | 显示全部楼层 |阅读模式
    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>中有几个是我们常用的选项,比如:
      apply:本地使用puppet,也就是单机模型的必需选项
      agent:我们下章的master/agent模型使用的必需选项
      cert:Puppet的证书相关,既然使用的https xmlrpc来通信,自带了CA和cert
      describe:这个选项特别重要,资源,是我们在进行控制时可以使用的类似Ansible的一些模块,我们可以使用puppet describe --help来查看都支持哪些资源
      device:网络设备远程管理
      doc:文档相关
      facts:系统变量相关,Puppet还可以调用系统变量,不过不管是定义还是调用,都要使用$
      
    一般来说,我们接触过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,使用这个看选项参数
    举个例子,我们想安装一个nginx服务,安装后启动,开机自启动。
    首先我们先要定义一个以.pp结尾的文件,puppet的资源清单就是这么定义的,比如为install.pp,内容如下:
  package{'nginx':
    name => &quot;nginx&quot;,  #name指定安装包为nginx
    ensure => installed,  #安装方式为默认yum安装
  }
  service{'nginx':
    ensure => running,  #服务名称为nginx的启动
    enable => true,  #开机启动为true
  }
    有个可能看出来了,这个格式是怎么回事?为什么有的有name,有的没有name,service没有name会不会不知道启动哪个服务,你这些参数怎么查到的?
    首先格式:
  type {'title':
    attribute1  => value1,
    atrribute2  => value2,
  ……
  }
  注意:type必须使用小写字符;title是一个字符串,在同一类型中必须惟一,资源清单一般以.pp结尾;
    其次是name没有定义的问题,资源属性中有一个为namever的属性,当你不定义时,会自动引用title的名称为name。
    最后是关于这些资源的查询与用法,比如我们先用的是package,所以我们可以这样查询,puppet describe package -m -s,查看简短的介绍
DSC0000.jpg

    属性是可以了,那么怎么用呢?有什么选项呢?我们可以使用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']

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544790-1-1.html 上篇帖子: CentOS7 puppet安装教程 下篇帖子: puppet常用资源类型与使用方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表