1:安装

pip install fabric

2:基本使用

在项目目录下新建fabfile.py文件,写入如下代码。fab的所有任务均写在fabfile.py文件或者fabfile包目录中(含有__init__.py)

from fabric.api import *

def uname():
    local("uname -s")

3:在远程机器上执行

在远程机器上执行,需要把local换成run。

from fabric.api import *

def uname():
    run("uname -s")
$ fab uname

运行这个命令,会让你输入远程机器的名字。然后在指定的机器上执行uname -s

4:指定主机

可以通过env.hosts指定。env是一个dict子类,可以像操作字典一样访问它,也可以想类一样直接访问它的属性。

from fabric.api import env, run

env.hosts = ['host1', 'host2']

def mytask():
    run('ls /var/www')

可以通过命令行选项指定

$ fab -H host1,host2 mytask

注意:命令行指定的主机会被env.hosts覆盖。可以通过env.hosts.extend(['host3', 'host4'])追加
可以给具体的某个任务指定主机,这样会更灵活*

$ fab mytask:hosts="host1;host2"

在fabfile文件你直接通过hosts装饰器给某个任务指定主机

from fabric.api import hosts, run

@hosts('host1', 'host2')
def mytask():
    run('ls /var/www')

注意:以上主机的定义的优先顺序为:fab mytask:host=host1,@hosts('host1'),env.hosts = ['host1'],--hosts=host1

5:定义远程主机角色组

from fabric.api import env

env.roledefs = {
    'web': ['www1', 'www2', 'www3'],
        'dns': ['ns1', 'ns2']
        }

        @roles('web')
        def mytask():
            run('ls /var/www')

上面任务会在主机www1,www2,www3上执行

6:定义排除的主机

使用--exclude-hosts/-x排除不想执行的主机。


Published

Category

python

Tags

Stay in Touch

Friendship Links