如何迭代开发 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()
这样当你 运行 它不会崩溃,也不会把你赶出去。
我正在阅读 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()
这样当你 运行 它不会崩溃,也不会把你赶出去。