如何迭代开发 fabfile?

How do I iteratively develop a fabfile?

我正在阅读 fabric 和 运行 将我的脚本与测试 VM 结合使用,但是在修复其中的错误后,我无法再 运行 它,因为它失败了在较早的一行,因为它已经成功地创建了一个 addgroup 的组。我的问题是

写fabfile有什么好的开发策略?

是否有最佳实践可以使 fabfile 重新 运行 可用或更健壮,以便您可以 运行 在编写时多次使用它,或者人们是否对他们的 VM 进行快照并每 运行?

后回滚

就个人而言(我已经编写 fabfile 大约 2 年了)我倾向于制作它以便在启动执行它的代码之前检查它是否存在。示例:

@task
def provision():
    sudo('apt-get update')
    sudo('apt-get install -y {}'.format(' '.join(SERVER_PACKAGES)))

    # always do this so it never crashes
    sudo('mkdir -p {}'.format(ROOT_PATH)) 

    if files.exists(os.path.join(path, 'nginx')):
        print 'NGINX {} installed. Skipping.'.format(version)
        return

    do_instalation_here()

这样当你 运行 它不会崩溃,也不会把你赶出去。