2013-07-19 39 views
1

下面是我的fab文件。蟒蛇皮 - 传递主机作为arguemnt

env.hosts = ['111.111.111.111'] 
env.user = "root" 
env.key_filename = "/home/ubuntu/.ssh/id_rsa" 
def chef(): 
    run('mkdir -p /home/ubuntu/')] 

如何将主机作为参数传递,以便我可以这样调用?

fab test host=111.111.111.111 

env.hosts = [host] 
env.user = "root" 
env.key_filename = "/home/ubuntu/.ssh/id_rsa" 
def chef(): 
    run('mkdir -p /home/ubuntu/')] 

回答

3
./fabfile.py 
from fabric.api import run, env 

env.user = "root" 
env.key_filename = "/home/ubuntu/.ssh/id_rsa" 
def test(): 
    run("mkdir -p /home/ubuntu/") 

--- 
fabric:~$ fab test -H 111.111.111.111 
>>>[192.168.99.20] Executing task 'test' 
>>>[192.168.99.20] run: mkdir -p /home/ubuntu/ 
>>> 
>>>Done. 

[-H] opstion设置env.hosts到主机串的给定的逗号分隔的列表。 请查询here以获取详细的fab命令usag

或类似的。

./fabfile.py 
def setenv(host=None): 
    if host is not None: 
     env.hosts= [host] 
    env.user = "ubuntu" 
    env.key_filename = "/home/ubuntu/.ssh/id_rsa" 

def test(): 
    run("mkdir -p /home/ubuntu/") 

--- 
fabric:~$ fab setenv:web01 test 
(snip) 
+0

很好的回答!请通过添加更多描述而不仅仅是示例来更清楚地说明。 –