如何抑制/忽略 tflint 警告

问题描述 投票:0回答:4

我第一次使用 tflint 扫描我的 terraform 代码。为此,我创建了 shell 脚本来执行 tflint 命令,但是,在执行 tflint 作业时,我收到一些 [WARN] 消息。我不确定它们是如何生成的。有办法抑制吗

tflint 命令已成功执行,并且还在我的 terraform 代码中显示可能的问题/通知。

我正在使用下面的 Github 工作流程操作;

      - name: Setup TFLint
        uses: terraform-linters/setup-tflint@v1
        with:
          tflint_version: v0.26.0

      - name: Lint Terraform Code
        run: scripts/tflint.sh
        shell: bash
        continue-on-error: false

“.tflint.hcl”文件->

plugin "aws" {
  enabled = true
  version = "0.12.0"
  source  = "github.com/terraform-linters/tflint-ruleset-aws"
}

rule "terraform_naming_convention" {
  enabled = true
}

rule "terraform_unused_declarations" {
  enabled = true
}

rule "terraform_deprecated_index" {
  enabled = true
}

rule "terraform_documented_outputs" {
  enabled = true
}

rule "terraform_documented_variables" {
  enabled = true
}

rule "terraform_typed_variables" {
  enabled = true
}

tflint.sh ->

#!/usr/bin/env bash
echo "Scanning all files(*.tf) with tflint"
find * -name '*.tf' | grep -E -v ".terraform|.terragrunt-cache" | while read -r line; do
    tflint "$line" -f compact
done

Github 工作流程输出显示 [WARN] 消息-->

enter image description here

terraform github-actions lint
4个回答
14
投票

截至 tflint

v0.39.3
参考 您可以使用以下注释来内联忽略规则。

resource "aws_instance" "foo" {
    # tflint-ignore: aws_instance_invalid_type
    instance_type = "t1.2xlarge"
}

从 tflint

v0.40.0
Ref 添加了另外两种注释样式。

# comma-sperated
# tflint-ignore: aws_instance_invalid_type, other_rule

# ingore all using keyword
# tflint-ignore: all

不同的规则可以应用于资源块或其中的元素。 以下面示例中的

terraform_naming_convention
为例。此规则描述了资源的 terraform 命名约定违规。要忽略此语句,指令位于块上方。

# tflint-ignore: terraform_naming_convention
resource "random_id" "bad-example" {
  # tflint-ignore: terraform_deprecated_interpolation
  prefix = "${local.prefix}"
  keepers = {
    id = "dev-test"
  }
  byte_length = 2
}

0
投票

您需要在需要忽略的块之外添加注释。例如:

# tflint-ignore: terraform_unused_declarations
variable "branch" {
  type        = string
  description = "Git branch"
}

你也可以放置多个忽略:

# tflint-ignore: terraform_unused_declarations, other_rule
variable "branch" {
  type        = string
  description = "Git branch"
}

最后你可以从 lint 中排除该块:

# tflint-ignore: all
variable "branch" {
  type        = string
  description = "Git branch"
}

注意:根据被忽略的块,如果尚未创建资源,您也可以尝试将

tflint-ignore
放入块内。

参考:


-2
投票

我用一个创建 dynamodb 表的 terraform 文件遇到了这个问题,上面的建议都不起作用。 我已经在资源块内部和外部尝试过这些,但它们不起作用:

# tflint-ignore: server_side_encryption
# tflint-disable: server_side_encryption
# tflint-ignore: all

tflint 项目当前版本为 v0.47,此时可能不应该使用。


-5
投票

顺便说一下,我已经成功地通过使用空设备

/dev/null
来抑制警告消息,并将脚本生成的STDERR日志重定向到
2> /dev/null

最终代码:

- name: Lint Terraform Code
  run: scripts/tflint.sh 2> /dev/null
  shell: bash
  continue-on-error: false
© www.soinside.com 2019 - 2024. All rights reserved.