上节另一个现在把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自身能力的命令就可以做等等密切相关的批量执行服务提供器和自动化运维管理的重要任务了。