我刚刚开始使用 Packer,并且有几个我的构建失败的实例,我很想登录到该框以调查原因。但是,似乎没有packer login
或类似的命令可以给我一个 shell。相反,在我有机会进行调查之前,运行就终止并拆毁了盒子。
我知道我可以使用 --debug 标志在每个阶段暂停执行,但是我很好奇是否有办法在运行失败后(以及在清理之前)暂停,然后在我的调试完成后停止清理.
谢谢。
我刚刚开始使用 Packer,并且有几个我的构建失败的实例,我很想登录到该框以调查原因。但是,似乎没有packer login
或类似的命令可以给我一个 shell。相反,在我有机会进行调查之前,运行就终止并拆毁了盒子。
我知道我可以使用 --debug 标志在每个阶段暂停执行,但是我很好奇是否有办法在运行失败后(以及在清理之前)暂停,然后在我的调试完成后停止清理.
谢谢。
这是我最大的烦恼packer
。值得庆幸的是,packer build
现在有一个选项-on-error
可以为您提供选择。
packer build -on-error=ask ...
救援。
来自打包程序构建文档:
-on-error=cleanup
(默认),-on-error=abort
,-on-error=ask
- 选择构建失败时要执行的操作。cleanup 在前面的步骤之后进行清理,删除临时文件和虚拟机。abort 在没有任何清理的情况下退出,这可能需要下一个构建使用-force
.ask
显示提示并等待您决定清理、中止或重试失败的步骤。
在广泛使用 Packer 之后, --debug 标志是最有帮助的。一旦该过程暂停,您将使用密钥(在当前目录中)通过 SSH 连接到该框并找出发生了什么。
是的,我处理这个问题的方法是在失败的步骤之后在脚本内联配置器中长时间休眠,然后我可以 ssh 到盒子上看看发生了什么。当然,调试标志很有用,但是如果您正在远程运行打包程序构建(我在 jenkins 上执行),您就不能真正坐在那里按下按钮。
我确实尝试对我在构建之外打包的所有东西进行测试 - 使用 Chef 供应器,我在打包之前对所有东西都进行了厨房测试。在打包器运行期间尝试调试除打包器之外的任何东西是一件非常痛苦的事情。
在自己查找此信息时,我遇到了许多对 Packer 的错误报告/功能请求。
显然,一年前有人向 virtualbox 和 vmware 构建器添加了新功能(https://github.com/mitchellh/packer/issues/409),但它还没有合并到 main.js 中。
在另一个错误(https://github.com/mitchellh/packer/issues/1687)中,他们正在考虑向 --debug 添加其他功能,但这似乎停滞不前。
如果 Packer 构建失败,首先检查构建过程卡在哪里,但按以下顺序进行检查: