Python fabric远程自动部署简介

Fabric是一个Python(2.5-2.7)库,用于简化使用SSH的应用程序部署或系统管理任务。

  它提供的操作包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入、中止执行等。

  本文主要介绍CentOS 6.3上使用fabric进行自动部署的基本方法。

  1.    环境部署

  本节主要介绍python版本升级,pip及fabric部署方法。

  1.1.    Python版本升级

  CentOS 6.3自带的Python版本为2.6,首先需要升级到2.7版本。由于旧版本的Python已被深度依赖,所以不能卸载原有的Python,只能全新安装。

  1. 下载Pyhon,选择下载Gzipped source tar ball (2.7.6) (sig),网址:https://www.python.org/download/releases/2.7.6

  2. 解压安装,命令如下

  tar -xvf Python-2.7.6.tgz

  cd Python-2.7.6

  ./configure --prefix=/usr/local/python2.7

  make

  make install

  3. 创建链接来使系统默认python变为python2.7

  ln -fs /usr/local/python2.7/bin/python2.7 /usr/bin/python

  4. 查看Python版本

  python –V

  5. 修改yum配置(否则yum无法正常运行)

  vi /usr/bin/yum

  将第一行的#!/usr/bin/python修改为系统原有的python版本地址#!/usr/bin/python2.6

  至此CentOS6.3系统Python已成功升级至2.7.6版本。

  1.2.    安装pip

  Pip是一个安装和管理python包的工具。

  安装方法如下:

  1. 下载pip,地址https://raw.github.com/pypa/pip/master/contrib/get-pip.py

  2. 执行安装命令

  python get-pip.py

  3. 创建连接(否则会报错提示“命令不存在”)

  ln -s /usr/local/python2.7/bin/pip /usr/bin/pip

  1.3.    安装fabric

  1. 执行安装命令

  pip install fabric

  2. 创建连接(否则会报错提示“命令不存在”)

  ln -s /usr/local/python2.7/bin/fab /usr/bin/fab

  2.    脚本编写

  本节对fabric用法进行简单介绍,并提供实例以供参考。

  2.1.    Hello,fab

  1. 在当前目录下新建文件fabfile.py,输入内容如下

  def hello():

  print("Hello fab!")

  2. 执行命令fab hello,结果如下

  # fab hello

  Hello fab!

 3. 文件名不为fabfile.py时需进行指定

  # mv fabfile.py test.py

  # fab hello

  Fatal error: Couldn't find any fabfiles!

  Remember that -f can be used to specify fabfile path, and use -h for help.

  # fab -f test.py hello

  Hello fab!

  4. 参数传递

  #vi fabfile.py

  def hello(name):

  print 'Hello %s!'%name

  # fab hello:name=fab

  Hello fab!

  # fab hello:fab

  Hello fab!

  2.2.    本地操作

  执行本地操作命令使用local

  1. fabfile.py脚本内容如下

  from fabric.api import local

  def test():

  local('cd /home/')

  local('ls -l|wc -l')

  2. 执行命令fab test,结果如下

  # fab test

  [localhost] local: cd /home/

  [localhost] local: ls -l|wc -l

  2.3.    远程操作

  执行远程操作命令使用run

  1. fabfile.py脚本内容如下

  from fabric.api import cd,run,env,hosts

  env.hosts=['192.168.85.99:22','192.168.85.101:22']

  env.password='test'

  def test():

  with cd('/home'):

  run("du -sh")

  2. 执行命令fab test,结果如下

  # fab test

  [192.168.85.99:22] Executing task 'test'

  [192.168.85.99:22] run: du -sh

  [192.168.85.99:22] out: 392G      .

  [192.168.85.99:22] out:

  [192.168.85.101:22] Executing task 'test'

  [192.168.85.101:22] run: du -sh

  [192.168.85.101:22] out: 5.6G     .

  [192.168.85.101:22] out:

  Disconnecting from 192.168.85.99... done.

  Disconnecting from 192.168.85.101... done.

  3. 多服务器混合,需要在不同服务器进行不同操作时,可参考如下脚本

  from fabric.api import env,roles,run,execute

  env.roledefs = {

  'server1': ['root@192.168.85.99:22',],

  'server2': ['root@192.168.85.100:22', ]

  }

  env.password = 'test'

  @roles('server1')

  def task1():

  run('ls /home/ -l | wc -l')

  @roles('server2')

  def task2():

  run('du -sh /home')

  def test():

  execute(task1)

  execute(task2)

  结果如下


  # fab test

  [root@192.168.85.99:22] Executing task 'task1'

  [root@192.168.85.99:22] run: ls /home/ -l | wc -l

  [root@192.168.85.99:22] out: 27

  [root@192.168.85.99:22] out:

  [root@192.168.85.100:22] Executing task 'task2'

  [root@192.168.85.100:22] run: du -sh /home

  [root@192.168.85.100:22] out: 1.4G   /home

  [root@192.168.85.100:22] out:

  Disconnecting from 192.168.85.99... done.

  Disconnecting from 192.168.85.100... done.

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-08 12:03:32

Python fabric远程自动部署简介的相关文章

Python自动化运维和部署项目工具Fabric使用实例_python

Fabric 是使用 Python 开发的一个自动化运维和部署项目的一个好工具,可以通过 SSH 的方式与远程服务器进行自动化交互,例如将本地文件传到服务器,在服务器上执行shell 命令. 下面给出一个自动化部署 Django 项目的例子 # -*- coding: utf-8 -*- # 文件名要保存为 fabfile.py from __future__ import unicode_literals from fabric.api import * # 登录用户和主机名: env.use

使用python fabric搭建RHEL 7.2大数据基础环境以及部分优化

1.使用python fabric进行Linux基础配置 使用python,可以让任何事情高效起来,包括运维工作,fabric正式这样一套基于python2的类库,它执行本地或远程shell命令提供了操作的基本套件(正常或通过sudo)和上传/下载文件,如提示用户输入运行辅助功能,或中止执行. 用Python3开发的部署工具叫fabric3:fabric3,和fabric一样最大特点是不用登录远程服务器,在本地运行远程命令,几行Python脚本就可以轻松部署. 典型用途包括创建一个包含一个或多个

python fabric使用笔记

  这篇文章主要介绍了python fabric使用笔记,fabric是一款实现远程操作和部署强大工具,本文就给出了它的多个使用实例,需要的朋友可以参考下 fabric title是开发,但是同时要干开发测试还有运维的活--为毛 task*3 不是 salary * 3 (o(╯□╰)o) 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多. 修复bug什么的,测试,提交版本库(2分钟),ssh到测试环境pull部署(2分钟),rsync到线上机器A,B,C

将代码从Git自动部署到容器

本文讲的是将代码从Git自动部署到容器[编者的话]将您的代码从您的Git仓库转移到您的容器可能是一件痛苦的工作.本文介绍了如何实现自动化部署. [烧脑式Kubernetes实战训练营]本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理.Kubernetes DNS与服务发现.基于Kubernetes和Jenkins的持续部署方案 .Kubernetes网络部署实践.监控.日志.Kubernetes与云原生应用.在CentOS中部署Kubernetes集群.Kubernetes

初创公司如何实现 Ansible 多机房自动部署发布

本文讲的是初创公司如何实现 Ansible 多机房自动部署发布, 一.面临的问题 一个完整的程序开发流程少不了部署发布这个环节,而部署发布是一个重复的过程,最基本的操作包含停止系统服务.更新软件包.重启系统服务,复杂的还需要做好监控.灰度发布.回滚等.在只有少量服务器的情况下,大多数运维人员会选择手动更新,减少自动化部署发布的开发成本.而当服务器数量增加,甚至服务器可能存在于跨地域的不同机房情况下,如何减少部署发布的人力和时间成本,实现自动化部署发布和无缝发布,而且在部署发布期间仍然能够正常提供

Kwatee Agile Deployment 2.1.7发布 软件自动部署工具

Kwatee Agile Deployment 是一款能够在任何操作系统上自动部署Web应用程序或软件的工具.它提供了一个用户友好的Web界面来方便地创建和维护配置. Kwatee Agile Deployment 2.1.7该版本支持REST接口和相关的Python/Ant/Maven,增加了创建/删除的版本,冻结/删除部署的支持. 软件信息:http://www.kwatee.net/ 下载地址:http://www.kwatee.net/download

Linux 下通过脚本实现远程自动备份

考虑到在本机上备份数据,一旦该机器硬盘出现故障,数据无法取出.远程手动备份数据费时费力且 不及时.最好的方法就是通过脚本实现远程自动互备.但远程无论是通过SSH登陆,还是通过scp拷贝文件 都需要输入密码.为了克服这个问题,首先需要实现不需要密码的SSH登陆,这样就可以使用rsync,scp ,rexec等命令来做的远程备份了. 1. 设置无需密码的ssh登陆,方法如下: 假设A,B两服务器,现在需要在A机上用root登陆B机,而不需要输入密码,那我们可按照下面的步骤 来做: 1)在A机上生成钥

python获取远程图片大小和尺寸的方法

 这篇文章主要介绍了python获取远程图片大小和尺寸的方法,实例分析了Python中urllib2.urlopen方法及图片操作技巧,需要的朋友可以参考下     本文实例讲述了python获取远程图片大小和尺寸的方法.分享给大家供大家参考.具体分析如下: 这段代码通过urllib2打开远程图片,通过cStringIO读取文件内容,不用保存到磁盘即可读取图片文件的信息 ? 1 2 3 4 5 6 7 8 #!/usr/bin/env python #encoding=utf-8 import

利用sqlcmd实现SQLServerServiceBroker的自动部署

       因为工作关系,我们项目用到了Service Broker这项技术.它在功能和性能上真的是没的说,唯一让人郁闷的就是部署.要知道,在加密情况下部署一台服务器和一台客户端我们需要以下步骤: 1. 在服务器端清理环境, 2. 在客户端清理环境, 3. 在服务器端创建数据库,并且创建Service Broker相关对象(Message Type,Contract,Queue,Service,Routing甚至Binding) 4. 在客户端创建数据库,并且创建Service Broker相