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