自动化运维之企业实际案例分析

标签: 系统运维 | 发表时间:2013-05-19 23:35 | 作者:wgkgood
出处:http://www.blogread.cn/it/

标签:   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.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)推送功能的话,需要提前配置好客户端,并在客户端授权允许服务端发送信号,具体配置文章见:http://wgkgood.blog.51cto.com/1192594/869694
在服务器端执行:
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

四、puppet总结
本文仅供参考,通过了解和学习,我们可以更加深入的去理解puppet工作原理以及深入配置,举一反三:
1、如何在master端对客户端进行分组?除了正则还可以用什么?
2、当服务器数量不断增加,一台puppe tmaster肯定很吃力,如何扩展?如何更好的维护和统一管理puppet node配置?
3、如何结合SVN直接提交代码?等等问题。

您可能还对下面的文章感兴趣:

  1. CC-lib无线跨平台web页面自动化生成技术的设计实现 [2012-01-29 20:44:38]
  2. 环境为王-论贴吧环境解决方案 [2012-01-29 20:43:25]
  3. Perl 自动化之网页处理 WordPress 自动登陆查看 [2011-06-10 14:07:42]
  4. 自动化测试中Python与C/C++的混合使用 [2010-04-14 13:31:21]
  5. 自动化测试之惑 [2010-01-07 13:29:01]
  6. linux下搭建pxe自动化安装环境 [2009-10-19 23:21:18]

相关 [自动化 运维 企业] 推荐:

大型企业 Unix 服务器的自动化运维

- Edwin - IBM developerWorks 中国 : Linux : Articles,Tutorials
企业主机服务器日常运维工作中,经常需要登录并以 root 方式执行系统操作,如果在主机数量少的情况下,手工方式登录并执行效率尚可,但如果主机数量庞大(如笔者运维的国外客户服务器数量达 2000+),依次对一台台服务器进行手工操作工作量巨大且出错概率与主机数量成线性增大. 本文分析了在大数量企业服务器情况下,利用 shell 管道,Java SSHD 开源包,Expect 脚本三种方式实现自动登录并执行系统运维操作,三种方式分别适用于不同的场景,可以满足绝大多数企业主机服务器自动化运维的工作内容,大大减轻了系统管理员的工作量,同时降低了操作失误的风险.

自动化运维之企业实际案例分析

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

微店 MySQL 自动化运维实践

- - IT瘾-tuicool
互联网时代,数据库如何满足敏捷开发,敏捷交付的要求. 传统靠DBA人肉执行的方式,在面对大量业务需求时,DBA手速再快,记忆力再好估计也不能提供好的数据库服务. 在介绍自动化运维之前,我们来了解下是怎么使用数据库的. 数据库的使用方式主要有两种:. 应用混合部署(实例):有新数据库需求时,很多人都会选择找个实例,建个数据库和帐号提供给业务.

从分布式存储设计到自动化运维

- - 五四陈科学院-坚信科学,分享技术
以下内容由 [五四陈科学院]提供. http://www.infoq.com/cn/articles/nosql-dynamo 三年前在infoq发表的一篇关于两种特别有代表性的分布式存储的设计思路解析,三年过去了,今天再来总结看看这几年的变化. 实际上,这三年,还是两个东西,一直没有冒出来更牛B的东西.

自动化运维工具Ansible详细部署

- - 开源软件 - ITeye博客
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力. 真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.

iPhone App自动化测试

- BeerBubble - Taobao QA Team
         无线客户端的发展很快,特别针对是android和ios两款无线操作系统的客户端应用,相应的测试工具也应运而生,这里主要给大家介绍一些针对iPhone App的自动化测试工具.          首先,我们把这些测试框架分为三大类:接口测试工具、注入式UI测试工具、录放式UI测试工具.

Android Robotium自动化测试

- - CSDN博客移动开发推荐文章
1、官方网站下载测试工程demo. 从 http://code.google.com/p/robotium/downloads/detail?name=ExampleTestProject_v3.6.zip 下载官方的Android测试工程demo. 解压后的文件NotePad、NotePadTest、readme.txt.

Android UiAutomator 自动化测试

- - 操作系统 - ITeye博客
一、一个BUG引发的问题.     如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”. 我想,最好的方式应该是自动化测试.     那么,自动化测试可以完成哪些任务呢.     简单的说,那些重复性的测试工作,都可以交给自动化完成:.         1、设置手机的语言.         2、添加、删除、收藏联系人.

Robotium 自动化测试

- - CSDN博客推荐文章
Robotium 自动化测试. Android Studio环境下,在所要测试的Module的build.gradle文件下添加,. Robotium即是对Instrumentation框架方法的封装,所以使用之前需要继承测试类,重写构造器,setUp()和tearDown()方法. 其中继承的是ActivityInstrumentationTestCase2测试类.

Java应用运维

- - BlueDavy之技术blog
对于互联网产品或长期运行的产品而言,运维工作非常重要,尤其是在产品复杂了以后,在这篇blog中就来说下Java应用的运维工作(ps:虽然看起来各种语言做的系统的运维工作都差不多,但细节上还是会有很多不同,so本文还是只讲Java的). 苦逼的码农按照需求开发好了一个全新的Java Web应用,该发布上线给用户用了,要把一个Java Web应用发布上线,首先需要搭建运行的环境,运行的环境需要有JDK、APPServer,在已经装好了os的机器上装上JDK和APPServer,开发好的Java Web应用可以用maven直接打成war或ear,将这个打好的包scp或其他方式到目标机器上,准备妥当,就差启动了.