python - Fabric:如何提示用户在 env.roledefs 中定义的主机之间进行输入?

标签 python fabric

当部署到生产环境时,我想在每台服务器之后暂停,以检查部署是否按计划在该服务器上进行,然后 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/

相关文章:

python - 将一系列对象加载到列表中的优雅方式

python - 如何设置 Pycharm 以在 Windows 上调试 Fabric fabfile?

python - Fabric 在不同主机上同时运行命令

python - 使用 perl 或 python 加强自动化

python - 如何在 Python 中用模拟对象替换函数进行单元测试

python - 我试图替换字符串中的所有字符,但它仍然没有按预期工作?

python - 我可以用我的数字语言对排序算法做些什么?

python - UT8 问题 - 有没有办法在 Python 中将看起来奇怪的字符 à 转换为正确的德语字符 ä ?

Python 3,urllib POST 提交

python - Fabric:设置每个主机外部任务的配置变量