使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自动登录其他服务器进行各种操作,这种实现使用shell是很难做到的,但是使用fabric实现就很简单,所以对于程序员的日常运维部署,建议使用python编写脚本

  Linux下默认有python环境,安装fabric有两种方式一种是pip直接安装,另外一种是下载fabric源码,使用setuptools工具执行setup.py安装,两种方式都需要联网,基本上差不多,这里使用pip进行安装,安装的时候如果报错,一般是因为python-devel模块没有安装,需要进行安装,可以提前使用 rpm -qa | grep python-devel 查看是否安装python-devel,如果没有安装,使用yum安装如下:

yum -y install python-devel

  pip安装之前说过,首先下载py文件:https://bootstrap.pypa.io/get-pip.py,上传至服务器之后执行: python get-pip.py 安装pip即可

  使用pip安装fabric: pip install fabric 稍等一会就安装完毕了,这时输入 fab 就会弹出对应的选项

  接下来编写一个简单的python脚本fabrictest.py来做测试:

 #!/usr/bin/python
# -*- coding:utf-8 -*- from fabric.api import * # 设置服务器登录参数
env.roledefs = {
# 操作一致的放一组,一组执行同一个操作
'servers1':['root@linux2:22',],
# 第二组
'servers2':['root@linux3:22',]
} # 本机操作
def localtask():
local('/usr/local/nginx/nginx') # servers1服务器组操作
@roles('servers1')
def task1():
run('/usr/local/tomcat/bin/startup.sh') # servers2 服务器组操作
@roles('servers2')
def task2():
run('/usr/local/tomcat/bin/startup.sh') # 执行任务
def doworks():
execute(localtask)
execute(task1)
execute(task2)

  以上代码,就是简单的在本地启动nginx服务器,在linux1和linux2上启动了tomcat服务器,为了接受nginx服务器的代理,这里专门使用分组的方式为了适应机器比较多的集群的需要,另外这里没有设置服务器的密码,一是为了服务器的安全;另外集群间建议设置ssh免密登录,脚本就不用设置密码了,方法doworks执行的就是最终汇总的任务,保存之后,开始执行:

fab -f fabrictest.py doworks

  执行之后,脚本会自动的依次执行指定的命令,从控制台可以看到输出,也可以在程序适当位置添加输出,打印一些必要信息

  到这里,就看到fabric这个工具的功能确实很强大,更多的编程接口可以查看官网网站的文档:http://www.fabfile.org/

  离线安装的话在fabfile官网有指向python官网的链接,地址是:https://pypi.python.org/pypi/Fabric,进入页面后可以看到很多版本的下载链接,首先保证安装setuptools,下载之后解压释放,进入目录后执行: python setup.py install 安装期间需要一些依赖,比如paramiko,如果系统没有安装,这时候会自动联网下载安装,如果操作系统已经有相应的依赖,则直接离线安装成功

  

最新文章

  1. Spring下ActiveMQ实战
  2. python 去掉列表(list)中的所有空元素
  3. node系列:琐碎备忘
  4. 闭包 Clousure
  5. 包加载失败 未能正确加载包“xxx”...
  6. 你可以用OpenCV来干什么
  7. win8.1 无法安装 net framework3.5的解决办法
  8. 使用Horner法则计算多项式的值
  9. KMP与扩展KMP
  10. IOS创建单例的两种方法
  11. HTTPClient和URLConnection核心区别分析
  12. template method pattern
  13. 转:Loadrunner上传文件解决办法(大文件)
  14. .net core 2.0学习笔记(一):开发运行环境搭建
  15. jq图片展示插件highslide.js简单dom
  16. 将Xml文件递归加载到TreeView中
  17. zookeeper和kafka的使用
  18. linux php5.6 安装扩展 memcached
  19. prerender-spa-plugin Vue预渲染配合meta-info优化seo
  20. python 在.py文件中调用其他.py内的函数

热门文章

  1. data and dream
  2. Java基础相关总结
  3. HTML5+ 学习笔记3 storage.增删改查
  4. [整理]iis7.5下部署MVC5
  5. vs2010 中无法打开 源文件 "stdafx.h" 未定义标识符 “xxx”
  6. 你可能不知道的Google Chrome命令行参数
  7. 必须知道的.net(字段、属性和方法)
  8. CF #305 (Div. 2) C. Mike and Frog(扩展欧几里得&&当然暴力is also no problem)
  9. 【PHP面向对象(OOP)编程入门教程】19.抽象方法和抽象类(abstract)
  10. HashMap原理分析