Terraform 规划自动化中人类可读的输出

2024-04-24

我已经通过 github/jenkins 设置了自动化,以通过 jenkins 发布 repo 的 terraform plan 的输出,作为对 github 中拉取请求的评论。整个编排工作得很好,除了 terraform plan 的输出不是人类可读的,并且不会以这种自动化方式为您提供在终端中运行它时看起来的方式。 我使用了多种方法,例如使用 terraform show 作为计划文件,然后将其抓取到自定义文件并将其作为评论发布在 GitHub PR 中。在每种情况下,输出都包含一些二进制字符。

我什至使用了 terraform-plan-parserhttps://github.com/lifeomic/terraform-plan-parser https://github.com/lifeomic/terraform-plan-parser但这不适用于 terraform 0.12 并且与以下问题相关:-https://github.com/lifeomic/terraform-plan-parser/issues/31 https://github.com/lifeomic/terraform-plan-parser/issues/31

在自动化中检索任何地形计划的输出以便可以引用它的最佳方法是什么,但需要在应用完成之前进行检查。在我看来,它只在终端中工作得很好。

此处的任何帮助或建议将一如既往地受到高度赞赏。


默认情况下 Terraform 使用终端转义序列 https://en.wikipedia.org/wiki/ANSI_escape_code使用简单的格式(例如颜色或粗体字体)突出显示输出的某些部分。

为了在 GitHub 的上下文中准确地重现该结果,需要将终端转义序列转换为 GitHub 能够呈现的形式。

不幸的是,GitHub 评论是用 GitHub 风格的 Markdown 编写的,它不支持任何直接方式来创建类似于我撰写本文时 Terraform 的计划输出的彩色文本。因此,我知道没有简单的方法可以从 GitHub 评论中的 Terraform 计划输出中重现文本格式。

如果你跑terraform plan-no-color选项,那么它将跳过终端转义序列并生成纯文本输出,您可以将其包含在 Markdown 注释中的预格式化文本块中。但是,该输出将不包含您通常在终端中看到的文本格式。


如果您愿意编写一些自定义格式化代码,以不同的格式为您的 GitHub 评论呈现 Terraform 计划,您可以通过将计划保存到磁盘,然后使用以下命令读取它来获取计划的 JSON 表示形式terraform show:

terraform plan -out=tfplan
terraform show -json tfplan

这将产生计划的 JSON 表示形式 https://www.terraform.io/docs/internals/json-format.html#plan-representation您可以在自己设计的程序中进行解析并发出您想要的任何结果格式。然而,这比仅仅解释 Terraform 正常输出中的终端转义序列要多得多的工作,因为它是 Terraform 用于生成计划渲染的数据的 JSON 表示形式,而不是计划渲染本身的数据表示形式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Terraform 规划自动化中人类可读的输出 的相关文章

随机推荐