自动化运维之 puppet 实战 【百科全说】-凯发k8官方旗舰厅

腾讯视频/爱奇艺/优酷/外卖 充值4折起

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

09/25 13:36
1、错误现象 运维的监控系统发来通知,报告一台服务器空间满了,登陆服务器查看,根分区确实没有空间了,如下图所示: 这里首先说明一下服务器的一些删除策略,由于linux没有回收站功能,我们的线上服务器所有要删除的文件都会首先移动到系统/tmp目录下,然后定期清除/tmp目录下的数据。这个策略本身没有问题,但是通过检查发现这台服务器的系统分区中并没有单独划分/tmp分区,这样/tmp下的数据其实是占用了根分区的空间。既然找到了问题,那么删除/tmp目录下一些大数据即可,执行如下命令,检查/tmp下最
01/15 08:43
最近经常有同行的朋友或者linux初学者问我: 运维人员是否需要学一门语言,那么该学哪种语言呢? 对于这个问题,我分两个方面回答: 首选,在大数据.云计算发展迅猛的今天,系统运维人员如果不懂一点开发语言的话,确实会举步维艰,因为在运维工作中,业务系统的繁多,线上服务器规 模很大时,只能通过写脚本的方式(自动化也是脚本一种哦)自动化完成,不然,如此重复和繁琐的工作,靠人力是无法负担的,所以,学习一门可以让运维工作批 量完成的语言,就显得很重要了. 那么应该学习一门什么语言呢? 对于linux系统运
09/19 08:57
一、锁定系统重要文件 系统运维人员有时候可能会遇到通过root用户都不能修改或者删除某个文件的情况,产生这种情况的大部分原因可能是这个文件被锁定了。在linux下锁定文件的命令是chattr,通过这个命令可以修改ext2、ext3、ext4文件系统下文件属性,但是这个命令必须有超级用户root来执行。和这个命令对应的命令是lsattr,这个命令用来查询文件属性。 通过chattr命令修改文件或者目录的文件属性能够提高系统的安全性,下面简单介绍下chattr和lsattr两个命令的用法
12/20 07:52
对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情。有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的。还有些时候,我们希望不断地优化网站,让网站更快速的响应用户请求,这些事情都发生在开发之后的运维阶段。 与开发阶段不同的,运维阶段不可能让你去调试程序,发现各类问题,我们只能通过各种系统日志来分析网站的运行状况,对于部署在iis上的网站来说,iis日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进
07/10 18:33
云计算时代给大家带了很多机遇,同时也带来了很多挑战,有人就认为随着云的普及,运维人员将会最终消失。当然,这个论点不免有些偏激,但云时代的确给运维带来了很多不同,也让运维从业人员开始思考很多问题。在近日举办的中国运维和安全大会上,我们就欣喜地看到了很多乐意迎接挑战的同学,也有很多大牛分享了自己的经验与心得。 中国的第一代黑客,现任ucloud ceo的季昕华为大家分析了云计算时代为运维与安全带来的挑战和机会。首先,运维人员要有一些基本的素质要求,其中包括懂风水,在机房选址时是否处于地震带,吹的什么

夏季机房,it经理如何确保安全运维?

07/23 06:58
据新华社电,近期暴雨侵袭全国,21个省份遭遇洪涝灾害,已致33人死亡、14人失踪。昨日6时,河北省气象台继续发布暴雨蓝色预警,预计承德中南部、唐山、秦皇岛、廊坊等多地区有大雨,局部有暴雨,为防止城市内涝、中小河流洪水和山洪地质灾害,提醒相关部门及广大群众做好防御工作。显然,进入盛夏极端多变性的天气,已向人们拉响了预警。 面对多变性天气,企业it机房和数据中心同样面临管理、安全等多方面考验。而随着信息化技术迅猛发展,中国已经成为全球数据中心。4月17日,亚马逊cloud drive云存储河北廊坊数
05/10 22:18
这篇文章的标题确实有点high,但对于从事运维及其相关开发的你来说,当告诉别人你从事的是运维领域的工作,对方的回复是“哦”时,你又该怎么解释呢?那么运维派在这里给大家整理汇总如下: 一、简述: 运维(operation and maintenance)一般是指对大型组织已经建立好的网络软硬件的维护,其中传统的运维是指信息技术运维(it运维)。所谓it运维管理,是指单位 it 部门采用相关的方法、手段、技术、制度、流程和文档 等,对it 运行环境(如软硬件环境、网络环境等)、it 业务系统和 it
12/08 09:36
老鸟谈生产场景如何对linux系统进行分区? 前言: 我们买房子时,会考虑1室1厅,2室1厅,或3室2厅......!那么具体如何选,是要看 手中的money和家庭的人口数量. 同理,服务器操作系统在分区时也是如此,到底分3个区,4个区,要不要分/home/ /var,这也要看我们的业务需求,和运维规范或者说运维领导的喜好. 分多了,分少了,在不同的业务场景都可能会有一些麻烦问题(lvm可以解决这个问题,不过有他的弊端,或者说,某些场景是画蛇添足). 在阐述这个问题之前我们先来简单说下基础分区/
03/19 23:47
随着it运维的不断发展,尤其的linux的飞速发展,越来越多的企业开始使用linux操作系统平台,例如centos.redhat.ubuntu.fedora等等,成千上亿个网站涌现在当今互联网,互联网已经成为必不可少的工具,那今天我们跟大家一起来分享讨论目前用的最多的linux下主流网站架构: lvs keepalived(heartbeat) squid nginx/apache java/php mysql/mariadb等,分享一个简单的拓扑图,供各位同学实验参考 一般网站总体分为四层,
网站地图