自动化中Terraform计划的易读输出

14
我已经通过github/jenkins设置了自动化流程,以便将terraform plan的输出作为评论发布到github的pull request中。整个编排工作非常好,但是terraform plan的输出不太容易阅读,并且在这种自动化情况下,它没有像在终端中运行时那样提供一种方式。 我使用了几种方法,例如使用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 最好的方法是如何检索任何terraform计划的输出,以便可以引用它以在执行之前进行检查。在我看来,它只在终端中运行得很好。
任何帮助或建议都将不胜感激。
2个回答

17
默认情况下,Terraform使用终端转义序列来突出显示输出的部分,采用简单的格式,如颜色或粗体字。
为了在GitHub上复制该结果,需要将终端转义序列转换为GitHub能够呈现的形式。
不幸的是,GitHub评论是以GitHub风格的Markdown编写的,在我编写本文时,它不支持任何直接创建类似于Terraform计划输出的彩色文本的方法。因此,我不知道有没有简单的方法可以在GitHub评论中复制Terraform计划输出的文本格式。
如果您使用-no-color选项运行terraform plan,则它将跳过终端转义序列,并生成纯文本输出,您可以将其包含在Markdown评论中的预格式化文本块中。但是,该输出将不包括您通常在终端中看到的文本格式。
如果你愿意编写一些自定义格式化代码,以便在GitHub评论中以不同的格式呈现Terraform计划,那么你可以通过将计划保存到磁盘并使用terraform show读取它来获得计划的JSON表示形式:
terraform plan -out=tfplan
terraform show -json tfplan

这将生成计划的JSON表示形式,您可以在自己设计的程序中解析它,并发出任何结果格式。然而,这将比仅解释Terraform正常输出的终端转义序列要复杂得多,因为它是Terraform用于生成计划渲染的数据的JSON表示形式,而不是计划渲染本身的表示形式。

6
"-no-color起到了魔法般的作用。我没有意识到它会对输出结果产生如此大的影响。" - Ashley

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接