当部署到生产环境时,我想在每台服务器之后暂停,以检查部署是否按计划在该服务器上进行,然后 Fabric 继续到下一台服务器。
这就是我定义角色的方式:
def dev():
"""Development Environment
"""
env.environment='dev'
env.roledefs = {
'backend': ['dev_back1', 'dev_back2'],
'fronts': ['dev_front1','dev_front2','dev_front3']
}
def stage():
"""Stage Environment
"""
env.environment='stage'
env.roledefs = {
'backend': ['stage_back1', 'stage_back2'],
'fronts': ['stage_front1','stage_front2','stage_front3']
}
def prod():
"""Production Environment
"""
env.environment='prod'
env.roledefs = {
'backend': ['prod_back1', 'prod_back2'],
'fronts': ['prod_front1','prod_front2','prod_front3']
}
就像它在所有服务器上执行一样,但是在生产环境中我确实希望管理员和 Fabric 之间进行交互。
像这样:
prod_front1 已完成,您想继续 prod_front2 吗?
完成后:
prod_front2 已完成,您想继续 prod_front3 吗?
最佳答案
这可行,但肯定不是最好的:
def 部署_this_server()
do_deployment_stuff()
answer = query_user_function("Server done. Continue to next server?")
if answer == "no":
sys.exit()
front_machines = env.roledefs['fronts']
对于 front_machines 中的 front_machine:
env.host_string = front_machine
deploy_this_server()
关于python - Fabric:如何提示用户在 env.roledefs 中定义的主机之间进行输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21259413/