【问题标题】:variable scanning procedure of tflinttflint的可变扫描程序
【发布时间】:2022-01-06 13:13:13
【问题描述】:

我是 tflint 和其他扫描工具的新手。我正在尝试了解扫描过程。

在我的示例中,我有 variable.tf 文件,我在其中传递变量名称,例如 azure 存储帐户名称、帐户层等。

我的 variable.tf 文件有我故意提供的。

variable "storage_account_name"{
type = string
default = "test-sa-123"


}

在 main.tf 中,我使用的是 var.storage_account_name。

如果我执行 tflint,通常它会抛出错误,因为存储帐户名称不应包含特殊字符,但它不会抛出任何错误。

所以我想了解 tflint 是否能够从 variables.tf 文件中获取该变量并在 main.tf 中抛出错误?

我也尝试了 checkov,但它没有为这个错误抛出错误。 有没有其他工具可以扫描 variables.tf 并在 main.tf 中抛出错误?还是我们需要在 tflint 中为此编写自己的规则?

谢谢, 桑托什

【问题讨论】:

标签: terraform lint


【解决方案1】:

Terraform 变量中的下划线有效。据我所知,Tflint 不会确定这一点。

这不会引发错误。即使将变量传递给提供程序并引用存储帐户,我也不希望这会引发错误。

有一些像this azure one这样的规则集插件用于tflint,这可能会增加它捕获的内容,但我仍然不会为此目的依赖它。

我处理这个问题的方法是通过 Terraform 变量验证。

关于存储帐户的规则似乎是 (source):

length: 3-24
type: Lowercase letters and numbers.

要将其标识为正则表达式值,您可以使用:^[a-z0-9]*$

tests

这是一个非常粗略的例子:

variable "storage_account_name" {
  type = string

  validation {
    condition = (
      length(var.storage_account_name) > 3 && length(var.storage_account_name) < 25
    )
      error_message = "The storage_account_name value must be between 3 and 24 characters."
  }

  validation {
    condition = (
      regex('/^[a-z0-9]*$/g', var.storage_account_name)
    )
      error_message = "The storage account name must be only lowercase letters and numbers."
  }
}

【讨论】:

  • 感谢您的回答。我会确保使用这种方法
猜你喜欢
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
相关资源
最近更新 更多