上节我们自己尽管把fabric给配置反正。这节我们自己多种渠道fabric编写批量执行附加服务器任务中和自动化运维管理。
先媒体介绍下fabric的特点,两个在官方文档外面尽管媒体介绍过:
1 代码可读性强,绝对 是python语言。
2 封装了本地、远程操,内置在非常多四种方法。
3 你就 跟据更多需求灵活的定义参数。
4 一个角色定义,方便批量管理。
用来来配置参数:
env.host -- 主机ip,只只绝对 是是是不然也你就 -H参数指定
env.password -- 密码,打好通道的请无视
env.roledefs -- 一个角色分组,非常多:{'web': ['x', 'y'], 'db': ['z']}
fab -l -- 数字显示可用来task(命令)
fab -H -- 指定host,不支持多host逗号分开
fab -R -- 指定role,不支持多个
fab -P -- 并发数,默认是串行
fab -w -- warn_only,默认是碰到异常最后abort退出
fab -f -- 指定入口文件,fab默认入口文件是:fabfile/fabfile.py
用来来函数:
local('pwd') -- 执行本地命令
lcd('/tmp') -- 切换本地目录
cd('/tmp') -- 切换远程目录
run('uname -a') -- 执行远程命令,一般来讲会提示叫你输入密码。
sudo('/etc/init.d/nginx start') -- 执行远程sudo,应该注意 pty选项
上面是写了两个远程复制文件和本地复制文件的函数。我把localhost既单做远程,还单做本地来以及操作。
#encoding=utf-8
#description:fabric代码测试。
from fabric.api import run,local,lcd,env,cd
env.hosts = ['localhost']
def localcopyfile():
'''本地文件copy以及操作'''
local('pwd')
local('cp /home/laowang/workspace/info.txt /home/laowang/test')
print 'local copy file success'
def remote():
'''远程文件拷贝以及操作'''
run('pwd')
run('cp /home/laowang/workspace/test.py /home/laowang/test')
print 'remote copy file success'
本地localcopyfile四种方法的执行最后:
fabric本地执行代码
远程remote四种方法的执行最后:
fabric远程执行代码
明显 :
1 远程你就 你没在代码外面加设好密码 你就 是绝不会,在执行脚本的等到,代码会提示会让输入密码,只有 执行,而本地你就 是绝不会,则绝不会。
2 两个只只绝对 是是是不然简简单单的演示,给运维的学生做两个铺垫。非常多相结合好linux多方面的命令就你就 做非常多其它相关的批量执行附加服务器和自动化运维管理的任务中了。