随着IT行业的快速发展,传统的运维方式需要大量的人力。近年来,自动化运维管理的快速发展得到了众多IT运维人员的青睐。完整的自动化运维包括系统安装、配置管理、服务监控三个方面。今天就和大家一起来了解一下Puppet在实际运维中的案例。仅供参考,欢迎补充! 1。应用背景 某公司新增500台服务器,需要安装Linux系统,上线部署,后期管理配置。对于系统安装,此时必须采用批量安装。常见的批量安装方式有大家熟知的Kickstart和Cobbler。具体配置方法网上有很多不错的文章,这里略过。 提示:如果采用自动安装,我们可以自动初始化系统,简单优化内核,安装常用服务和软件客户端。当然,Puppet客户端也可以在Kickstart中安装配置。 当系统运行稳定后,现在我们需要对一些服务器进行调整和管理,比如修改100台服务器的系统参数,远程执行命令等,这时候怎么操作呢?我们可能会想到脚本,这是个好主意。如果让你在100台服务器上手动执行同一个脚本或者修改某个配置,会不会浪费时间?使用Puppet,它可以在几分钟甚至几秒钟内完成。 2。实战配置 现在需要修改100台Linux服务器上的crontabntp时间服务器地址。原服务器的crontabNTP配置部分为: 00***/usr/sbin/ntpdatepool.ntp.org>>/data/logs/crontab/ntpdate.log2>&1 现在需要调整为内部自建服务器地址10.1.1.21,修改同步时间如下: 0*/5***/usr/sbin/ntpdate10.1.1.21>>/data/logs/crontab/ntpdate.log2>&1 编写人偶ntp模块: Vi/etc/puppet/modules/ntp/manifests/init.pp classntp{ exec{path=>”/bin:/sbin:/bin/sh:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin”} exec{ "自动更改crontabntp配置": command=>"sed-i-e'/ntpdate/s/0/*\/5/2'-e's/pool.ntp.org/10.1.1.21/'/var/spool/cron/root", } } 这段代码的注释:创建一个ntp模块,使用exec资源远程执行命令,也可以举一反三例如,其他的修改和配置都可以参考这个方法。其中,Execpath表示定义全局路径。如果未定义,则每个exec资源必须定义一个路径路径。 2。实战案例配置 当我们有一个大规模的集群时,所有的服务器都需要一致的数据。可以使用rsync进行同步,配置rsync服务器,在客户端执行脚本命令。也可以使用puppet+脚本同步,速度更快,当然也可以使用puppetrsync模块。这里忽略rsync配置,直接上puppet代码: ##definewwwmodule classwww{ ##defineglobalpath 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", 组=>”root”, mode=>”600″, } ##远程执行命令,备份原程序,判断rsync客户端脚本是否被修改。如果有变化,则执行。 exec{ “自动备份www数据”: command=>”mkdir-p/data/backup/`date+%Y%m%d`;mv/data/index/data/backup/www/`日期+%Y%m%d`;/bin/sh/data/sh/rsync_www_client.sh", user=>"root", subscribe=>File["/data/sh/rsync_bus_client.sh"], refreshonly=>”true”, } } 3.测试puppet 注意*如果要使用Puppetrun(Puppetkick)的push功能,需要提前配置客户端,并授权客户端允许服务器端发送信号,具体配置文章可参见: 在服务器端执行: puppetkick–d–host`catpuppet.txt` CatPuppet.txt内容为需要同步的客户端主机名: 192-9-117-163-tdt.com 192-9-117-164-tdt.com 192-9-117-165-tdt.com 四、人偶总结 本文仅供参考。通过了解和学习,我们可以更深入地了解Puppet的工作原理和深度配置。1、master端如何对client进行分组?除了正则表达式我还能用什么? 2。当服务器数量不断增加的时候,一个puppetmaster一定很吃力。如何扩展?如何更好地统一维护和管理puppet节点配置? 3。如何用SVN直接提交代码?等等。
