From c831ade3779e7f689b4a46c1342c63b229d32f63 Mon Sep 17 00:00:00 2001 From: asarkar157 <20803896+asarkar157@users.noreply.github.com> Date: Fri, 1 May 2026 16:02:29 -0400 Subject: [PATCH 1/2] fix: add default values to optional variables across 8 azurerm modules Variables with nullable:true but no default are treated as required by Terraform, forcing callers to explicitly pass null. This adds default:null (or default:[] for list types in dynamic blocks) to 39 optional variables. Also adds missing resource_group_name/location variable declarations to azurerm_app_service_certificate and azurerm_cdn_frontdoor_profile. Modules fixed: - azurerm_mssql_database (14 fields) - azurerm_service_plan (1 field) - azurerm_app_service_certificate (7 fields + 2 missing vars) - azurerm_app_configuration (6 fields) - azurerm_linux_web_app (3 fields) - azurerm_cdn_frontdoor_profile (3 fields + 1 missing var) - azurerm_key_vault (1 field) - azurerm_cosmosdb_account (4 fields) --- .../variables.tf.json | 6 ++++++ .../variables.tf.json | 19 +++++++++++++++++++ .../variables.tf.json | 9 +++++++++ .../variables.tf.json | 4 ++++ azurerm/azurerm_key_vault/variables.tf.json | 1 + .../azurerm_linux_web_app/variables.tf.json | 3 +++ .../azurerm_mssql_database/variables.tf.json | 14 ++++++++++++++ .../azurerm_service_plan/variables.tf.json | 1 + 8 files changed, 57 insertions(+) diff --git a/azurerm/azurerm_app_configuration/variables.tf.json b/azurerm/azurerm_app_configuration/variables.tf.json index 29123bd..91f1d16 100644 --- a/azurerm/azurerm_app_configuration/variables.tf.json +++ b/azurerm/azurerm_app_configuration/variables.tf.json @@ -2,6 +2,7 @@ "variable": { "encryption": [ { + "default": [], "description": "Defines encryption settings, including identity and key vault details", "nullable": true, "type": "list(object({identity_client_id: optional(string),key_vault_key_identifier: optional(string)}))" @@ -9,6 +10,7 @@ ], "identity": [ { + "default": [], "description": "Configures the managed identity, including IDs and tenant information", "nullable": true, "type": "list(object({identity_ids: optional(list(string)),type: string}))" @@ -31,6 +33,7 @@ ], "public_network_access": [ { + "default": null, "description": "Defines access level for public networks (e.g., Enabled, Disabled)", "nullable": true, "type": "string" @@ -46,6 +49,7 @@ ], "replica": [ { + "default": [], "description": "Specifies replica settings, including location and endpoint details", "nullable": true, "type": "list(object({endpoint: optional(string),id: optional(string),location: string,name: string}))" @@ -69,6 +73,7 @@ ], "tags": [ { + "default": null, "description": "Defines metadata as key-value pairs for resource categorization", "nullable": true, "type": "map(string)" @@ -76,6 +81,7 @@ ], "timeouts": [ { + "default": null, "description": "Configures operation timeouts for create, read, update, and delete", "nullable": true, "type": "object({create: optional(string),delete: optional(string),read: optional(string),update: optional(string)})" diff --git a/azurerm/azurerm_app_service_certificate/variables.tf.json b/azurerm/azurerm_app_service_certificate/variables.tf.json index 9cdc857..006d939 100644 --- a/azurerm/azurerm_app_service_certificate/variables.tf.json +++ b/azurerm/azurerm_app_service_certificate/variables.tf.json @@ -2,6 +2,7 @@ "variable": { "app_service_plan_id": [ { + "default": null, "description": "ID of the App Service Plan to associate with the certificate; must be in the same region as the certificate.", "nullable": true, "type": "string" @@ -9,6 +10,7 @@ ], "key_vault_id": [ { + "default": null, "description": "Specifies the ID of the Key Vault containing the certificate. Must be in the same Azure region as the App Service Certificate.", "nullable": true, "type": "string" @@ -16,6 +18,7 @@ ], "key_vault_secret_id": [ { + "default": null, "description": "ID of the Key Vault Secret containing the private certificate. Must be in the format of a full resource ID.", "nullable": true, "type": "string" @@ -30,6 +33,7 @@ ], "password": [ { + "default": null, "description": "Password used to access the PFX file for the App Service Certificate; must match the password set during the certificate export.", "nullable": true, "type": "string" @@ -37,6 +41,7 @@ ], "pfx_blob": [ { + "default": null, "description": "PFX certificate file data in base64 format, used for importing the SSL/TLS certificate. Must be a valid PFX file.", "nullable": true, "type": "string" @@ -44,6 +49,7 @@ ], "tags": [ { + "default": null, "description": "Key-value pairs to organize and categorize resources, supporting resource management and billing; values must be strings.", "nullable": true, "type": "map(string)" @@ -51,10 +57,23 @@ ], "timeouts": [ { + "default": null, "description": "Defines the timeouts for create, update, and delete operations of the App Service Certificate.", "nullable": true, "type": "object({create: optional(string),delete: optional(string),read: optional(string),update: optional(string)})" } + ], + "resource_group_name": [ + { + "type": "string", + "description": "Name of the resource group that this resource will be created in." + } + ], + "location": [ + { + "type": "string", + "description": "Location that this resource will be created in. (e.g. eastus2, southeastasia)" + } ] } } diff --git a/azurerm/azurerm_cdn_frontdoor_profile/variables.tf.json b/azurerm/azurerm_cdn_frontdoor_profile/variables.tf.json index 12a0c44..27e34a3 100644 --- a/azurerm/azurerm_cdn_frontdoor_profile/variables.tf.json +++ b/azurerm/azurerm_cdn_frontdoor_profile/variables.tf.json @@ -2,6 +2,7 @@ "variable": { "identity": [ { + "default": [], "description": "Specifies the identity type and configuration for the CDN Front Door profile, supporting system-assigned, user-assigned, or both.", "nullable": true, "type": "list(object({identity_ids: optional(list(string)),principal_id: optional(string),tenant_id: optional(string),type: string}))" @@ -9,6 +10,7 @@ ], "log_scrubbing_rule": [ { + "default": [], "description": "Defines the log scrubbing rule configuration for the Azure Front Door Profile, specifying how sensitive data should be masked or scrubbed in logs.", "nullable": true, "type": "list(object({match_variable: string}))" @@ -44,10 +46,17 @@ ], "timeouts": [ { + "default": null, "description": "Specifies the timeouts for creating, updating, and deleting the CDN Front Door profile.", "nullable": true, "type": "object({create: optional(string),delete: optional(string),read: optional(string),update: optional(string)})" } + ], + "resource_group_name": [ + { + "type": "string", + "description": "Name of the resource group that this resource will be created in." + } ] } } diff --git a/azurerm/azurerm_cosmosdb_account/variables.tf.json b/azurerm/azurerm_cosmosdb_account/variables.tf.json index 29fc635..e43a64f 100644 --- a/azurerm/azurerm_cosmosdb_account/variables.tf.json +++ b/azurerm/azurerm_cosmosdb_account/variables.tf.json @@ -45,6 +45,7 @@ ], "ip_range_filter": [ { + "default": null, "description": "Set an IP range filter to restrict access to the Cosmos DB account.", "nullable": true, "type": "string" @@ -59,6 +60,7 @@ ], "key_vault_key_id": [ { + "default": null, "description": "Specify the Key Vault key ID for encryption at rest.", "nullable": true, "type": "string" @@ -80,6 +82,7 @@ ], "max_interval_in_seconds": [ { + "default": null, "description": "When used with the Bounded Staleness consistency level, this value represents the time amount of staleness.", "nullable": true, "type": "number" @@ -101,6 +104,7 @@ ], "network_acl_bypass_ids": [ { + "default": null, "description": "List of IDs allowed to bypass network ACLs.", "nullable": true, "type": "list(string)" diff --git a/azurerm/azurerm_key_vault/variables.tf.json b/azurerm/azurerm_key_vault/variables.tf.json index d2683f2..8a71456 100644 --- a/azurerm/azurerm_key_vault/variables.tf.json +++ b/azurerm/azurerm_key_vault/variables.tf.json @@ -65,6 +65,7 @@ ], "tags": [ { + "default": null, "description": "A map of tags to assign to the Key Vault.", "nullable": true, "type": "map(string)" diff --git a/azurerm/azurerm_linux_web_app/variables.tf.json b/azurerm/azurerm_linux_web_app/variables.tf.json index c6cff6b..ac969e2 100644 --- a/azurerm/azurerm_linux_web_app/variables.tf.json +++ b/azurerm/azurerm_linux_web_app/variables.tf.json @@ -23,6 +23,7 @@ ], "client_certificate_exclusion_paths": [ { + "default": null, "description": "Specifies paths that are excluded from client certificate authentication requirements.", "nullable": true, "type": "string" @@ -86,6 +87,7 @@ ], "virtual_network_subnet_id": [ { + "default": null, "description": "The ID of the virtual network subnet where the web app is placed.", "nullable": true, "type": "string" @@ -100,6 +102,7 @@ ], "connection_string": [ { + "default": [], "description": "Connection string for the web app.", "nullable": true, "type": "list(object({name: string, type: string, value: string}))" diff --git a/azurerm/azurerm_mssql_database/variables.tf.json b/azurerm/azurerm_mssql_database/variables.tf.json index f2505fd..16edcd1 100644 --- a/azurerm/azurerm_mssql_database/variables.tf.json +++ b/azurerm/azurerm_mssql_database/variables.tf.json @@ -23,6 +23,7 @@ ], "creation_source_database_id": [ { + "default": null, "description": "Specifies the ID of the source database for database creation, required for creating a database from an existing database or a restore point.", "nullable": true, "type": "string" @@ -37,6 +38,7 @@ ], "enclave_type": [ { + "default": null, "description": "Specifies the type of enclave to enable for the SQL database. Must be either \"None\" or \"Virtualized\".", "nullable": true, "type": "string" @@ -51,6 +53,7 @@ ], "identity": [ { + "default": [], "description": "Specifies the managed identity to associate with the SQL database for authentication purposes.", "nullable": true, "type": "list(object({identity_ids: list(string),type: string}))" @@ -58,6 +61,7 @@ ], "import": [ { + "default": [], "description": "Specifies whether the database should be created by importing a BACPAC file. Requires the source URI and storage account credentials.", "nullable": true, "type": "list(object({administrator_login: string,administrator_login_password: string,authentication_type: string,storage_account_id: optional(string),storage_key: string,storage_key_type: string,storage_uri: string}))" @@ -72,6 +76,7 @@ ], "license_type": [ { + "default": null, "description": "Specifies the licensing model for the SQL database, either 'LicenseIncluded' or 'BasePrice'.", "nullable": true, "type": "string" @@ -128,6 +133,7 @@ ], "recover_database_id": [ { + "default": null, "description": "ID of the source database to recover from, required when creating a database using the recovery feature.", "nullable": true, "type": "string" @@ -135,6 +141,7 @@ ], "recovery_point_id": [ { + "default": null, "description": "Specifies the unique identifier of the recovery point to restore the database from.", "nullable": true, "type": "string" @@ -142,6 +149,7 @@ ], "restore_dropped_database_id": [ { + "default": null, "description": "Specifies the ID of the dropped database to restore. Must be used with the restore point in time parameter.", "nullable": true, "type": "string" @@ -149,6 +157,7 @@ ], "restore_long_term_retention_backup_id": [ { + "default": null, "description": "Specifies the ID of the long-term retention backup to restore from. Must be a valid backup ID in the same region and subscription.", "nullable": true, "type": "string" @@ -156,6 +165,7 @@ ], "restore_point_in_time": [ { + "default": null, "description": "Specifies the point in time (ISO8601 format) to restore the database to, applicable only for point-in-time restore operations.", "nullable": true, "type": "string" @@ -163,6 +173,7 @@ ], "sample_name": [ { + "default": null, "description": "Specifies the name of the SQL database; must be unique within the SQL server and adhere to Azure naming conventions.", "nullable": true, "type": "string" @@ -170,6 +181,7 @@ ], "secondary_type": [ { + "default": null, "description": "Specifies the replication type for the secondary database; valid options are \"Geo\", \"Named\", or \"None\".", "nullable": true, "type": "string" @@ -219,6 +231,7 @@ ], "timeouts": [ { + "default": null, "description": "Defines the time durations for create, update, and delete operations, allowing customization of operation timeouts.", "nullable": true, "type": "object({create: optional(string),delete: optional(string),read: optional(string),update: optional(string)})" @@ -240,6 +253,7 @@ ], "transparent_data_encryption_key_vault_key_id": [ { + "default": null, "description": "Specifies the Azure Key Vault key ID to use for transparent data encryption, requiring the key to be in the same region as the database.", "nullable": true, "type": "string" diff --git a/azurerm/azurerm_service_plan/variables.tf.json b/azurerm/azurerm_service_plan/variables.tf.json index 2f66f02..2abcdb8 100644 --- a/azurerm/azurerm_service_plan/variables.tf.json +++ b/azurerm/azurerm_service_plan/variables.tf.json @@ -2,6 +2,7 @@ "variable": { "app_service_environment_id": [ { + "default": null, "description": "The ID of the App Service Environment to use for the service plan. Optional.", "nullable": true, "type": "string" From 34e9cc9e337f7f03bb7f821e94d11dea768e49f7 Mon Sep 17 00:00:00 2001 From: asarkar157 <20803896+asarkar157@users.noreply.github.com> Date: Tue, 5 May 2026 16:15:10 -0400 Subject: [PATCH 2/2] fix: add default null to optional variables in 9 AWS modules Add "default": null to 150 optional variables across 9 AWS modules that were missing defaults. Without a default, Terraform treats them as required even when nullable=true, causing false-positive 'missing field' errors in StackGen provisioning. Modules fixed: - aws_launch_template (31 fields) - aws_instance (40 fields) - aws_db_instance (53 fields) - aws_iam_role (7 fields) - aws_iam_user (2 fields) - aws_security_group (3 fields) - aws_db_parameter_group (6 fields) - aws_db_subnet_group (3 fields) - aws_ec2_transit_gateway (5 fields) Cross-referenced against official Terraform AWS provider docs to confirm all 150 fields are Optional. 4 Required fields (allocated_storage, engine, username on db_instance; subnet_ids on db_subnet_group) were correctly excluded. --- aws/aws_db_instance/variables.tf.json | 161 ++++++++++------ aws/aws_db_parameter_group/variables.tf.json | 20 +- aws/aws_db_subnet_group/variables.tf.json | 11 +- aws/aws_ec2_transit_gateway/variables.tf.json | 177 +++++++++--------- aws/aws_iam_role/variables.tf.json | 18 +- aws/aws_iam_user/variables.tf.json | 8 +- aws/aws_instance/variables.tf.json | 120 ++++++++---- aws/aws_launch_template/variables.tf.json | 95 ++++++---- aws/aws_security_group/variables.tf.json | 9 +- 9 files changed, 384 insertions(+), 235 deletions(-) diff --git a/aws/aws_db_instance/variables.tf.json b/aws/aws_db_instance/variables.tf.json index 3ebc14c..095fb4e 100644 --- a/aws/aws_db_instance/variables.tf.json +++ b/aws/aws_db_instance/variables.tf.json @@ -11,7 +11,8 @@ { "type": "bool", "description": "Allow major version upgrade", - "nullable": true + "nullable": true, + "default": null } ], "apply_immediately": [ @@ -34,7 +35,8 @@ { "type": "string", "description": "The availability zone", - "nullable": true + "nullable": true, + "default": null } ], "backup_retention_period": [ @@ -57,28 +59,32 @@ { "type": "string", "description": "The backup window", - "nullable": true + "nullable": true, + "default": null } ], "blue_green_update": [ { "type": "list(object({enabled: bool}))", "description": "The blue green update", - "nullable": true + "nullable": true, + "default": null } ], "ca_cert_identifier": [ { "type": "string", "description": "The CA certificate identifier", - "nullable": true + "nullable": true, + "default": null } ], "character_set_name": [ { "type": "string", "description": "The character set name", - "nullable": true + "nullable": true, + "default": null } ], "copy_tags_to_snapshot": [ @@ -93,28 +99,32 @@ { "type": "string", "description": "The custom IAM instance profile", - "nullable": true + "nullable": true, + "default": null } ], "db_name": [ { "type": "string", "description": "The database name", - "nullable": true + "nullable": true, + "default": null } ], "db_subnet_group_name": [ { "type": "string", "description": "The database subnet group name", - "nullable": true + "nullable": true, + "default": null } ], "dedicated_log_volume": [ { "type": "bool", "description": "Dedicated log volume", - "nullable": true + "nullable": true, + "default": null } ], "delete_automated_backups": [ @@ -137,49 +147,56 @@ { "type": "string", "description": "The domain", - "nullable": true + "nullable": true, + "default": null } ], "domain_auth_secret_arn": [ { "type": "string", "description": "The domain auth secret ARN", - "nullable": true + "nullable": true, + "default": null } ], "domain_dns_ips": [ { "type": "list(string)", "description": "The domain DNS IPs", - "nullable": true + "nullable": true, + "default": null } ], "domain_fqdn": [ { "type": "string", "description": "The domain FQDN", - "nullable": true + "nullable": true, + "default": null } ], "domain_iam_role_name": [ { "type": "string", "description": "The domain IAM role name", - "nullable": true + "nullable": true, + "default": null } ], "domain_ou": [ { "type": "string", "description": "The domain OU", - "nullable": true + "nullable": true, + "default": null } ], "enabled_cloudwatch_logs_exports": [ { "type": "list(string)", "description": "The enabled CloudWatch logs exports", - "nullable": true + "nullable": true, + "default": null } ], "engine": [ @@ -193,7 +210,8 @@ { "type": "string", "description": "The engine version", - "nullable": true + "nullable": true, + "default": null } ], "engine_lifecycle_support": [ @@ -208,28 +226,32 @@ { "type": "string", "description": "The final snapshot identifier", - "nullable": true + "nullable": true, + "default": null } ], "iam_database_authentication_enabled": [ { "type": "bool", "description": "The IAM database authentication enabled", - "nullable": true + "nullable": true, + "default": null } ], "identifier": [ { "type": "string", "description": "The identifier", - "nullable": true + "nullable": true, + "default": null } ], "identifier_prefix": [ { "type": "string", "description": "The identifier prefix", - "nullable": true + "nullable": true, + "default": null } ], "instance_class": [ @@ -243,49 +265,56 @@ { "type": "number", "description": "The IOPS", - "nullable": true + "nullable": true, + "default": null } ], "kms_key_id": [ { "type": "string", "description": "The KMS key ID", - "nullable": true + "nullable": true, + "default": null } ], "license_model": [ { "type": "string", "description": "The license model", - "nullable": true + "nullable": true, + "default": null } ], "maintenance_window": [ { "type": "string", "description": "The maintenance window", - "nullable": true + "nullable": true, + "default": null } ], "manage_master_user_password": [ { "type": "bool", "description": "Manage master user password", - "nullable": true + "nullable": true, + "default": null } ], "master_user_secret_kms_key_id": [ { "type": "string", "description": "The master user secret KMS key ID", - "nullable": true + "nullable": true, + "default": null } ], "max_allocated_storage": [ { "type": "number", "description": " Specifies the maximum storage (in GiB) that Amazon RDS can automatically scale to for this DB instance", - "nullable": true + "nullable": true, + "default": null } ], "monitoring_interval": [ @@ -300,49 +329,56 @@ { "type": "string", "description": "The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to CloudWatch Logs", - "nullable": true + "nullable": true, + "default": null } ], "multi_az": [ { "type": "bool", "description": "Specifies if the RDS instance is multi-AZ", - "nullable": true + "nullable": true, + "default": null } ], "nchar_character_set_name": [ { "type": "string", "description": "The NCHAR character set name", - "nullable": true + "nullable": true, + "default": null } ], "network_type": [ { "type": "string", "description": "The network type", - "nullable": true + "nullable": true, + "default": null } ], "option_group_name": [ { "type": "string", "description": "The option group name", - "nullable": true + "nullable": true, + "default": null } ], "parameter_group_name": [ { "type": "string", "description": "The parameter group name", - "nullable": true + "nullable": true, + "default": null } ], "password": [ { "type": "string", "description": " Password for the master DB user.", - "nullable": true + "nullable": true, + "default": null } ], "performance_insights_enabled": [ @@ -357,21 +393,24 @@ { "type": "string", "description": "The performance insights KMS key ID", - "nullable": true + "nullable": true, + "default": null } ], "performance_insights_retention_period": [ { "type": "number", "description": "The performance insights retention period", - "nullable": true + "nullable": true, + "default": null } ], "port": [ { "type": "number", "description": "The port", - "nullable": true + "nullable": true, + "default": null } ], "publicly_accessible": [ @@ -386,42 +425,48 @@ { "type": "string", "description": "The replica mode", - "nullable": true + "nullable": true, + "default": null } ], "replicate_source_db": [ { "type": "string", "description": "The replicate source DB", - "nullable": true + "nullable": true, + "default": null } ], "upgrade_storage_config": [ { "type": "bool", "description": "The upgrade storage config", - "nullable": true + "nullable": true, + "default": null } ], "restore_to_point_in_time": [ { "type": "list(object({restore_time: string, source_db_instance_identifier: string, source_db_instance_automated_backups_arn: string, source_dbi_resource_id: string, use_latest_restorable_time: bool}))", "description": "The restore to point in time", - "nullable": true + "nullable": true, + "default": null } ], "skip_final_snapshot": [ { "type": "bool", "description": "Skip final snapshot", - "nullable": true + "nullable": true, + "default": null } ], "snapshot_identifier": [ { "type": "string", "description": "The snapshot identifier", - "nullable": true + "nullable": true, + "default": null } ], "storage_encrypted": [ @@ -436,28 +481,32 @@ { "type": "string", "description": "The storage type", - "nullable": true + "nullable": true, + "default": null } ], "storage_throughput": [ { "type": "number", "description": "The storage throughput", - "nullable": true + "nullable": true, + "default": null } ], "tags": [ { "type": "map(string)", "description": "The tags", - "nullable": true + "nullable": true, + "default": null } ], "timezone": [ { "type": "string", "description": "The timezone", - "nullable": true + "nullable": true, + "default": null } ], "username": [ @@ -471,29 +520,33 @@ { "type": "list(string)", "description": "The VPC security group IDs", - "nullable": true + "nullable": true, + "default": null } ], "customer_owned_ip_enabled": [ { "type": "bool", "description": "The customer owned IP enabled", - "nullable": true + "nullable": true, + "default": null } ], "timeouts": [ { "type": "object({create: optional(string), update: optional(string), delete: optional(string)})", "description": "The timeouts", - "nullable": true + "nullable": true, + "default": null } ], "s3_import": [ { "type": "list(object({bucket_name: string, bucket_prefix: optional(string), ingestion_role: string, source_engine: string, source_engine_version: string}))", "description": "The S3 import", - "nullable": true + "nullable": true, + "default": null } ] } -} \ No newline at end of file +} diff --git a/aws/aws_db_parameter_group/variables.tf.json b/aws/aws_db_parameter_group/variables.tf.json index a34efbc..5ffccd4 100644 --- a/aws/aws_db_parameter_group/variables.tf.json +++ b/aws/aws_db_parameter_group/variables.tf.json @@ -4,14 +4,16 @@ { "type": "string", "description": "The name of the parameter group", - "nullable": true + "nullable": true, + "default": null } ], "name_prefix": [ { "type": "string", "description": "Creates a unique name beginning with the specified prefix", - "nullable": true + "nullable": true, + "default": null } ], "family": [ @@ -25,29 +27,33 @@ { "type": "string", "description": "The description of the parameter group", - "nullable": true + "nullable": true, + "default": null } ], "parameter": [ { "type": "list(object({name: string, value: string, apply_method: string}))", "description": "A list of parameter values", - "nullable": true + "nullable": true, + "default": null } ], "skip_destroy": [ { "type": "bool", "description": "Set to true if you do not wish the parameter group to be deleted at destroy time", - "nullable": true + "nullable": true, + "default": null } ], "tags": [ { "type": "map(string)", "description": "A map of tags to assign to the parameter group", - "nullable": true + "nullable": true, + "default": null } ] } -} \ No newline at end of file +} diff --git a/aws/aws_db_subnet_group/variables.tf.json b/aws/aws_db_subnet_group/variables.tf.json index 5a5f46f..07578f7 100644 --- a/aws/aws_db_subnet_group/variables.tf.json +++ b/aws/aws_db_subnet_group/variables.tf.json @@ -11,14 +11,16 @@ { "type": "string", "description": "The name of the DB subnet group. If omitted, Terraform will assign a random, unique name.", - "nullable": true + "nullable": true, + "default": null } ], "name_prefix": [ { "type": "string", "description": "Creates a unique name beginning with the specified prefix. Conflicts with `name`.", - "nullable": true + "nullable": true, + "default": null } ], "description": [ @@ -33,8 +35,9 @@ { "type": "map(string)", "description": " A map of tags to assign to the resource.", - "nullable": true + "nullable": true, + "default": null } ] } -} \ No newline at end of file +} diff --git a/aws/aws_ec2_transit_gateway/variables.tf.json b/aws/aws_ec2_transit_gateway/variables.tf.json index c82cdf0..a04f41b 100644 --- a/aws/aws_ec2_transit_gateway/variables.tf.json +++ b/aws/aws_ec2_transit_gateway/variables.tf.json @@ -1,87 +1,92 @@ { - "variable": { - "amazon_side_asn": [ - { - "description": "The Autonomous System Number (ASN) for the Amazon side of a BGP session.", - "nullable": true, - "type": "number" - } - ], - "auto_accept_shared_attachments": [ - { - "description": "Whether to automatically accept cross-account attachments for the transit gateway.", - "nullable": true, - "type": "string", - "default": "disable" - } - ], - "default_route_table_association": [ - { - "description": "Whether resource attachments are automatically associated with the default association route table.", - "nullable": true, - "type": "string", - "default": "enable" - } - ], - "default_route_table_propagation": [ - { - "description": "Whether resource attachments automatically propagate routes to the default propagation route table.", - "nullable": true, - "type": "string", - "default": "enable" - } - ], - "description": [ - { - "description": "A description for the transit gateway.", - "nullable": true, - "type": "string" - } - ], - "dns_support": [ - { - "description": "Enable or disable DNS support for the transit gateway.", - "nullable": true, - "type": "string", - "default": "enable" - } - ], - "multicast_support": [ - { - "description": "Enable or disable multicast support on the transit gateway.", - "nullable": true, - "type": "string", - "default": "disable" - } - ], - "tags": [ - { - "description": "A map of tags to assign to the transit gateway.", - "nullable": true, - "type": "map(string)" - } - ], - "transit_gateway_cidr_blocks": [ - { - "description": "The list of CIDR blocks for the transit gateway.", - "nullable": true, - "type": "list(string)" - } - ], - "vpn_ecmp_support": [ - { - "description": "Enable or disable Equal-Cost Multi-Path (ECMP) routing support for VPN connections.", - "nullable": true, - "type": "string", - "default": "enable" - } - ], - "timeouts": [ - { - "description": "A map of timeouts for the transit gateway.", - "nullable": true, - "type": "object({ create: optional(string), delete: optional(string), update: optional(string) })" - } - ] - } -} \ No newline at end of file + "variable": { + "amazon_side_asn": [ + { + "description": "The Autonomous System Number (ASN) for the Amazon side of a BGP session.", + "nullable": true, + "type": "number", + "default": null + } + ], + "auto_accept_shared_attachments": [ + { + "description": "Whether to automatically accept cross-account attachments for the transit gateway.", + "nullable": true, + "type": "string", + "default": "disable" + } + ], + "default_route_table_association": [ + { + "description": "Whether resource attachments are automatically associated with the default association route table.", + "nullable": true, + "type": "string", + "default": "enable" + } + ], + "default_route_table_propagation": [ + { + "description": "Whether resource attachments automatically propagate routes to the default propagation route table.", + "nullable": true, + "type": "string", + "default": "enable" + } + ], + "description": [ + { + "description": "A description for the transit gateway.", + "nullable": true, + "type": "string", + "default": null + } + ], + "dns_support": [ + { + "description": "Enable or disable DNS support for the transit gateway.", + "nullable": true, + "type": "string", + "default": "enable" + } + ], + "multicast_support": [ + { + "description": "Enable or disable multicast support on the transit gateway.", + "nullable": true, + "type": "string", + "default": "disable" + } + ], + "tags": [ + { + "description": "A map of tags to assign to the transit gateway.", + "nullable": true, + "type": "map(string)", + "default": null + } + ], + "transit_gateway_cidr_blocks": [ + { + "description": "The list of CIDR blocks for the transit gateway.", + "nullable": true, + "type": "list(string)", + "default": null + } + ], + "vpn_ecmp_support": [ + { + "description": "Enable or disable Equal-Cost Multi-Path (ECMP) routing support for VPN connections.", + "nullable": true, + "type": "string", + "default": "enable" + } + ], + "timeouts": [ + { + "description": "A map of timeouts for the transit gateway.", + "nullable": true, + "type": "object({ create: optional(string), delete: optional(string), update: optional(string) })", + "default": null + } + ] + } +} diff --git a/aws/aws_iam_role/variables.tf.json b/aws/aws_iam_role/variables.tf.json index 4631717..9006019 100644 --- a/aws/aws_iam_role/variables.tf.json +++ b/aws/aws_iam_role/variables.tf.json @@ -11,7 +11,8 @@ { "description": "The description of the role", "nullable": true, - "type": "string" + "type": "string", + "default": null } ], "force_detach_policies": [ @@ -26,35 +27,40 @@ { "description": "The policy document", "nullable": true, - "type": "list(object({ name: string, policy: string }))" + "type": "list(object({ name: string, policy: string }))", + "default": null } ], "name": [ { "description": "The name of the role", "type": "string", - "nullable": true + "nullable": true, + "default": null } ], "tags": [ { "description": "A mapping of tags to assign to the role", "nullable": true, - "type": "map(string)" + "type": "map(string)", + "default": null } ], "path": [ { "description": "The path to the role", "type": "string", - "nullable": true + "nullable": true, + "default": null } ], "max_session_duration": [ { "description": "The maximum session duration (in seconds) that you want to set for the specified role", "type": "number", - "nullable": true + "nullable": true, + "default": null } ], "permissions_boundary": [ diff --git a/aws/aws_iam_user/variables.tf.json b/aws/aws_iam_user/variables.tf.json index ed64dc6..efdd79d 100644 --- a/aws/aws_iam_user/variables.tf.json +++ b/aws/aws_iam_user/variables.tf.json @@ -19,7 +19,8 @@ { "type": "string", "description": "he ARN of the policy that is used to set the permissions boundary for the user.", - "nullable": true + "nullable": true, + "default": null } ], "force_destroy": [ @@ -34,8 +35,9 @@ { "type": "map(string)", "description": "Key-value map of tags for the IAM user. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.", - "nullable": true + "nullable": true, + "default": null } ] } -} \ No newline at end of file +} diff --git a/aws/aws_instance/variables.tf.json b/aws/aws_instance/variables.tf.json index e13e34b..b64992f 100644 --- a/aws/aws_instance/variables.tf.json +++ b/aws/aws_instance/variables.tf.json @@ -4,7 +4,8 @@ { "type": "string", "description": "AMI to use for the instance. Required unless `Launch Template` is specified and the `Launch Template` specifes an AMI. If an AMI is specified in the `Launch Template`, setting `ami` will override the AMI specified in the `Launch Template`.", - "nullable": true + "nullable": true, + "default": null } ], "associate_public_ip_address": [ @@ -19,161 +20,184 @@ { "type": "string", "description": "AZ to start the instance in.", - "nullable": true + "nullable": true, + "default": null } ], "capacity_reservation_specification": [ { "type": "list(object({capacity_reservation_preference: string, capacity_reservation_target: list(object({capacity_reservation_id: string, capacity_reservation_resource_group_arn: string}))}))", "description": "Describes an instance's Capacity Reservation targeting option.", - "nullable": true + "nullable": true, + "default": null } ], "cpu_options": [ { "type": "list(object({amd_sev_snp: string, core_count: number, threads_per_core: number}))", "description": "The CPU options for the instance.", - "nullable": true + "nullable": true, + "default": null } ], "credit_specification": [ { "type": "list(object({cpu_credits: string}))", "description": "Configuration block for customizing the credit specification of the instance.Terraform will only perform drift detection of its value when present in a configuration. Removing this configuration on existing instances will only stop managing it. It will not change the configuration back to the default for the instance type.", - "nullable": true + "nullable": true, + "default": null } ], "disable_api_stop": [ { "type": "bool", "description": "If true, enables EC2 Instance Stop Protection.", - "nullable": true + "nullable": true, + "default": null } ], "disable_api_termination": [ { "type": "bool", "description": "If true, enables EC2 Instance Termination Protection.", - "nullable": true + "nullable": true, + "default": null } ], "ebs_block_device": [ { "type": "list(object({delete_on_termination: bool, device_name: string, encrypted: bool, iops: number, kms_key_id: string, snapshot_id: string, tags: map(string), throughput: number, volume_size: number, volume_type: string}))", "description": "One or more configuration blocks with additional EBS block devices to attach to the instance. Block device configurations only apply on resource creation.", - "nullable": true + "nullable": true, + "default": null } ], "ebs_optimized": [ { "type": "bool", "description": "If true, the launched EC2 instance will be EBS-optimized. Note that if this is not set on an instance type that is optimized by default then this will show as disabled but if the instance type is optimized by default then there is no need to set this and there is no effect to disabling it.", - "nullable": true + "nullable": true, + "default": null } ], "enclave_options": [ { "type": "list(object({enabled: bool}))", "description": "Enable Nitro Enclaves on launched instances.", - "nullable": true + "nullable": true, + "default": null } ], "ephemeral_block_device": [ { "type": "list(object({device_name: string, no_device: string, virtual_name: string}))", "description": "One or more configuration blocks to customize Ephemeral (also known as \"Instance Store\") volumes on the instance.", - "nullable": true + "nullable": true, + "default": null } ], "get_password_data": [ { "type": "bool", "description": "If true, wait for password data to become available and retrieve it. Useful for getting the administrator password for instances running Microsoft Windows.", - "nullable": true + "nullable": true, + "default": null } ], "hibernation": [ { "type": "bool", "description": "f true, the launched EC2 instance will support hibernation.", - "nullable": true + "nullable": true, + "default": null } ], "host_id": [ { "type": "string", "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host.", - "nullable": true + "nullable": true, + "default": null } ], "host_resource_group_arn": [ { "type": "string", "description": "ARN of the host resource group in which to launch the instances. If you specify an ARN, omit the tenancy parameter or set it to host.", - "nullable": true + "nullable": true, + "default": null } ], "iam_instance_profile": [ { "type": "string", "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile. Ensure your credentials have the correct permission to assign the instance profile according to the EC2 documentation, notably `iam:PassRole`.", - "nullable": true + "nullable": true, + "default": null } ], "instance_initiated_shutdown_behavior": [ { "type": "string", "description": "Shutdown behavior for the instance.", - "nullable": true + "nullable": true, + "default": null } ], "instance_market_options": [ { "type": "list(object({market_type: optional(string), spot_options: list(object({block_duration_minutes: optional(number), instance_interruption_behavior: string, max_price: string, spot_instance_type: string, valid_until: optional(string)}))}))", "description": "Describes the market (purchasing) option for the instances.", - "nullable": true + "nullable": true, + "default": null } ], "instance_type": [ { "type": "string", "description": "Instance type to use for the instance. Required unless `Launch Template` is specified and the Launch Template specifies an instance type. If an instance type is specified in the Launch Template, setting `Instance Type` will override the instance type specified in the Launch Template. Updates to this field will trigger a stop/start of the EC2 instance.", - "nullable": true + "nullable": true, + "default": null } ], "ipv6_address_count": [ { "type": "number", "description": "Number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet.", - "nullable": true + "nullable": true, + "default": null } ], "ipv6_addresses": [ { "type": "list(string)", "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface", - "nullable": true + "nullable": true, + "default": null } ], "key_name": [ { "type": "string", "description": "Key name of the Key Pair to use for the instance; which can be managed using the `Key Pair` resource.", - "nullable": true + "nullable": true, + "default": null } ], "launch_template": [ { "type": "list(object({id: string, name: string, version: string}))", "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template.", - "nullable": true + "nullable": true, + "default": null } ], "maintenance_options": [ { "type": "list(object({auto_recovery: string}))", "description": "Maintenance and recovery options for the instance.", - "nullable": true + "nullable": true, + "default": null } ], "metadata_options": [ @@ -196,56 +220,64 @@ { "type": "list(object({device_index: number, network_card_index: number, network_interface_id: string}))", "description": "Customize network interfaces to be attached at instance boot time.", - "nullable": true + "nullable": true, + "default": null } ], "placement_group": [ { "type": "string", "description": "Placement Group to start the instance in.", - "nullable": true + "nullable": true, + "default": null } ], "placement_partition_number": [ { "type": "number", "description": "Number of the partition the instance is in. Valid only if the `AWS Placement Group` resource's `Strategy` argument is set to \"partition\"", - "nullable": true + "nullable": true, + "default": null } ], "private_dns_name_options": [ { "type": "list(object({enable_resource_name_dns_aaaa_record: bool, enable_resource_name_dns_a_record: bool, hostname_type: string}))", "description": "Options for the instance hostname. The default values are inherited from the subnet.", - "nullable": true + "nullable": true, + "default": null } ], "private_ip": [ { "type": "string", "description": "Private IP address to associate with the instance in a VPC.", - "nullable": true + "nullable": true, + "default": null } ], "root_block_device": [ { "type": "list(object({delete_on_termination: bool, encrypted: bool, iops: string, kms_key_id: string, tags: map(string), throughput: string, volume_size: number, volume_type: string}))", "description": "Configuration block to customize details about the root block device of the instance.", - "nullable": true + "nullable": true, + "default": null } ], "secondary_private_ips": [ { "type": "list(string)", "description": "List of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e., referenced in a `Network Interface` block. Refer to the Elastic network interfaces documentation to see the maximum number of private IP addresses allowed per instance type.", - "nullable": true + "nullable": true, + "default": null } ], "security_groups": [ { "type": "list(string)", "description": "List of security group names to associate with.", - "nullable": true + "nullable": true, + "default": null } ], "source_dest_check": [ @@ -260,7 +292,8 @@ { "type": "string", "description": "VPC Subnet ID to launch in.", - "nullable": true + "nullable": true, + "default": null } ], "tags": [ @@ -275,28 +308,32 @@ { "type": "string", "description": "Tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware. The host tenancy is not supported for the import-instance command.", - "nullable": true + "nullable": true, + "default": null } ], "timeouts": [ { "description": "A map of timeouts for the transit gateway.", "nullable": true, - "type": "object({ create: optional(string), delete: optional(string), update: optional(string) })" + "type": "object({ create: optional(string), delete: optional(string), update: optional(string) })", + "default": null } ], "user_data": [ { "type": "string", "description": "User data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see `User Data Base64` instead.", - "nullable": true + "nullable": true, + "default": null } ], "user_data_base64": [ { "type": "string", "description": "Can be used instead of `User Data` to pass base64-encoded binary data directly. Use this instead of `User Data` whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption.", - "nullable": true + "nullable": true, + "default": null } ], "user_data_replace_on_change": [ @@ -311,21 +348,24 @@ { "type": "map(string)", "description": "Map of tags to assign, at instance-creation time, to root and EBS volumes.", - "nullable": true + "nullable": true, + "default": null } ], "vpc_security_group_ids": [ { "type": "list(string)", "description": "List of security group IDs to associate with.", - "nullable": true + "nullable": true, + "default": null } ], "enable_primary_ipv6": [ { "type": "bool", "description": "Whether to enable primary IPv6 on the instance.", - "nullable": true + "nullable": true, + "default": null } ] } diff --git a/aws/aws_launch_template/variables.tf.json b/aws/aws_launch_template/variables.tf.json index 3151c9a..75f85d0 100644 --- a/aws/aws_launch_template/variables.tf.json +++ b/aws/aws_launch_template/variables.tf.json @@ -11,14 +11,16 @@ { "type": "string", "description": "Description of the launch template", - "nullable": true + "nullable": true, + "default": null } ], "default_version": [ { "type": "number", "description": "Default version of the launch template", - "nullable": true + "nullable": true, + "default": null } ], "update_default_version": [ @@ -33,14 +35,16 @@ { "type": "string", "description": "ID of the AMI to use for the instance", - "nullable": true + "nullable": true, + "default": null } ], "instance_initiated_shutdown_behavior": [ { "type": "string", "description": "Shutdown behavior for the instance", - "nullable": true + "nullable": true, + "default": null } ], "disable_api_termination": [ @@ -55,190 +59,217 @@ { "type": "string", "description": "Whether the instance is EBS optimized", - "nullable": true + "nullable": true, + "default": null } ], "instance_type": [ { "type": "string", "description": "Instance type", - "nullable": true + "nullable": true, + "default": null } ], "kernel_id": [ { "type": "string", "description": "ID of the kernel", - "nullable": true + "nullable": true, + "default": null } ], "key_name": [ { "type": "string", "description": "Name of the key pair", - "nullable": true + "nullable": true, + "default": null } ], "ram_disk_id": [ { "type": "string", "description": "ID of the RAM disk", - "nullable": true + "nullable": true, + "default": null } ], "security_group_names": [ { "type": "list(string)", "description": "List of security group names", - "nullable": true + "nullable": true, + "default": null } ], "tags": [ { "type": "map(string)", "description": "Tags to apply to the launch template", - "nullable": true + "nullable": true, + "default": null } ], "user_data": [ { "type": "string", "description": "Base64-encoded user data for the instance", - "nullable": true + "nullable": true, + "default": null } ], "vpc_security_group_ids": [ { "type": "list(string)", "description": "List of security group IDs for VPC", - "nullable": true + "nullable": true, + "default": null } ], "capacity_reservation_specification": [ { "type": "list(object({capacity_reservation_preference: string, capacity_reservation_target: list(object({capacity_reservation_id: string, capacity_reservation_resource_group_arn: string}))}))", "description": "Targeting for EC2 capacity reservations", - "nullable": true + "nullable": true, + "default": null } ], "cpu_options": [ { "type": "list(object({core_count: number, threads_per_core: number}))", "description": "The CPU options for the launch template", - "nullable": true + "nullable": true, + "default": null } ], "credit_specification": [ { "type": "list(object({cpu_credits: string}))", "description": "CPU specifications for the launch template", - "nullable": true + "nullable": true, + "default": null } ], "elastic_gpu_specifications": [ { "type": "list(object({type: string}))", "description": "The Elastic GPU to attach to the instance.", - "nullable": true + "nullable": true, + "default": null } ], "elastic_inference_accelerator": [ { "type": "list(object({type: string}))", "description": "The Elastic Inference Accelerator to attach to the instance.", - "nullable": true + "nullable": true, + "default": null } ], "enclave_options": [ { "type": "list(object({enabled: bool}))", "description": "Whether to enable Nitro Enclaves", - "nullable": true + "nullable": true, + "default": null } ], "hibernation_options": [ { "type": "list(object({configured: bool}))", "description": "Whether the hibernation is configured", - "nullable": true + "nullable": true, + "default": null } ], "iam_instance_profile": [ { "type": "list(object({arn: string, name: string}))", "description": "ARN of the instance profile", - "nullable": true + "nullable": true, + "default": null } ], "instance_market_options": [ { "type": "list(object({market_type: string, spot_options: list(object({block_duration_minutes: number, instance_interruption_behavior: string, max_price: string, spot_instance_type: string, valid_until: string}))}))", "description": "Market options for the instance", - "nullable": true + "nullable": true, + "default": null } ], "license_specification": [ { "type": "list(object({license_configuration_arn: string}))", "description": "The license configuration to associate with the instance.", - "nullable": true + "nullable": true, + "default": null } ], "maintenance_options": [ { "type": "list(object({auto_recovery: string}))", "description": "Maintenance options for the instance.", - "nullable": true + "nullable": true, + "default": null } ], "metadata_options": [ { "type": "list(object({http_endpoint: string, http_protocol_ipv6: string, http_put_response_hop_limit: number, http_tokens: string, instance_metadata_tags: string}))", "description": "Metadata options for the instance.", - "nullable": true + "nullable": true, + "default": null } ], "monitoring": [ { "type": "list(object({enabled: bool}))", "description": "Whether monitoring is enabled", - "nullable": true + "nullable": true, + "default": null } ], "network_interfaces": [ { "type": "list(object({associate_carrier_ip_address: string, associate_public_ip_address: string, delete_on_termination: string, description: string, device_index: number, interface_type: string, ipv4_address_count: number, ipv4_addresses: list(string), ipv4_prefix_count: number, ipv4_prefixes: list(string), ipv6_address_count: number, ipv6_addresses: list(string), ipv6_prefix_count: number, ipv6_prefixes: list(string), network_card_index: number, network_interface_id: string, private_ip_address: string, security_groups: list(string), subnet_id: string}))", "description": "Network interface configuration for the instance", - "nullable": true + "nullable": true, + "default": null } ], "placement": [ { "type": "list(object({affinity: string, availability_zone: string, group_name: string, host_id: string, host_resource_group_arn: string, partition_number: number, spread_domain: string, tenancy: string}))", "description": "Placement configuration for the instance", - "nullable": true + "nullable": true, + "default": null } ], "private_dns_name_options": [ { "type": "list(object({enable_resource_name_dns_aaaa_record: bool, enable_resource_name_dns_a_record: bool, hostname_type: string}))", "description": "Private DNS name options for the instance", - "nullable": true + "nullable": true, + "default": null } ], "tag_specifications": [ { "type": "list(object({resource_type: string, tags: map(string)}))", "description": "Tags to apply to resources during launch", - "nullable": true + "nullable": true, + "default": null } ], "block_device_mappings": [ { "type": "list(object({device_name: string, no_device: string, virtual_name: string, ebs: list(object({delete_on_termination: string, encrypted: string, iops: number, kms_key_id: string, snapshot_id: string, throughput: number, volume_size: number, volume_type: string}))}))", "description": "Block device mapping configuration for the launch template", - "nullable": true + "nullable": true, + "default": null } ] } -} +} diff --git a/aws/aws_security_group/variables.tf.json b/aws/aws_security_group/variables.tf.json index a94f35a..a1636a3 100644 --- a/aws/aws_security_group/variables.tf.json +++ b/aws/aws_security_group/variables.tf.json @@ -4,7 +4,8 @@ { "description": "Name of the security group. If omitted, Terraform will assign a random, unique name.", "nullable": true, - "type": "string" + "type": "string", + "default": null } ], "description": [ @@ -19,7 +20,8 @@ { "description": "VPC ID", "nullable": true, - "type": "string" + "type": "string", + "default": null } ], "egress": [ @@ -58,7 +60,8 @@ { "description": "Timeout for the security group", "type": "object({ create: optional(string), delete: optional(string)})", - "nullable": true + "nullable": true, + "default": null } ] }