TFLint禁用terraform_required_version等规则无效,求排查解决
问题
仓库中有大量未包含provider文件或配置的示例,为避免相关错误,我希望禁用TFLint的terraform_required_version和terraform_required_providers规则。但执行tflint --config=.tflint.hcl --recursive命令后,TFLint仍会报告这两个规则的警告,请问配置哪里出错了?
报错信息
32 issue(s) found: Warning: terraform "required_version" attribute is required (terraform_required_version) on line 0: (source code not available) .... Warning: Missing version constraint for provider "aws" in `required_providers` (terraform_required_providers) on modules/rds/password_secrets_manager/main.tf line 26: 26: resource "aws_secretsmanager_secret_version" "secret_version" {
当前.tflint.hcl配置
config { force = true module = true disabled_by_default = false } plugin "terraform" { enabled = true version = "0.5.0" source = "github.com/terraform-linters/tflint-ruleset-terraform" } plugin "aws" { enabled = true version = "0.28.0" source = "github.com/terraform-linters/tflint-ruleset-aws" } rule "terraform_required_version" { enabled = false } rule "terraform_required_providers" { enabled = false }
解决方案
你当前的配置错误在于全局的rule块无法正确禁用属于插件的规则,这两个规则是terraform插件提供的,必须在plugin "terraform"块内部定义禁用规则。
修改后的正确配置如下:
config { force = true module = true disabled_by_default = false } plugin "terraform" { enabled = true version = "0.5.0" source = "github.com/terraform-linters/tflint-ruleset-terraform" # 将禁用规则放在插件块内部 rule "terraform_required_version" { enabled = false } rule "terraform_required_providers" { enabled = false } } plugin "aws" { enabled = true version = "0.28.0" source = "github.com/terraform-linters/tflint-ruleset-aws" }
原理:TFLint的插件规则是与对应插件绑定的,全局rule块仅对核心规则生效,对于插件提供的规则,必须在插件的配置块内声明禁用,这样TFLint才能正确识别并跳过这些规则的检查。
内容的提问来源于stack exchange,提问作者lony
相关产品推荐
相关产品推荐

