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

[经验分享] puppet案例解析

[复制链接]

尚未签到

发表于 2018-8-2 11:59:50 | 显示全部楼层 |阅读模式
  某公司新到500台服务器,需要安装Linux系统,并部署上线以及后期的管理配置。对于系统安装,这个时候肯定得采用批量安装的,常见批量安装方式有大家熟知的Kickstart和Cobbler,具体配置方法,网上也有很多好文章,这里略过。
  提示:如果采用自动安装的话,我们可以自动初始化系统、内核简单优化、及常见服务、软件客户端等安装。当然Puppet客户端也可以放在Kickstart中安装并配置完毕。
  当系统稳定运行后,现在我们需要调整和管理部分服务器,例如要修改100台服务器的系统参数、远程执行命令等,这时候如何操作呢?我们可能会想到脚本,想法很好,如果让你手动去100台服务器执行同样的脚本、或者修改某一个配置,是不是也浪费时间呢,利用Puppet可以在几分钟、甚至数秒内全部搞定。
  二、实际案例配置
  现在有一个需求,需要修改100台Linux服务器上的crontab ntp时间服务器地址,原服务器crontab NTP配置段为:
  0 0 * * * /usr/sbin/ntpdate pool.ntp.org >>/data/logs/crontab/ntpdate.log 2>&1
  现在需要调整为内部自建的服务器地址10.1.1.21,并且修改同步的时间,如下:
  0 */5 * * * /usr/sbin/ntpdate 10.1.1.21 >>/data/logs/crontab/ntpdate.log 2>&1
  编写puppet ntp模块:
  Vi /etc/puppet/modules/ntp/manifests/init.pp
  class ntp {
  Exec { path =>”/bin:/sbin:/bin/sh:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin”}
  exec {
  “auto change crontab ntp config”:
  command =>”sed -i -e ‘/ntpdate/s/0/*\/5 /2′ -e ‘s/pool.ntp.org/10.1.1.21/’ /var/spool/cron/root”,
  }
  }
  这段代码的注解:创建ntp模块,利用exec资源远程执行一条命令,同样可以举一反三,其他的修改和配置都可以参考此方法。其中Exec path的意思是定义全局path。如果不定义的话,每一次exec资源都要定义一个path路径。
  二、实际案例配置
  当我们有大规模集群的时候,所有服务器要求要求数据一致,可以采用rsync同步,配置rsync服务器端,客户端执行脚本命令即可。同样可以使用puppet+脚本来同步,这样比较快捷,当然也可以使用puppet rsync模块。Rsync配置此处忽略,直接上puppet代码:
  ##定义www模块
  class www {
  ##定义全局path
  Exec { path =>”/bin:/sbin:/bin/sh:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin”}
  ##推送sh脚本到客户端,192-9-117-162-tdt.com为服务端
  file {
  “/data/sh/rsync_www_client.sh”:
  source =>”puppet://192-9-117-162-tdt.com/files/www/rsync_www_client.sh”,
  owner =>”root”,
  group =>”root”,
  mode =>”755″,
  }
  ##推送密钥文件到客户端,权限设置为600
  file {
  “/etc/rsync.pas”:
  source =>”puppet://192-9-117-162-tdt.com/files/www/rsync.pas”,
  owner =>”root”,
  group =>”root”,
  mode =>”600″,
  }
  ##远程执行命令,备份原有程序,并判断rsync客户端脚本是否有修改,如果有变化,则执行。
  exec {
  “auto backup www data”:
  command =>”mkdir -p /data/backup/`date +%Y%m%d`;mv /data/index /data/backup/www/`date +%Y%m%d` ; /bin/sh /data/sh/rsync_www_client.sh “,
  user =>”root”,
  subscribe =>File["/data/sh/rsync_bus_client.sh"],
  refreshonly =>”true”,
  }
  }
  三、测试puppet
  注*这里如果要使用Puppetrun(Puppet kick)推送功能的话,需要提前配置好客户端,并在客户端授权允许服务端发送信号,具体配置文章可查看:
  在服务器端执行:
  puppet kick –d –host `cat puppet.txt`
  Cat Puppet.txt内容为需要同步的客户端的主机名:
  192-9-117-163-tdt.com
  192-9-117-164-tdt.com
  192-9-117-165-tdt.com
  1、如何在master端对客户端进行分组?除了正则还可以用什么?
  2、当服务器数量不断增加,一台puppe tmaster肯定很吃力,如何扩展?如何更好的维护和统一管理puppet node配置?
  3、如何结合SVN直接提交代码?等等问题。

运维网声明 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-545339-1-1.html 上篇帖子: Puppet之File资源参数 下篇帖子: Puppet条件语句,class,module的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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