puppet是一种基于ruby语言开发的平台的集中配置管理系统。它使用自有的puppet描述语言,可管理配置文件file、用户user、cron任务、软件包、系统服务等系统实体。通过编写配/etc/puppet/manifests或/etc/puppet/modules下pp格式文件,控制执行同步的内容。puppet agent定时请求puppe master进行同步安装包解压并安装软件。

我们现有设备都已经安装好puppet环境, 首先在 /etc/hosts文件添加master和angent的ip、hostname信息,ruby为1.8.7版本(puppet对Ruby1.8.7的完美支持),facter为2.3.0版本,hiera为3.3.1版本,puppet为3.7.5版本。

facter(或者称为fact)用于收集关于主机的信息,来帮助定制Puppet配置。

hiera是一个强大的puppet外部节点分类器(ENC),利用这个套件,可以大大减少部署中的重复配置。更加灵活高效的配置和管理变量,类,节点配置。

安装过程参考:https://yq.aliyun.com/articles/43209#,master需要安装puppet-server插件。

2、配置文件说明

puppet主要配置文件:

agnet配置将/puppet-3.7.5/ext/redhat目录下的puppet.conf、fileserver.conf、拷贝到/etc/puppet目录。

/etc/puppet/puppet.conf为主配置文件主要用于设置相关的参数、认证文件、文件系统配置文件、插件配置等。

/etc/puppet/fileserver.conf为文件服务器配置文件,主要用于配置同步master安装包存放的路径。

/etc/puppert/auth.conf为认证配置文件,安装过程中自动生成。

如需要客户端自动认证,创建/etc/puppet/autosign.conf配置文件,配合puppet.conf使用。

还需要在/etc/hosts文件添加master和agent的ip、hostname对应信息。

、配置

puppet主要配置文件默认在/etc/puppet/路径如下,举例说明:

  1. agent配置

agent端需要auth.conf和puppet.conf配置文件,auth.conf采用默认的配置(附录有说明),只需配置puppet.conf主配置文件,其主要配置说明如下:

2master安装配置

安装

现所有设备puppet都是3.7.5版本,master端需要通过安装包进行安装,解压puppet-3.7.5.tar.gz后进入目录,执行ruby install.rb,执行bin下的./puppet master,即可启动puppet master服务。

配置

在启动puppet master之前要进行一系列的配。master端auth.conf采用默认配置即可,主配置文件puppet.conf配置如下:

其中server和ca_server为master的hostname。pluginsync为开启插件同步配置项一般为false。

fileserver.conf是一项安全配置,结合puppet.conf、auth.conf一起使用。配置puppet客户端允许/禁止访问master的文件目录。通过puppet服务端可以向agent上推送文件 。allow *允许任何通过认证的agent同步,path是同步的源目录,实例配置如下,如果/etc/puppet/modules/genfiles目录不存在则创建。

master的environment.conf配置文件如下:

manifest = /etc/puppet/manifests

modulepath = /etc/puppet/modules:/usr/share/puppet/modules

master配置好执行puppet master启动进程。也可以拷贝cp /puppet-3.7.5/ext/redhat/server.init /etc/init.d/puppetmaster,设置权限chmod u+x /etc/init.d/puppetmaster,执行/etc/init.d/puppetmaster start来启动master进程。

申请认证

1、首次申请认证

agent端在第一次连接master端时,会向master端申请证书。如果master端没有授予agent端证书,那么agent端和master端之间的连接是不会建立成功的。

此时agent端会持续等待master端授权证书,并会每隔2分钟去检查master端是否签发证书。

agent向master申请证书puppet agent -server $master hostname

后台启动angent指令为puppet agent server $master hostname daemon。

agent端申请证书完毕后,切换到master端使用puppet cert命令来对agent端授权证书。puppet cert list查看master端有哪些主机在申请证书。

给agent端授权证书,使用如下命令:puppet cert sign $certificate name

如果实际生产环境客户端数量比较多的话,我们可以一次性授权所有证书:puppet cert sign –all

master执行puppet cert –all查看认证通过的agent以及master的证书。

可以查看/var/log/message日志文件,查看运行过程中产生的log。

3、查看认证

在master端授权完毕后,我们现在切换到agent端查看授权的证书文件,如下:ll /var/lib/puppet/ssl/certs。

master端查看授权的认证执行命令:puppet cert -all。

3、自动认证

也可以设置成自动授权认证,不提倡使用该方法,存在安全隐患。puppet服务端自动认证修改puppet配置文件实现自动给客户端签名。编辑/etc/puppet/puppet.conf添加如下内容:

[master]

autosign=true

autosign = /etc/puppet/autosign.conf

再编辑 /etc/puppet/autosign.conf
添加 * 表示所有,或者添加域名,举例:

*.oss.letvcdn.com

4、删除认证

指定删除:puppet cert --clean $ certificate name

删除所有:puppet cert --clean -all

puppet代码文件

master接收到agent的请求后,会查找自己的manifests及相关的配置,master默认情况下manifests入口就是/etc/puppet/manifests/site.pp文件,它会读取这个文件来查找请求主机的节点的定义的类和资源。同时site.pp文件可以inlcude或import其他以pp文件,从而实现针对不同的agent请求,同步不同的资源。

我们在site.pp文件中定义一些入口配置和全局的配置。

  1. 测试环境中的配置

pp文件用于控制agent和master同步和操作,当agent向master请求同步时,master解析pp文件里的内容进行和agent的同步和操作,我们可以在该pp文件中指定同步哪些文件,执行哪些指令。

1、/etc/puppet/modules/nodes/manifests/ad-8000.pp针对agent名为ad-8000的授权访问请求的资源配置文件。

2、/etc/puppet/modules/common/manifests/init.pp为共有的资源配置文件,可配置成所有agent通用的安装包或安装脚本。

3、在/etc/puppet/manifests/site.pp全局配置文件中包含:import "../modules/nodes/manifests/ad-8000.pp",ad-8000.pp包含公用的配置模块include common,当名为ad-8000的agent向master请求资源时,就会解析/etc/puppet/modules/nodes/manifests/ad-8000.pp配置文件,进行远程同步。该配置可以解决针对特定agent请求特定配置的同步方案。

4、也可在在/etc/puppet/manifests/site.pp添加node default{}配置,若agent请求时找不到该agent名的配置模块,就会进入default配置,执行远程同步配置。

例如:以下例子实现了agent和master同步和解压安装操作。

master端pp入口文件/etc/puppet/manifests/site.pp配置如下:

site.pp包含了CC_install_test.pp文件,文件内容如下:

file指定了同步哪些文件,exec指定了同步文件后执行哪些操作。file首先指定agent同步文件后存放目录。

source指定了master源文件路径,before指定file里的操作要前于exec操作,先保证文件同步在做解压等操作,避免tar找不到文件。

exec的onllyif判断条件,用于判断同步的文件存在后再做command操作,timeout设置超时时间0为不设置超时,try_sleep设置命令重试的间隔时间。

附录

auth.conf认证配置配置文件,参考puppet ACL配置语法。其语法规则如下:

path [~] {/path/to/resource|regex}  #目录配置

[environment {list of environments}]    #环境配置

[method {list of methods}]      #方法命令配置

[auth[enthicated] {yes|no|on|off|any}]  #授权配置

[allow {hostname|certname|*}]       #允许配置

例如:path /facts

auth yes

method find, search

allow magpie.example.com, dashboard.example.com

#意思是允许主机名为"magpie.example.com"和 "dashboard.example.comd的两台客户端在facts目录进行find和search操作

使用puppet自动化升级安全程序相关推荐

  1. Python实现简单自动升级exe程序版本并自动运行,适合Python自动化运维。

    Python自动升级exe程序版本并自动运行,Python自动更新脚本,适合Python自动化运维. 一.此教程是使用bat脚本+NFS实现自动更新.(也可以使用FTP或者使用html实现自动更新) ...

  2. 【Python】自动化升级所有pip安装的包

    #-*- coding:utf-8 -*-import osimport redef update():pipList = os.popen('pip3 list').readlines() #这里就 ...

  3. C#做的在线升级小程序

    转自原文C#做的在线升级小程序 日前收到一个小任务,要做一个通用的在线升级程序.更新的内容包括一些dll或exe或.配置文件.升级的大致流程是这样的,从服务器获取一个更新的配置文件,经过核对后如有新的 ...

  4. puppet自动化运维之puppet的资源基础知识

    2019独角兽企业重金招聘Python工程师标准>>> puppet自动化运维之puppet的资源基础知识 此篇文章,主要是让读者提前了解puppet资源的一些知识. 变量和数组会经 ...

  5. 远程升级stm32程序_STM32IAP远程升级带C#上位机

    关注"电子芯吧客" ,每周都有精彩文章推荐 在很多场景应用中需要我们的控制器能够实现远程升级,比如我之前做的一个项目中,项目的主要需求就是老师的电脑能够获取学生的实验设备的实验数据 ...

  6. 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级STM32程序,基于Wi-Fi,同时支持升级Wi-Fi,APP控制版)...

    https://www.cnblogs.com/yangfengwu/p/10456306.html 视频教程 https://www.bilibili.com/video/av54942955/ 请 ...

  7. api自动化_如何在不增加人员的情况下自动化API安全程序

    api自动化 在这篇文章中,我们将撰写一篇综合文章,内容涉及如何在不增加人员的情况下自动执行API安全程序. 在现代世界中,数据对于提供者和消费者都至关重要. 数据科学的出现证明了这一事实. 对于某些 ...

  8. 如何在不增加人员的情况下自动化API安全程序

    在这篇文章中,我们将撰写一篇综合文章,内容涉及如何在不增加人员的情况下自动执行API安全程序. 在现代世界中,数据对于提供者和消费者都至关重要. 数据科学的出现证明了这一事实. 对于某些组织,整个业务 ...

  9. node升级命令_Vue CLI 4 发布:自动化升级过程,支持自定义包管理器

    作者 | Swanand Kadam 译者 | 无明 Vue CLI[1] 团队最近把他们的命令行工具更新到了 4.0.0 版本.这一版本可以帮助开发者自动化升级过程,可以使用额外的包管理器,并可以更 ...

  10. 52.puppet自动化运维工具

    puppet自动化运维工具 Puppet是一款运维自动化工具,在一些大型的互联网企业,它可以针对多台服务器进行统一操作,如统一部署软件,进行统一上线维护等,意思就是说在一台linux服务器上所部署的操 ...

最新文章

  1. CentOS-7-64bit 配置Apache + MySQL + PHP
  2. 数据结构之表(5)栈的顺序实现
  3. opeansea, nft, trend
  4. msysGit管理GitHub代码
  5. Spring 常见的一些面试题整理
  6. Sql Server之旅——第十二站 sqltext的参数化处理
  7. 如何在PHP中使用cURL连接到Tor隐藏服务?
  8. 信号量有没有容量限制?
  9. 《Adobe After Effects CS5经典教程》——1.6 预览
  10. oracle中聚合比较函数,Oracle 分析函数与聚合函数区别
  11. 软考高项历年作文真题
  12. codebook 背景减除
  13. 微信支付跨平台软件架构
  14. 离职原因之3B分类问题
  15. 计算机考试试题及答案
  16. python 发包的方法_有没有快一点的Python扫描发包方法,原来的速度好慢
  17. 小区安装人脸识别系统,先回答五大安全问题
  18. 简易android通讯录
  19. 如何通过移动广告平台实现手游推广
  20. 【基础课程】计算机网络

热门文章

  1. C++获取SMART信息
  2. 对许多张图片进行批量裁剪,看看我是如何快速做到的
  3. 使用百度统计对网站进行流量分析和统计
  4. 朴素贝叶斯实战:人群收入预测(基于美国人口普查收入数据)
  5. 机器学习-数据科学库 12 美国人口数据分析案例
  6. oppo小布机器人_OPPO小布助手2.0全新版本来袭,做你身边最聪明的AI语音助手
  7. android自定义View之气球碰撞效果
  8. 数据仓库项目实例(马蜂窝数据仓库)
  9. linux segmentation fault 信号,linux中 Segmentation fault问题
  10. [ACMMM2018]BeautyGAN: Instance-level Facial Makeup Transfer with DeepGenerative Adversarial Network