Python Fabric 完成长途操作和布置ITeye - AG环亚娱乐集团

Python Fabric 完成长途操作和布置ITeye

2019年03月26日12时04分15秒 | 作者: 昊明 | 标签: 操作,能够,脚本 | 浏览: 2691

title是开发,可是一起要干开发测验还有运维的活 (o(╯□╰)o)

近期接手越来越多的东西,发布和运维的作业适当机械,加上频率还蛮高,导致时刻糟蹋仍是优点多。

修正bug什么的,测验,提交版别库(2分钟),ssh到测验环境pull布置(2分钟),rsync到线上机器A,B,C,D,E(1分钟),别离ssh到ABCDE五台机器,逐个重启(8-10分钟) = 13-15分钟

其间抑郁的是,每次操作都是相同的,指令相同,要命的是在多个机器上,很难在本机一个脚本搞定,首要时刻都糟蹋在ssh,敲指令上了,写成脚本,完全能够一键履行,花两分钟看下履行成果

直到,发现了fabric这货

官方文档 进口

很强壮的东西

能够将自动化布置或许多机操作的指令固化到一个脚本里

和某些运维东西很像,用它首要是因为,python…..

简略好用易上手

当然,shell各种指令组合起来也能够,上古神器和现代武器的差异

在本机和方针机器装置对应包(留意,都要有)

sudo easy_install fabric

现在是1.8版别

装置完后,能够检查是否装置成功

[ken@~$] which fab
/usr/local/bin/fab

装完之后,能够阅读下官方文档

然后,能够着手了

hello world

先进行本机简略操作,有一个开端知道,比如来历与官网

新建一个py脚本: fabfile.py

def hello():
 print("Hello world!")

指令行履行:

[ken@~/tmp/fab$] fab hello
Hello world!
Done.

留意,这儿能够不必fabfile作为文件名,可是在履行时需指定文件

[ken@~/tmp/fab$] mv fabfile.py test.py
fabfile.py - test.py
[ken@~/tmp/fab$] fab hello
Fatal error: Couldnt find any fabfiles!
Remember that -f can be used to specify fabfile path, and use -h for help.
Aborting.
[ken@~/tmp/fab$] fab -f test.py hello
Hello world!
Done.

带参数:

修正fabfile.py脚本:

def hello(name, value):
 print("%s = %s!" % (name, value))

履行

[ken@~/tmp/fab$] fab hello:name=age,value=20
age = 20!
Done.
[ken@~/tmp/fab$] fab hello:age,20
age = 20!
Done.
履行本机操作

简略的本地操作:

from fabric.api import local, lcd
def lsfab():
 with lcd(~/tmp/fab):
 local(ls)

成果:

[ken@~/tmp/fab$] pwd;ls
/Users/ken/tmp/fab
fabfile.py fabfile.pyc test.py test.pyc
[ken@~/tmp/fab$] fab -f test.py lsfab
[localhost] local: cd ~/tmp/fab
[localhost] local: ls
fabfile.py fabfile.pyc test.py test.pyc
Done.

实战开端:

假定,你每天要提交一份配置文件settings.py到版别库(这儿没有考虑抵触的状况)

如果是手工操作:

cd /home/project/test/conf/
git add settings.py
git commit -m daily update settings.py
git pull origin
git push origin

也便是说,这几个指令你每天都要手动敲一次,所谓daily job,便是每天都要重复的,机械化的作业,让我们看看用fabric怎样完成一键搞定:(其有用shell脚本能够直接搞定,可是fab的优势不是在这儿,这儿首要位后边本地+远端操作做准备,究竟两个当地的操作写一种脚本便于保护)

from fabric.api import local, lcd
def setting_ci():
 with lcd(/home/project/test/conf/):
 local("git add settings.py")
 #后边你懂的,懒得敲了…..
混搭整合远端操作

这时候,假定,你要到机器A的/home/ken/project对应项目目录把配置文件更新下来

#!/usr/bin/env python
# encoding: utf-8
from fabric.api import local,cd,run, env
env.hosts=[user@ip:port,] #ssh要用到的参数
env.password = pwd                          
			
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    ClassLoaderITeye

    运用,文件,办法
  • 2
  • 3
  • 4

    手机号码校验合法性ITeye

    代表,必定,第二位
  • 5
  • 6

    Java 目标巨细的核算ITeye

    目标,巨细,字节
  • 7
  • 8
  • 9

    架构师之jdk8ITeye

    字符串,判别,如果
  • 10