运维不应该是一个刚毕业的学生做的工作,也是一个赚不到钱,最后被社会抛弃的岗位,所以这里我们需要做的是,做出华丽的转型,虽然不转型为开发,也要向自动化运维开发,以及开源软件二次开发的方向努力,这里借鉴了中谷教育的课程体系,给自己制定了一个学习方向,自己摸索一条开发之路。


2、知识体系
1) 第一阶段
主要面向在运维方向上有一些工作经验,但是在处理日常工作时对工具的运用又显得捉襟见肘。
前提知识:
Linux系统管理知识 了解文件系统,文件类型
了解进程,知道进程的启动和结束,信号 系统性能
RPM包管理
SSH远程终端
了解MySQL数据库 了解Memcached
课程目标
通过第一阶段学习,可以熟练的使用Python解决实际遇到的运维问题,并且形成对运维问题解决的思路和方法。

课程大纲:
系统管理员的Python:共计12天的课程,内容覆盖了系统文件、进程管理、监控、远程管理、应用部署等多个方面。
1、系统文件的管理
- python版的wc: 内容:Python对标准输入和输出的处理,经过几个版本的讲解在引入getopt和sys.argv的内容。
* 找出目录中重复的文件:通过os.path中的walk方法进行目录的递归,比较文件名找出相同的文件,了解md5等hash函数对文
件的处理。
* 找出占用空间最大的文件:结合os.path.walk和os.path.getsize,并且涉及python sort相关内容。
2、 进程的管理
- 查看一个进程的进程树:了解父子进程,之间的关系、区别。使用python获得系统进程的相关状态。
* 监控一个进程的状态,并在其异常时重启该进程:了解一般监控进程的特点,并且了解对进程启动的一些注意点。
* 守护进程:学会使用os.fork,以及2次fork来创建守护进程,结合上一节内容做一个守护进程版本的进程监控程序。
3、系统的监控
- 监控CPU, 内存的信息:通过python得到系统的一些状态,同时了解这些状态所表示的意义。
* 监控网络和磁盘IO:通过写一个监控网路流量的工具来了解网卡相关的事情,写一个程序可以计算磁盘的IOPS等等数据来说明磁盘的处理是否是系统的瓶颈。
4、 通过Python SSH远程管理主机
- 通过python的ssh client连接远程主机并执行命令:引入python中的python处理模块,使得python可以对远程机器做批量的处理。
- 使用更高级的library并行的操作主机:引入Fabric,使得Python可以同时并发的对多台机器进行处理,同时说明在对多台主机操作是的注意点,以及这些注意点的python解决办法。
5、使用Python来管理MySQL数据库
- 根据需求创建一个MySQL实例:学习配置文件的模板处理,同时介绍Python中对MySQL进程的处理方法。
- 检查MySQL的主辅同步情况,并对个别情况进行处理:通过一个MySQL的监控程序来确定MySQL主辅同步,并且引入Python对发信通知的处理,等等。
6、使用Python管理Memcached
- 利用python来管理memcached集群:包括创建memcached进程和停止,以及修改
- 监控memcached集群的信息:监控集群的流量、命中率、容量
7、 使用Python来分析Apache Log日志
- 找出404最多的URL:引入生成器,以及对日志分析的基本方法
8、 系统安全相关
- 密码生成器:通过简单的密码生成器说明密码的管理和安全意识。
9、 应用部署
- 使用distribution lib来打包成rpm,进行应用的部署
* 使用virtualenv来部署python应用

2) 第二阶段
共计8天
1、自上而下的运维系统: 讲运维的体系,配置管理、系统监控、自动化部署、日志收集等系统之间的关系。先把运维的体系说清楚,之后的课程中会把体系中涉及到的部分一一实现。
2、配置管理
1) 资源管理系统,结合Django和Puppet来建立一个资源管理系统。讲资源的命名空间,系统的信息收集处理。8个课时
前导知识:对Django略有了解,搭建过Puppet,了解puppet的工作方式
2) Python与Puppet的结合,讲如何使用Python来做Puppet的插件,生成配置文件,处理SVN等等。8个课时前导知识:SVN
3、监控
1)Graphite,监控数据可视化的解决方案,同时讲结合collectd, 8个课时前导知识:rrdtool,Django
2)使用Cubism的JS Library使Graphite监控的数据一目了然。8个课时前导知识:Apache的QPS,Javascript
3)Python与Nagios的结合,使用Python写Nagios的Plugin。并且让Nagios的性能数据发送到Graphite。4个课时前导知识:Nagios的工作原理
4、日志收集
1)中心化的日志收集、粗糙分析。8个课时
2)结合elasticsearch实现log的快速查找。 *
3)结合Cubism成为对日志的数据可视化
5、自动化部署
1)使用Python管理Xen的虚拟设备,实现虚拟设备的生命周期管理。8个课时前导知识:Xen,Dom0, DomU
2)扩展资源管理系统,结合Xen虚拟设备,构建自动化部署系统。8个课时