fabric api应用实例讲解

什么是fabric?如果你还不知道请自己找度娘解释,如果不理解,我想也不必理解了,估计也是不是干运维这行的,这篇文章主要针对搞运维开发的兄弟快速学习用的,大家都知道,干运维经常有需要自动批量处理的命令脚本,机器一旦上百,基本要自动化了,不可能一台一台维护了,我入道的时候,就管理4台机器,那时候根本不用什么自动化,有问题,我连接4个session,就搞定了,像fabric这个高级玩意儿,根本用不到,我写这篇文章前也上网搜了下相关文章,写的基本大同小异,代码也都一样,有的写的的确不错,看了几篇,但都缺少对fabric整体功能的介绍,还有都是写的password登录,我还是说一句,在实际工作中可能让你把明文密码写到代码么?,所以呢,还是自己上手,自己花了些时间把官方文档基本浏览了一遍,对核心的功能使用做了整体的一个了解,这里我并给出简单的例子,加速大家对fabric的了解,对英文不好的兄弟,你不用上官网了,看这个实例,基本就能满足你所有要求了,好了,不多说了,前戏太长了,赶紧上真货…….., 好了,废话少说,开始上干货:

 

接下来一个一个函数说明:

remote_server():这个函数是设置环境变量,env有很多参数,我估计至少有几十个,实际用到了再查文档,我上面定义的基本够用了,如果你真是密码验证,请用env.password,网上的案例基本都是密码验证的,我这里使用的key认证,这个函数很重要,基本要把你要连接的机器基本信息都定义好了,说了这还的多提一句,fabric的执行方式跟其他模块不一样,他是先把程序写到fabfile.py里,然后用fab来调用这个脚本中的函数来执行操作,一会我会给实际例子 。

task():这个函数用了上下问管理的hide功能,隐藏了所有显示,默认状况下你执行命令会在终端回显出来,如果你用了hide,就没有了,直接告诉你Done,跟 context_managers.quiet功能一样,sudo是用root执行命令。

task1():显示跟task一样,只是调用了run,在远程机器上执行一个shell命令。

task2():使用上下问的prefix功能连接执行命令,这个函数执行想source /etc/profile && sh /root/who.sh

task3():get ,从远程主机上下载一个文件

task4():local,在本机运行命令。

task5():打开一个交换shell,执行完命令会登录到远程系统中

task6():promt,相当与raw_input()

task7():put,向远程主机上传一个文件。

task8():重启远程主机,参数是要等待的秒数

task9():并行执行命令,parallel装饰器参数为并行几个执行。

task10():定义主机角色,这个功能很有用,如果你有不同的主机组,可以根据角色不同在不同的主机运行不同的脚本或命令。

add_arg():带参数执行,调用为fab remote_server add_arg:name=bicher,结果为your name bicher

ex_file():这个功能也非常有用,可以调用远程机器的一个脚本,这样就可以将fabric写的fabfile.py文件当做一个总控端,总控确定要执行什么,怎么执行,执行的具体内容可以是 shell脚本,这样在一个团队里开发就比较快,可以互相分工,调用方式为:

fab remote_server ex_sh:w.sh ,其中w.sh就是远程主机的脚本文件。

好了,基本就到这了,这个篇文档主要是为要快速上手fabric 兄弟用的,所以没有写很复杂的逻辑,具体的实现各位看客可以根据自己的需求自己去写,但以上基本就是fabric大部分的功能了,如果都能用好,基本也够用了,今天就到这里,要睡觉了,明天还的早起。