当前位置: 首页 > 科技观察

用于自动化运维的木偶

时间:2023-03-20 16:02:04 科技观察

随着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直接提交代码?等等。