Mic*_*ler 4 fabric continuous-delivery autodeploy
在我的结构脚本中,我有以下问题.我有一个名为autodeploy的主要任务.在这个任务中,我有一些我只想在本地运行一次的任务.所有远程任务都应该在主机列表的每个主机上运行.
env.roledefs ={
'testing': ['t-server-01', 't-server-02']
'staging': ['s-server-01', 's-server-02']
'live': ['l-server-01', 'l-server-02']
}
def localtask1():
# download artifact
def localtask2():
# cleanup locally
def remotetask():
# deploy artifact to all hosts
def autodeploy():
localtask1() # run this task only once, locally
remotetask() # run this task on all hosts
localtask2() # run this task only once
Run Code Online (Sandbox Code Playgroud)
电话如下.我想将角色作为属性传递.
fab -R test autodeploy
Run Code Online (Sandbox Code Playgroud)
使用包装器函数autodeploy中的execute函数,并为远程任务指定主机列表.
对于其他两个,您可以使用execute调用它们,例如远程任务,或直接调用它们.使用其中的本地函数,你会没事的,不需要在localhost上使用ssh.
编辑
既然你在评论中提到了一个不同的用例,我将模拟你如何做到这一点,从已经给出的文档中的位,添加param传递部分
码:
#copy above
#redefine this one
def autodeploy(role_from_arg):
localtask1()
execute(remotetask, role=role_from_arg)
localtask2()
#calls like fab autodeploy:testing
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4618 次 |
| 最近记录: |