使用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,如果系统没有安装,这时候会自动联网下载安装,如果操作系统已经有相应的依赖,则直接离线安装成功

  

Python自动化运维工具fabric的安装的更多相关文章

  1. 轻量级自动化运维工具Fabric的安装与实践

    一.背景环境 在运维工作中,经常会遇到重复性的劳动,这个时候为了效率就必须要使用自动化运维工具. 这里我给大家介绍轻量级自动化运维工具Fabric,Fabric是基于Python语言开发的,是开发同事 ...

  2. Python自动化运维工具-Fabric部署及使用总结

    使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...

  3. CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机

    使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...

  4. 自动化运维工具fabric使用教程

    摘要:当需要同时管理许多服务器时,如果我们一台一台登陆上去操作会显得费时又费力.此时我们可以用fabric这个包提供的API来编写python脚本完成服务器集群的统一管理. 核心原理:fabric为主 ...

  5. 自动化运维工具Fabric - 密码管理(env.password and ssh key)

    在使用 Fabric 的过程中,如果大批量服务器处理的话,我们就需要针对配置主机的密码,每台主机的密码相同还好,不同的话,就需要针对不同的主机做配置了,以下有两种配置方式 注:本文主要参考官方文档 P ...

  6. python自动化运维-编写rsync+sersync安装脚本实现文件实时同步

    rsync+sersync组合可以实时监听目录的变化,实现实时同步数据. 具体安装教程可查看:http://www.osyunwei.com/archives/7447.html. 安装着实有些复杂, ...

  7. Ansible自动化运维工具使用

    概述本文描述自动化运维工具 Ansible 的安装及基础使用方法,包含: Centos 下的安装主机配置Ad-Hoc command(命令行执行)Playbook (任务剧本)Ansible 和 Sa ...

  8. 自动化运维工具之 Ansible 介绍及安装使用

    一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...

  9. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

随机推荐

  1. C# Thread挂起线程和恢复线程

    前言 众所周知,Thread类中的挂起线程和恢复线程微软已标记过时,因为可能会造成问题   Resume()   恢复当前线程 已过时. Resumes a thread that has been ...

  2. 【9-7】XML学习笔记01

    Tips XML标签大小写敏感: XML文件一般使用国际化通用的编码“utf-8”,所以平时看到的XML文件的头部都会有这样的代码: <?xml version="1.0" ...

  3. Linux运维初级教程(二)账户与安全

    知识点 用户ID为UID,组ID为GID,UID=0表示超级管理员即root. 一个用户只可以加入一个基本组,但是可以同时加入多个附加组. 创建用户时,系统默认会自动创建同名的组,并设置用户加入该基本 ...

  4. 密码学初级教程(五)消息认证码MAC-Message Authentication Code

    密码学家工具箱中的6个重要的工具: 对称密码 公钥密码 单向散列函数 消息认证码 数字签名 伪随机数生成器 MAC能识别出篡改和伪装,也就是既可以确认消息的完整性,也可以进行认证. 消息认证码的输入包 ...

  5. 【Hadoop】HDFS的运行原理

    博文已转移,请借一步说话http://www.weixuehao.com/archives/596 简介 HDFS(Hadoop Distributed File System )Hadoop分布式文 ...

  6. XDU 1160 - 科协的数字游戏I

    Problem 1160 - 科协的数字游戏I Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty: Total Submit: 184   ...

  7. hdu.1104.Remainder(mod && ‘%’ 的区别 && 数论(k*m))

    Remainder Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  8. java遍历map的四种方式

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  9. brew gradle

    cat /usr/local/Library/Taps/homebrew/homebrew-versions/gradle221.rb GRADLE_HOME=/Users/temp/gradle22 ...

  10. C#爬虫之~苏飞万能框架使用教程

    苏飞的框架帮助类,很多人应该都知道,不知道可以百度,此处直接说用法. //引入命名空间 using CsharpHttpHelper; //创建Httphelper对象 HttpHelper http ...