自动化运维之 Puppet 实战

随着IT行业的迅猛发展,传统的运维方式靠大量人力比较吃力,近几年自动化运维管理快速的发展,得到了很多IT运维人员的青睐,一个完整的自动化运维包括系统安装、配置管理、服务监控三个方面。那今天咱们大家一起来学习一下Puppet实际运维中的案例。仅供参考,欢迎大家提更多的意见!

一、应用背景

某公司新到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.ppclass 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.com192-9-117-164-tdt.com192-9-117-165-tdt.com

四、puppet总结

本文仅供参考,通过了解和学习,我们可以更加深入的去理解Puppet工作原理以及深入配置,举一反三:

1、如何在master端对客户端进行分组?除了正则还可以用什么?

2、当服务器数量不断增加,一台puppe tmaster肯定很吃力,如何扩展?如何更好的维护和统一管理puppet node配置?

3、如何结合SVN直接提交代码?等等问题。

(0)

相关推荐

  • 6要点助你开发自动化运维架构

    运维自动化是我们所渴望获得的,但是我们在一味强调自动化能力时,却忽略了影响自动化落地的一个关键因素.那便是跟运维朝夕相处,让人又爱又恨的业务架构. 操作方法 01 要点一:架构独立 任何架构的产生都是 ...

  • 开发自动化运维架构六要素

    运维自动化是我们所渴望获得的,但是我们在一味强调自动化能力时,却忽略了影响自动化落地的一个关键因素.那便是跟运维朝夕相处,让人又爱又恨的业务架构. 操作方法 01 要点一:架构独立 任何架构的产生都是 ...

  • Linux运维工程师必学必备的8项IT技能

    成长一名Linux工程师之后,才知道一路走来,背后的心酸.非常感谢支持我的同伴与老师,是你们鼓励我,坚持到底,才在这个行业立足. 如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学 ...

  • Linux运维工程师必学技能

    操作方法 01 成长一名Linux工程师之后,才知道一路走来,背后的心酸.非常感谢支持我的同伴与老师,是你们鼓励我,才在这个行业立足. 如果你在学习Linux,那么强烈推荐你选择RHEL和Centos ...

  • 运维工作的四大纪律九项注意

    在<Linux就该这么学>中,我们学习到了运维工作相关的技能,本文将介绍运维工作的四大纪律九项注意 操作方法 01 一.一切行动听指挥 甭管你是团队,还是团伙,要求都是一样的,一切行动听指 ...

  • 运维自动化核心_Python的重要性(新人必看!)

    前段时间,在深圳举办了一场关于Python开发的沙龙,主题是关于用 Python在测试,运维,开发,游戏,人工智能,包括新起的VR技术等领域相关的拓展和发展 总结只需要学会一门语言,就可以实现整个应用 ...

  • LINUX运维实战案例之文件已删除但空间不释放问题的分析与解决办法

    LINUX运维实战案例之文件已删除但空间不释放问题的分析与解决办法

  • 远程桌面管理软件(设备远程运维管理系统)

    随着技术的发展,测试行业也慢慢和运维靠拢,与devops对应,诞生了testops的概念.所以各位测试同学务必建立起一定的运维知识.在传统的运维或者测试工作当中,对于机器的远程桌面管理一直是很常规的工 ...

  • 谈谈Linux运维人员是否需要掌握一门编程语言

    最近经常有同行的朋友或者Linux初学者问我: 运维人员是否需要学一门语言,那么该学哪种语言呢? 对于这个问题,我分两个方面回答: 首选,在大数据.云计算发展迅猛的今天,系统运维人员如果不懂一点开发语 ...