【问题标题】:terraform-compliance ERROR: is not a valid terraform plan json outputterraform-compliance 错误:不是有效的 terraform 计划 json 输出
【发布时间】:2020-10-15 01:14:02
【问题描述】:

说明: 我正在使用 terraform-compliance,它似乎不想接受文档说要使用的标准 json 文件。我在 github 上创建了一个问题,但我想我会在这里扩展它,以防我遗漏了一些完全可能的东西。

操作系统:macos catalina

正在运行的码头工人

terraform-compliance v1.2.7

我只是在文档上运行脚本,当我传递正确的 json 文件时它似乎不起作用。这还维护吗?

复制

# main.tf
provider "aws" {
  region = var.region
}

locals {
  common_tags = {
    Environment        = var.env_name
    TerraformWorkspace = var.env_name
  }
}

terraform {
  backend "remote" {
    organization = "*******"
    workspaces {
      prefix = "******"
    }
  }
}
# variables.tf
variable "region" {
  description = "AWS region"
}

variable "env_name" {
}

使用 terraform-compliance 参数我不确定这是什么意思?

我应该在 docker 中运行这些吗??

$ terraform show -json > state.out.json
$ terraform state pull > state.out
$ terraform-compliance -p state.out.json
# terraform-compliance v1.2.7 initiated

# ERROR: state.out.json is not a valid terraform plan json output.

测试版本:

  • terraform-compliance v1.2.7

  • Terraform v0.12.26

  • Python 2.7.16

【问题讨论】:

  • 它不要求状态文件。它想要计划输出。 terraform-compliance 旨在以增量方式运行,应该用于在更改发生之前阻止被拒绝的更改,而不是告诉您应该阻止哪些已经存在的更改。
  • @ydaetskcoR 谢谢好心的陌生人!我在文档中注意到您可以根据您的功能将状态文件或计划文件传递给它。因此,如果我尝试使用 plan.out 或 plan.out.json,它们都会失败并显示类似的消息。我会更新问题以反映这一点。
  • 可能是因为你如何拉/转换状态文件?通常你应该先拉,然后转换拉的状态文件,例如; terraform state pull > state.out && terraform show -json state.out > state.out.json

标签: terraform terraform-provider-aws terraform0.12+


【解决方案1】:

还支持states,以及plan 输出。您的状态文件中一定有 terraform-compliance 不满意的地方。

刚刚尝试了同样的方法,它可以工作。是否可以与维护者私下共享状态文件(假设里面会有敏感信息)?或者可能剥离一些部分 - 但我想这将更难做到。

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 2021-09-22
    • 2020-09-18
    • 2019-10-13
    • 2018-09-06
    • 2020-12-22
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多