Fabric常用API
local 执行本地命令,如local('uname -s')
lcd 切换本地目录,如lcd('/home')
cd 切换远程目录
run 执行远程命令
sudo sudo 方式执行远程命令,如sudo('/etc/init.d/httpd start')
put 上传本地文件到远程主机,如put('/home/user.info', '/data/user.info')
get 从远程主机下载文件到本地,如get('/data/user.info', '/home/user.info')
prompt 获得用户输入信息,如prompt('please input user password:')
confirm 获得提示信息确认,如confirm('Test faild, Continue[Y/N]?')
reboot 重启远程主机,如reboot()
@task 函数装饰符,标识的函数为fab可调用,非标记对fab不可见,纯业务逻辑
@runs_once 函数装饰符,标识的函数只会执行一次,不受多台主机影响
编辑fabtest.py文件,给showColor函数添加@task装饰符
from fabric.api import *
from fabric.colors import *
env.roledefs = {
'slave1server':['root@slave1',],
'slave2server':['root@slave2',],
'slave3server':['root@slave3',]
}
#env.password = '123qwe!@#'
@roles('slave1server')
def task1():
run('/usr/zookeeper/bin/zkServer.sh restart')
run('/usr/zookeeper/bin/zkServer.sh status')
@roles('slave2server')
def task2():
run('/usr/zookeeper/bin/zkServer.sh restart')
run('/usr/zookeeper/bin/zkServer.sh status')
@roles('slave3server')
def task3():
run('/usr/zookeeper/bin/zkServer.sh restart')
run('/usr/zookeeper/bin/zkServer.sh status')
def dotask():
execute(task1)
execute(task2)
execute(task3)
#*************************************************
def task4():
local('/usr/zookeeper/bin/zkServer.sh restart')
local('/usr/zookeeper/bin/zkServer.sh status')
def task5():
local('ls -ls /usr')
def taskLocal():
task4()
task5()
@task
def showColor():
print green('success')
print red('fail')
print yellow('yellow')
执行命令
[root@master ~]# fab -f fabtest.py -l
Available commands:
showColor
[root@master ~]#
[root@master ~]# fab -f fabtest.py taskLocal
Warning: Command(s) not found:
taskLocal
Available commands:
showColor
[root@master ~]#