2013-07-19 35 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

很好的回答!請通過添加更多描述而不僅僅是示例來更清楚地說明。 –