Puppet 更新方式

基于C/S架构的Puppet更新方式一般有两种,一种是Agent端设置同步时间主动去Puppet Master端拉取配置,另一种是通过Puppet Master端使用puppet kick命令或者借助mcollctive触发更新配置.

1.主动更新

优点:

节点定期主动更新,无论是谁将节点被puppet管理的配置更改了,都会在规定的时间内自动修复,无须管理员登录查看。

环境搭建简单,不需要很复杂的架构,puppet本身C/S架构便可以完成。

缺点:

节点数量过大的情况下同时会向puppetmaster端发起更新请求,会造成puppetmaster性能瓶颈。当然,也有一些解决方案比如设置任务计划,节点分批进行更新。

由于节点会定期向puppet master端提取配置进行更新,这要求puppet master端的环境要足够的安全.

不能手动控制哪些服务器需要更新,哪些不需要更新。

自动更新方式配置很简单,只需要在节点配置文件puppet.conf添加runinterval字段即可实现自动更新,以下步骤简单测试下
注:默认情况下,puppet.conf配置文件中是没有runinterval字段的,如果不配置,默认是每隔30分钟自动同步一次。

1).更改agent配置文件.添加runinterval字段.

[email protected]:puppet# cat puppet.conf
[main]
    # The Puppet log directory.
    # The default value is ‘$vardir/log‘.
    logdir = /var/log/puppet

    # Where Puppet PID files are kept.
    # The default value is ‘$vardir/run‘.
    rundir = /var/run/puppet

    # Where SSL certificates are kept.
    # The default value is ‘$confdir/ssl‘.
    ssldir = $vardir/ssl

[agent]
    # The file in which puppetd stores a list of the classes
    # associated with the retrieved configuratiion.  Can be loaded in
    # the separate ``puppet`` executable using the ``--loadclasses``
    # option.
    # The default value is ‘$confdir/classes.txt‘.
    classfile = $vardir/classes.txt

    # Where puppetd caches the local configuration.  An
    # extension indicating the cache format is added automatically.
    # The default value is ‘$confdir/localconfig‘.
    localconfig = $vardir/localconfig
    server = puppet.domain.com

    runinterval = 10

(2)重启客户端服务

[email protected]:puppet# /etc/init.d/puppet restart
Stopping puppet agent:                                     [  OK  ]
Starting puppet agent:                                     [  OK  ]

(3)查询日志,可以看出每隔10秒agent向puppet master同步一次

[email protected]:tmp# tail -f /var/log/messages
Dec 12 10:25:21 agent puppet-agent[12155]: Finished catalog run in 0.06 seconds
Dec 12 10:25:31 agent puppet-agent[12280]: Finished catalog run in 0.05 seconds
Dec 12 10:25:41 agent puppet-agent[12405]: Finished catalog run in 0.07 seconds
Dec 12 10:25:51 agent puppet-agent[12530]: Finished catalog run in 0.06 seconds
Dec 12 10:26:01 agent puppet-agent[12655]: Finished catalog run in 0.05 seconds
Dec 12 10:26:11 agent puppet-agent[12780]: Finished catalog run in 0.13 seconds

(4)还可以通过命名方式去测试.

[email protected]:puppet# /etc/init.d/puppet stop
Stopping puppet agent:                                     [  OK  ]
[email protected]:puppet#
[email protected]:puppet# puppet agent --verbose --no-daemonize
Notice: Starting Puppet client version 3.7.3
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for agent.domain.com
Info: Applying configuration version ‘1418292313‘
Notice: Finished catalog run in 0.07 seconds
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for agent.domain.com
Info: Applying configuration version ‘1418292313‘
Notice: Finished catalog run in 0.04 seconds
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for agent.domain.com
Info: Applying configuration version ‘1418292313‘
Notice: Finished catalog run in 0.10 seconds

2.推送更新

推送更新就是通过puppet kick或者mcollective来控制节点什么时候向puppetmaster端获取配置变更信息。这种方式比较容易控制,主要表现在以下几个方面:

优点:

非常容易控制节点的更新周期
安全性比较高,每次更新之前可先检查好代码后再更新
可以针对某一个cluster(一组服务器)进行推送更新,灵活性很强。
扩展性很强,可整合各种其他平台

缺点:
环境搭建比较复杂,需要部署N多东西
agent端配置被篡改后,需要手动触发才能够恢复,不能够及时恢复

1).puppet kick方式

puppet kick是是通过puppetmaster端的命令触发的方式进行更新的,由于其锁的问题很难解决外加上主机单元控制不是很灵活,逐渐被抛弃了,puppetlabs也看到了这一点,因此收购了mcollecitve。

2).mcollective触发方式 需要搭建mcollective+MQ架构,搭建好了之后通过mco命令将puppet命令传输至MQ分配到一组节点上去.

该方式后续会单独写一篇文档介绍.

时间: 2024-10-13 11:26:14

Puppet 更新方式的相关文章

SQLite复杂表的更新方式

SQLite复杂表的更新方式 在SQLite中,如果早期设计的表无法满足需要,就需要对表进行更新,如修改名字.添加列.如果针对简单表,修改起来相对容易,直接使用提供的ALTER命令即可.但是如果该表与视图.触发器.索引有关联,处理起来就相对繁琐一些.下面讲解这类表的修改方式. (1)使用以下命令,备份视图.触发器的SQL脚本. SELECT  sql FROM  main.sqlite_master WHERE type='view' or type='trigger' (2)关闭外键约束. P

ListView混搭ProgressBar最佳更新方式

很多时候我们都通过BaseAdapter.getView()中的convertView来提高ListView的性能,这个时候如果我的的ListView的Item里有一个正在更新ProgressBar,结果就悲惨了... 滑动界面时并没有达到我们想要的效果.解决这个问题其实很容易,在数据集中保存一下更新的进度,然后在getView中不断去设置进度. 还有一个问题就是,当有进度更新的时候,我们是要不断mAdapter.notifyDatasetChanged()来更新ListView吗?这样做当然可

Android cookies正确的更新方式

之前的更新方式 一搜cookies的使用,很容易搜到很多文章,基本的几步大致相同,如下图: 基本上都要求大家先调用cookieManager.removeAllCookie()或者调用 cookieManager.removeSessionCookie(),这样确实每一次的setCookie都能写入新的cookie,简单粗暴有效. 遇到的问题 大家看setCookies的方法: /** * Sets a cookie for the given URL. Any existing cookie

ListView嵌套ProgressBar更新方式

很多时候我们都通过BaseAdapter.getView()中的convertView来提高ListView的性能,这个时候如果我的的ListView的Item里有一个正在更新ProgressBar,结果就悲惨了... 滑动界面时并没有达到我们想要的效果.解决这个问题其实很容易,在数据集中保存一下更新的进度,然后在getView中不断去设置进度. 还有一个问题就是,当有进度更新的时候,我们是要不断mAdapter.notifyDatasetChanged()来更新ListView吗?这样做当然可

Win10系统将启用更智能的更新方式

使用Win10系统的你肯定遇到过在工作时开始自动更新而不得不搁置工作的情况,想必你也已经被Win10系统的自动更新折磨不已,不过这种情况将会马上得到改观.微软现在已经开始寻找更智能的版本升级更新方式,其新开发的预测模型将尝试确定你是否正在工作,以确保在不中断工作的情况下提供更新,来消除这种恼人的行为.之前微软发布新版本后,其系统升级更新习惯对于用户来说是一种痛苦,但微软向用户保证,它已经知道了用户这方面的困扰,并正在努力的寻找答案. 新的预测模型,新的升级更新方式 在创作者版本的更新中,它将试图

WebSphere应用程序更新方式

在日常的使用中,一个javaee程序部署以后,以后续的使用中会有模块等的更新,但我经常见到有人直接更新服务器上的类包,文件等,(可能是tomcat,jboss这种热部署使用惯了)这样子的方式有几个问题. 问题: was一般在正式环境是多服务器集群,修改时需要每个服务器都做更新,容易出错. 修改后的文件因为不受was管理,在备份时仍然是旧的文件包,这样子在做服务器迁移时应用时出现许多意想不到情况. 更新方式 其实was对应用程序的更新提供多种灵活的方式.有如下4种: 替换整个应用程序 替换或添加单

Nessus 插件更新方式| nasl脚本

介绍: Nessus Home版是Nessus的一个免费版本,注册之后即可使用,虽然功能上有限制,但是仍然是个为人称道的渗透工具,官网下载安装后注册即可使用,首先会从官方下载插件,无奈,自动下载失败,人们说挂VPN就可以了. 官方说会自动更新.也可以用命令来立刻更新插件. 使用安装目录下的nessuscli可以更新. 这里我们还可以看到nasl解析器.附上nasl脚本编写教程和nessus插件编写教程: nasl解析器用来调试插件是很好用的,使用方法见help. 1.简介 1.1.什么是NASL

puppet更新失败

# puppet-updatepuppet: no process foundWarning: Unable to fetch my node definition, but the agent run will continue:Warning: Error 400 on SERVER: Could not retrieve facts for xx-xx-xx-xx.xxxx.xx: Failed to find facts from PuppetDB at xx-xx-xxx-x.loca

动态更新echart成交量柱状图,并且不重绘,类似K线的更新方式

function setoption(data) { let dataVolume=volumeChartData; var option = { title: { text: '成交量',// subtext: '纯属虚构' }, tooltip: { trigger: 'axis' }, legend: { data:['最新成交价'] },// toolbox: {// show: true,// feature: {// dataView: {readOnly: false},// re