tenable/terrascan

Incorrectly Flagging optional as Experimental

balq60 opened this issue · 7 comments

  • terrascan version: v1.18.1
  • Operating System: Linux (Amazon Linux 2)
  • terraform 1.5.0

Description

I want to use the optional function, as shown below

patch_manager_service_role_config = object({
create_role = bool
role_name = string
principal_type = string
principal_service = string
managed_policies_config = list(object({
managed_policy_name = string
}))
custom_policies_config = list(object({
custom_policy_name = string
custom_policy_description = string
effect = string
actions = list(string)
resources_arns = list(string)
condition = optional(object({
StringEquals = map(list(string))
}))
}))
})

This works fine with doing my terraform apply

What I Did

Now when I run

pre-commit run -a

I get

terrascan................................................................Failed

  • hook id: terrascan
  • exit code: 1

2023-06-23T14:09:08.861Z warn commons/load-dir.go:300 failed to build unified config. errors:
/home/ec2-user/environment/consumer-repo-v6/terraform-consumer/IaC/modules/iam_role/variables.tf:1,1-23: Optional object type attributes are experimental; This feature is currently an opt-in experiment, subject to change in future releases based on feedback.

Activate the feature for this module by adding module_variable_optional_attrs to the list of active experiments.
/home/ec2-user/environment/consumer-repo-v6/terraform-consumer/IaC/modules/iam_role/variables.tf:1,1-23: Optional object type attributes are experimental; This feature is currently an opt-in experiment, subject to change in future releases based on feedback.

Activate the feature for this module by adding module_variable_optional_attrs to the list of active experiments.
/home/ec2-user/environment/consumer-repo-v6/terraform-consumer/IaC/modules/iam_role/variables.tf:1,1-23: Optional object type attributes are experimental; This feature is currently an opt-in experiment, subject to change in future releases based on feedback.

Activate the feature for this module by adding module_variable_optional_attrs to the list of active experiments.

2023-06-23T14:09:09.078Z error cli/run.go:141 scan run failed{error 26 0 2 errors occurred:
* diagnostic errors while loading terraform config dir '/home/ec2-user/environment/consumer-repo-v6/terraform-consumer/IaC/environments/1-test'. error from terraform:
/home/ec2-user/environment/consumer-repo-v6/terraform-consumer/IaC/environments/1-test/ssm-patch-manager-variables.tf:19,1-40: Optional object type attributes are experimental; This feature is currently an opt-in experiment, subject to change in future releases based on feedback.

Activate the feature for this module by adding module_variable_optional_attrs to the list of active experiments.

    * failed to build terraform allResourcesConfig

}

When I followed the instructions and added the experiment and tried to run terraform apply I received this:

Admin:~/environment/consumer-repo-v6/terraform-consumer/IaC/environments/1-test (features/govcloud) $ terraform destroy

│ Error: Experiment has concluded

│ on providers.tf line 3, in terraform:
│ 3: experiments = [module_variable_optional_attrs]

│ Experiment "module_variable_optional_attrs" is no longer available. The final feature corresponding to this experiment differs from the experimental form and is available in the Terraform language from Terraform
│ v1.3.0 onwards.

I would love a mechanism to disable checking for experiments. Googling I find nothing!

So for now, I have had to comment out terrascan.

same here, would terrascan be broken for tf 1.3 and up when using optional(x) on variable{} in your tf code?

Any new notice about optional flag in vars? It is already in prod state in terraform so it should be fixed...

waiting for this feature as well, i have to disable terrascan in pre-commit for now :/

We're also waiting for this, it's been an issue for so long that we consider stopping usage of terrascan in favor of e.g. checkov.