我已经通过github / jenkins建立了一个自动化机制,以通过jenkins发布回购的terraform计划的输出,作为对github中的pull请求的注释。整个编排工作都很好,除了以下事实:terraform计划的输出不是人类可读的,并且不会像在终端中运行它那样为您提供这种自动化方式。 我使用了几种方法,例如对计划文件使用terraform show,然后将其抓取到自定义文件,并将其作为注释发布到GitHub PR中。在每种情况下,输出都包含一些二进制字符。
我什至使用了terraform-plan-parser https://github.com/lifeomic/terraform-plan-parser 但这不适用于terraform 0.12并与以下问题有关: https://github.com/lifeomic/terraform-plan-parser/issues/31
在自动化中检索任何地形计划的输出的最佳方法是什么,以便可以对其进行引用,但是在完成应用之前需要对其进行检查。在我看来,它仅在终端机中有效。
这里的任何帮助或建议将一如既往。
答案 0 :(得分:2)
默认情况下,Terraform使用terminal escape sequences以简单的格式(例如颜色或加粗字体)突出显示输出的一部分。
为了在GitHub上下文中准确地再现该结果,需要将终端转义序列转换为GitHub能够呈现的形式。
不幸的是,GitHub注释是用GitHub风格的Markdown编写的,它与我撰写本文时的Terraform计划输出类似,不支持任何直接的方式来创建彩色文本。因此,我不知道要从GitHub注释中的Terraform计划输出中重现文本格式的简便方法。
如果您使用terraform plan
选项运行-no-color
,它将跳过终端转义序列并产生纯文本输出,您可以将其包含在Markdown注释的预格式化文本块中。但是,该输出因此将不包含您通常在终端中看到的文本格式。
如果您愿意编写一些自定义格式代码以针对GitHub注释以另一种格式显示Terraform计划,则可以通过将计划保存到磁盘,然后使用{{1 }}:
terraform show
这将产生a JSON representation of the plan,您可以在自己设计的程序中对其进行解析,并发出所需的任何结果格式。但是,这不仅仅是从Terraform的正常输出中解释终端转义序列,还需要做更多的工作,因为它是Terraform用于生成计划渲染的数据的JSON表示,而不是计划渲染本身。
答案 1 :(得分:0)