Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Terraform azurerm to v3.117.0 #2205

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jul 24, 2024

This PR contains the following updates:

Package Type Update Change
azurerm (source) required_provider minor 3.65.0 -> 3.117.0
azurerm (source) required_provider minor 3.113.0 -> 3.117.0

Release Notes

hashicorp/terraform-provider-azurerm (azurerm)

v3.117.0

Compare Source

SPECIAL NOTES: This 3.x release is a special, one-off, back-port of functionality for azurerm_storage_account to enable users to deploy this resource in environments which block / are restrictive of Data Plane access, thus preventing the resource being created and/or managed. This functionality is back-ported from the v4.9.0 release. Users migrating from this release to the 4.x line, should upgrade directly to v4.9.0 or later, as these features are not compatible with earlier releases of 4.x.

FEATURES:

  • New Resource: azurerm_storage_account_queue_properties (#​27819)
  • New Resource: azurerm_storage_account_static_website (#​27819)
  • New Provider Feature - storage data_plane_available feature flag (#​27819)

ENHANCEMENTS:

  • azurerm_storage_account - can now be created and managed if Data Plane endpoints are blocked by a firewall (#​27819)

v3.116.0

Compare Source

DEPRECATIONS:

All Azure Kubernetes Service (AKS) properties related to preview features are deprecated since they will not be available in a stable API. Please see https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/4.0-upgrade-guide#aks-migration-to-stable-api for more details (#​26863)

FEATURES:

  • New Resource: azurerm_ai_services (#​26008)
  • New Resource: azurerm_communication_service_email_domain_association (#​26432)
  • New Resource: azurerm_dev_center_project_environment_type (#​26941)
  • New Resource: azurerm_extended_location_custom_location (#​24267)
  • New Resource: azurerm_postgresql_flexible_server_virtual_endpoint (#​26708)

ENHANCEMENTS:

  • notificationhub - updating to use version 2023-09-01 (#​26528)
  • azurerm_api_management_api - update validation of path to allow single character strings (#​26922)
  • azurerm_cosmosdb_account - add support for the property burst_capacity_enabled (#​26986)
  • azurerm_linux_function_app - add support for vnet_image_pull_enabled property in 4.0 (#​27001)
  • azurerm_linux_function_app_slot - add support for vnet_image_pull_enabled property in 4.0 (#​27001)
  • azurerm_logic_app_standard - add support for v8.0 in site_config.dotnet_framework_version (#​26983)
  • azurerm_management_group_policy_assignment - remove length restriction on name (#​27055)
  • azurerm_recovery_services_vault - add support for the identity block (#​26254)
  • azurerm_web_application_firewall_policy - add support for the js_challenge_cookie_expiration_in_minutes property (#​26878)
  • azurerm_windows_function_app - add support for vnet_image_pull_enabled property in 4.0 (#​27001)
  • azurerm_windows_function_app_slot - add support for vnet_image_pull_enabled property in 4.0 (#​27001)

BUG FIXES:

  • Data Source: azurerm_storage_account - add default_share_level_permission to the azure_files_authentication to prevent invalid address errors (#​26996)
  • Data Source: azurerm_search_service - expose the tags property (#​26978)
  • Data Source: azurerm_virtual_machine - populate missing power_state (#​26991)
  • Data Source: azurerm_virtual_machine_scale_set - populate missing power_state (#​26991)
  • azurerm_api_management_api_schema - correctly unmarshal definition and components (#​26531)
  • azurerm_cdn_frontdoor_secret - fix issue where expiration_date was being set into the parent block (#​26982)
  • azurerm_container_app_environment - fix diff suppress on infrastructure_resource_group_name (#​27007)
  • azurerm_express_route_connection - prevent sending private_link_fast_path_enabled in the payload if it hasn't been explicitly set (#​26928)
  • azurerm_machine_learning_workspace - serverless_compute can now be updated (#​26940)
  • azurerm_mssql_database - fix issue where the database cannot be upgraded to use serverless due to the behaviour of the license_type field (#​26850)
  • azurerm_mssql_database - prevent error when creating Free edition by setting long_term_retention_policy and short_term_retention_policy as empty (#​26894)
  • azurerm_nginx_deployment - omit capacity when creating deployments with a basic plan (#​26223)
  • azurerm_role_management_policy - prevent panic when updating activation_rules.approval_stage (#​26800)
  • azurerm_sentinel_threat_intelligence_indicator - prevent panic when importing this resource (#​26976)
  • azurerm_servicebus_namespace - fix panic reading encryption with versionless ids (#​27060)
  • azurerm_synapse_spark_pool - prevent plan diff due to API behaviour by setting node_count as Computed (#​26953)
  • azurerm_virtual_network_gateway_connection - fix issue where ingress_nat_rule_ids was updating the egress rules on updates (#​27022)

v3.115.0

Compare Source

ENHANCEMENTS:

  • cosmosdb - updating to use version 2024-05-15 (#​26758)
  • healthcare - updating to use version 2024-03-31 (#​26699)
  • redis - updating to use version 2024-03-01 (#​26932)
  • azurerm_cosmosdb_account - avoid infinite diff to default_identity_type for legacy resources where an empty string is returned by the RP (#​26525)
  • azurerm_linux_virtual_machine_scale_set - add support for the action property in the automatic_instance_repair block (#​26227)
  • azurerm_log_analytics_saved_search - update the regex for the function_parameters property to support more paramters (#​26701)
  • azurerm_monitor_data_collection_rule - update performance_counter.x.sampling_frequency_in_seconds range 1 to 1800 (#​26898)
  • azurerm_orchestrated_virtual_machine_scale_set - add support for the action property in the automatic_instance_repair block (#​26227)
  • azurerm_security_center_storage_defender - add support for the property scan_results_event_grid_topic_id (#​26599)
  • azurerm_storage_account - add support for the property default_share_level_permission in the azure_files_authentication block (#​26924)
  • azurerm_web_application_firewall_policy - excluded_rule_set.0.type supports Microsoft_BotManagerRuleSet (#​26903)
  • azurerm_windows_virtual_machine_scale_set - add support for the action property in the automatic_instance_repair block (#​26227)

BUG FIXES:

  • azurerm_container_group - retrieve and set storage_account_key in the payload when updating the resource (#​26640)
  • azurerm_key_vault_managed_hardware_security_module_role_assignment - fixed a crash in error messages (#​26972)
  • azurerm_kubernetes_cluster - allow an empty list for dns_zone_ids in the web_app_routing block (#​26747)
  • azurerm_storage_share_file - fix a bug when encoding the MD5 hash for the content_md5 property (#​25715)

v3.114.0

Compare Source

UPGRADE NOTES:

  • 4.0 Beta: This release includes a new feature-flag to opt-into the 4.0 Beta - which (when enabled) introduces a number of behavioural changes, field renames and removes some older deprecated resources and data sources. Please read the disclaimers carefully that are outlined in our guide on how to opt-into the 4.0 Beta before enabling this, as this will cause irreversible changes to your state. The 4.0 Beta is still a work-in-progress at this time and the changes listed in the 4.0 Upgrade Guide may change. We're interested to hear your feedback which can be provided by following this link.

FEATURES:

  • New Resource: azurerm_dev_center_network_connection (#​26718)
  • New Resource: azurerm_stack_hci_logical_network (#​26473)

ENHANCEMENTS:

  • dependencies: updating go-azure-helpers to v0.70.1 (#​26757)
  • arckubernetes - updating to use version 2024-01-01 (#​26761)
  • data.azurerm_storage_account - the enable_https_traffic_only property has been superseded by https_traffic_only_enabled (#​26740)
  • azurerm_log_analytics_cluster - add support for setting size_gb to 100 [GH-#​26865]
  • azurerm_storage_account - the enable_https_traffic_only property has been superseded by https_traffic_only_enabled (#​26740)

BUG FIXES:

  • azurerm_dns_cname_record - split create and update function to fix lifecycle - ignore (#​26610)
  • azurerm_dns_srv_record - split create and update function to fix lifecycle - ignore (#​26627)
  • azurerm_kubernetes_cluster - fix issue that prevented max_count from being updated (#​26417)
  • azurerm_linux_web_app - correctly set site_config.always_on as configured during Update (#​25753)
  • azurerm_linux_web_app_slot - correctly set site_config.always_on as configured during Update (#​25753)
  • azurerm_management_group_policy_remediation - fix panic in deprecated schema change for 4.0 (#​26767)
  • azurerm_network_security_rule - fix panic when updating source_port_ranges (#​26883)
  • azurerm_public_ip - fix panix when updating idle_timeout_in_minutes

DEPRECATIONS:

  • azurerm_redis_cache - enable_non_ssl_port has been superseded by non_ssl_port_enabled and redis_configuration. enable_authentication has been superseded by redis_configuration.authentication_enabled (#​26608)

v3.113.0

Compare Source

ENHANCEMENTS:

  • dependencies: updating to v0.20240715.1100358 of hashicorp/go-azure-sdk (#​26638)
  • storage - updating to use hashicorp/go-azure-sdk (#​26218)

BUG FIXES:

  • azurerm_storage_account - fix a validation bug when replacing a StorageV2 account with a StorageV1 account (#​26639)
  • azurerm_storage_account - resolve an issue refreshing blob or queue properties after recreation (#​26218)
  • azurerm_storage_account - resolve an issue setting tags for an existing storage account where a policy mandates them (#​26218)
  • azurerm_storage_account - fix a persistent diff with the customer_managed_key block (#​26218)
  • azurerm_storage_account - resolve several consistency related issues when crreating a new storage account (#​26218)

DEPRECATIONS:

  • azurerm_eventhub_namespace - deprecate the zone_redundant field in v4.0 (#​26611)
  • azurerm_servicebus_namespace - deprecate the zone_redundant field in v4.0 (#​26611)

v3.112.0

Compare Source

FEATURES:

  • New Data Source: azurerm_elastic_san_volume_snapshot (#​26439)
  • New Resource: azurerm_dev_center_dev_box_definition (#​26307)
  • New Resource: azurerm_dev_center_environment_type (#​26291)
  • New Resource: azurerm_virtual_machine_restore_point (#​26526)
  • New Resource: azurerm_virtual_machine_restore_point_collection (#​26526)

ENHANCEMENTS:

  • dependencies: updating to v0.20240710.1114656 of github.com/hashicorp/go-azure-sdk (#​26588)
  • dependencies: updating to v0.70.0 of go-azure-helpers (#​26601)
  • containerservice: updating the Fleet resources to use API Version 2024-04-01 (#​26588)
  • Data Source: azurerm_network_service_tags - extend validation for service to allow AzureFrontDoor.Backend, AzureFrontDoor.Frontend, and AzureFrontDoor.FirstParty (#​26429)
  • azurerm_api_management_identity_provider_aad - support for the client_library property (#​26093)
  • azurerm_api_management_identity_provider_aadb2c - support for the client_library property (#​26093)
  • azurerm_dev_test_virtual_network - support for the shared_public_ip_address property (#​26299)
  • azurerm_kubernetes_cluster - support for the certificate_authority block under the service_mesh_profile block (#​26543)
  • azurerm_linux_web_app - support the value 8.3 for the php_version property (#​26194)
  • azurerm_machine_learning_compute_cluster - the identity property can now be updated (#​26404)
  • azurerm_web_application_firewall_policy - support for the JSChallenge value for managed_rules.managed_rule_set.rule_group_override.rule_action (#​26561)

BUG FIXES:

  • Data Source: azurerm_communication_service - primary_connection_string, primary_key, secondary_connection_string and secondary_key are marked as Sensitive (#​26560)
  • azurerm_app_configuration_feature - fix issue when updating the resource without an existing targeting_filter (#​26506)
  • azurerm_backup_policy_vm - split create and update function to fix lifecycle - ignore (#​26591)
  • azurerm_backup_protected_vm - split create and update function to fix lifecycle - ignore (#​26583)
  • azurerm_communication_service - the primary_connection_string, primary_key, secondary_connection_string, and secondary_key properties are now sensitive (#​26560)
  • azurerm_mysql_flexible_server_configuration - add locks to prevent conflicts when deleting the resource (#​26289)
  • azurerm_nginx_deployment - changing the frontend_public.ip_address, frontend_private.ip_address, frontend_private.allocation_method, and frontend_private.subnet_id now creates a new resource (#​26298)
  • azurerm_palo_alto_local_rulestack_rule - correctl read the protocol property on read when the protocol_ports property is configured (#​26510)
  • azurerm_servicebus_namespace - parse the identity returned by the API insensitively before setting into state (#​26540)

DEPRECATIONS:

  • azurerm_servicebus_queue - enable_batched_operations, enable_express and enable_partitioning are superseded by batched_operations_enabled, express_enabled and partitioning_enabled (#​26479)
  • azurerm_servicebus_subscription - enable_batched_operations has been superseded by batched_operations_enabled (#​26479)
  • azurerm_servicebus_topic - enable_batched_operations, enable_express and enable_partitioning are superseded by batched_operations_enabled, express_enabled and partitioning_enabled (#​26479)

v3.111.0

Compare Source

FEATURES:

  • New Resource: azurerm_restore_point_collection (#​26518)

ENHANCEMENTS:

  • dependencies: updating to v0.20240701.1082110 of github.com/hashicorp/go-azure-sdk (#​26502)
  • azurerm_disk_encryption_set - support for the managed_hsm_key_id property (#​26201)
  • azurerm_firewall_policy - remove Computed from the sku property and add a default of Standard in 4.0 (#​26499)
  • azurerm_kubernetes_cluster - support updating default_node_pool.os_sku between Ubuntu and AzureLinux (#​26262)
  • azurerm_kubernetes_cluster_node_pool - support updating os_sku between Ubuntu and AzureLinux (#​26139)
  • azurerm_service_plan - support for new the Flex Consumption plan (#​26351)

BUG FIXES:

  • azurerm_kubernetes_cluster - prevent a panic (#​26478)
  • azurerm_kubernetes_cluster - prevent a diff in upgrade_settings when the API returns an empty object (#​26541)
  • azurerm_kubernetes_cluster_node_pool - prevent a diff in upgrade_settings when the API returns an empty object (#​26541)
  • azurerm_virtual_network_gateway - split create and update function to fix lifecycle - ignore (#​26451)
  • azurerm_virtual_network_gateway_connection - split create and update function to fix lifecycle - ignore (#​26431)

v3.110.0

Compare Source

FEATURES:

  • New Data Source: azurerm_load_test (#​26376)
  • New Resource: azurerm_virtual_desktop_scaling_plan_host_pool_association (#​24670)

ENHANCEMENTS:

  • Data Source: azurerm_monitor_data_collection_endpoint - support for the immutable_id property (#​26380)
  • Data Source: azurerm_nginx_certificate - export the properties sha1_thumbprint, key_vault_secret_version, key_vault_secret_creation_date, error_code and error_message (#​26160)
  • azurerm_backup_policy_vm - support for the tiering_policy property (#​26263)
  • azurerm_kubernetes_cluster_node_pool - Pod Disruption Budgets are now respected when deleting a node pool (#​26471)
  • azurerm_monitor_data_collection_endpoint - support for the immutable_id property (#​26380)
  • azurerm_mssql_managed_instance - support the value GZRS for the storage_account_type property (#​26448)
  • azurerm_mssql_managed_instance_transparent_data_encryption - support for the managed_hsm_key_id property (#​26496)
  • azurerm_redis_cache_access_policy - allow updates to permissions (#​26440)
  • azurerm_redhat_openshift_cluster - support for the managed_resource_group_name property (#​25529)
  • azurerm_redhat_openshift_cluster - support for the preconfigured_network_security_group_enabled property (#​26082)
  • azurerm_iotcentral_application - remove Computed from template and set default of [email protected] in 4.0 (#​26485)
  • azurerm_digital_twins_time_series_database_connection - remove Computed from kusto_table_name and set a default of AdtPropertyEvents in 4.0 (#​26484)

BUG FIXES:

  • Data Source: azurerm_express_route_circuit_peering - fix issue where data source attempts to parse an empty string instead of generating the resource ID (#​26441)
  • azurerm_express_route_gateway - prevent a panic (#​26467)
  • azurerm_monitor_scheduled_query_rules_alert_v2 - correctly handle the identity block if not specified (#​26364)
  • azurerm_security_center_automation - prevent resource recreation when tags are updated (#​26292)
  • azurerm_synapse_workspace - fix issue where azure_devops_repo or github_repo configuration could not be removed (#​26421)
  • azurerm_virtual_network_dns_servers - split create and update function to fix lifecycle - ignore (#​26427)
  • azurerm_linux_function_app - set allowed_applications in the request payload (#​26462)
  • azurerm_linux_function_app_slot - set allowed_applications in the request payload (#​26462)
  • azurerm_windows_function_app - set allowed_applications in the request payload (#​26462)
  • azurerm_windows_function_app_slot - set allowed_applications in the request payload (#​26462)
  • azurerm_linux_web_app - set allowed_applications in the request payload (#​26462)
  • azurerm_linux_web_app_slot - set allowed_applications in the request payload (#​26462)
  • azurerm_windows_web_app - set allowed_applications in the request payload (#​26462)
  • azurerm_windows_web_app_slot - set allowed_applications in the request payload (#​26462)
  • azurerm_api_management - remove ForceNew from additional_location.zones (#​26384)
  • azurerm_logic_app_integration_account_schema - the name property now allows underscores (#​26475)
  • azurerm_palo_alto_local_rulestack_rule - prevent error when switching between protocol and protocol_ports (#​26490)

DEPRECATIONS:

  • azurerm_analysis_service_server - the property enable_power_bi_service has been superseded by power_bi_service_enabled (#​26456)

v3.109.0

Compare Source

FEATURES:

  • New Data Source: azurerm_automation_runbook (#​26359)
  • New Resource: azurerm_data_protection_backup_instance_postgresql_flexible_server (#​26249)
  • New Resource: azurerm_email_communication_service_domain (#​26179)
  • New Resource: azurerm_system_center_virtual_machine_manager_cloud (#​25429)
  • New Resource: azurerm_system_center_virtual_machine_manager_virtual_machine_template (#​25449)
  • New Resource: azurerm_system_center_virtual_machine_manager_virtual_network (#​25451)

ENHANCEMENTS:

  • Data Source: azurerm_hdinsight_cluster - export the cluster_id attribute (#​26228)
  • azurerm_cosmosdb_sql_container - support for the partition_key_kind and partition_key_paths properties (#​26372)
  • azurerm_data_protection_backup_instance_blob_storage - support for the storage_account_container_names property (#​26232)
  • azurerm_virtual_network_peering - support for the peer_complete_virtual_networks_enabled, only_ipv6_peering_enabled, local_subnet_names, and remote_subnet_names properties (#​26229)
  • azurerm_virtual_desktop_host_pool - changing the preferred_app_group_type property no longer creates a new resource (#​26333)
  • azurerm_maps_account - support for the location, identity, cors and data_store properties (#​26397)

BUG FIXES:

  • azurerm_automation_job_schedule - updates azurerm_automation_job_schedule to use a composite resource id and allows azurerm_automation_runbook to be updated without causing azurerm_automation_job_schedule to recreate (#​22164)
  • azurerm_databricks_workspace- correctly allow disabling the default firewall (#​26339)
  • azurerm_virtual_hub_* - spliting create and update so lifecycle ignore changes works correctly (#​26310)

DEPRECATIONS:

  • Data Source: azurerm_mariadb_server - deprecated since the service is retiring. Please use azurerm_mysql_flexible_server instead (#​26354)
  • azurerm_mariadb_configuration - deprecated since the service is retiring. Please use azurerm_mysql_flexible_server_configuration instead (#​26354)
  • azurerm_mariadb_database - deprecated since the service is retiring. Please use azurerm_mysql_flexible_database instead (#​26354)
  • azurerm_mariadb_firewall_rule - deprecated since the service is retiring. Please use azurerm_mysql_flexible_server_firewall_rule instead (#​26354)
  • azurerm_mariadb_server - deprecated since the service is retiring. Please use azurerm_mysql_flexible_server instead (#​26354)
  • azurerm_mariadb_virtual_network_rule - deprecated since the service is retiring (#​26354)

v3.108.0

Compare Source

FEATURES:

  • New Data Source: azurerm_role_management_policy (#​25900)
  • New Resource: azurerm_role_management_policy (#​25900)

ENHANCEMENTS:

  • provider: support subscription ID hinting when using Azure CLI authentication (#​26282)
  • serviceconnector: updating to use API Version 2024-04-01 (#​26248)
  • azurerm_container_groups - can now be created with a User Assigned Identity when running Windows (#​26308)
  • azurerm_kubernetes_cluster - updating the network_profile.network_policy property to azure and calico when it hasn't been previously set is supported (#​26176)
  • azurerm_kubernetes_cluster - respect Pod Distruption Budgets when rotating the default_node_pool (#​26274)
  • azurerm_lb_backend_address_pool - support for the synchronous_mode property (#​26309)
  • azurerm_private_endpoint - support symultaneous creation of multiple resources of this type per subnet (#​26006)

BUG FIXES:

  • azurerm_express_route_circuit_peering, azurerm_express_route_circuit, azurerm_express_route_gateway, azurerm_express_route_port - split create and update (#​26237)
  • azurerm_lb_backend_address_pool_address - when using this resource, values are no longer reset on azurerm_lb_backend_address_pool (#​26264)
  • azurerm_route_filter - spliting create and update so lifecycle ignore changes works correctly (#​26266)
  • azurerm_route_server - spliting create and update so lifecycle ignore changes works correctly (#​26266)
  • azurerm_synapse_workspace - updates the client used in all operations of azurerm_synapse_workspace_sql_aad_admin to prevent this resource from modifying the same resource as azurerm_synapse_workspace_aad_admin (#​26317)
  • azurerm_virtual_network - correctly parse network securty group IDs (#​26283)

DEPRECATIONS:

  • Data Source: azurerm_network_interface - the enable_ip_forwarding and enable_accelerated_networking properties have been deprecated and superseded by the ip_forwarding_enabled and accelerated_networking_enabled properties (#​26293)
  • azurerm_api_management - the policy block has been deprecated is superseded by the azurerm_api_management_policy resource (#​26305)
  • azurerm_kubernetes_cluster - the ebpf_data_plane property has been deprecated and superseded by the network_data_plane property (#​26251)
  • azurerm_network_interface - the enable_ip_forwarding and enable_accelerated_networking properties have been deprecated and superseded by the ip_forwarding_enabled and accelerated_networking_enabled properties (#​26293)
  • azurerm_synapse_workspace - the aad_admin and sql_aad_admin blocks have been deprecated and superseded by the azurerm_synapse_workspace_aad_admin and azurerm_synapse_workspace_sql_aad_admin resources (#​26317)

v3.107.0

Compare Source

FEATURES:

  • New Resource: azurerm_data_protection_backup_policy_postgresql_flexible_server (#​26024)

ENHANCEMENTS:

  • dependencies: updating to v0.20240604.1114748 of github.com/hashicorp/go-azure-sdk (#​26216)
  • advisor: update API version to 2023-01-01 (#​26205)
  • keyvault: handling the Resources API returning Key Vaults that have been deleted when populating the cache (#​26199)
  • machinelearning: update API version to 2024-04-01 (#​26168)
  • network/privatelinkservices - update to use hashicorp/go-azure-sdk (#​26212)
  • network/serviceendpointpolicies - update to use hashicorp/go-azure-sdk (#​26196)
  • network/virtualnetworks - update to use hashicorp/go-azure-sdk (#​26217)
  • network/virtualwans: update route resources to use hashicorp/go-azure-sdk (#​26189)
  • azurerm_container_app_job - support for the key_vault_secret_id and identity properties in the secret block (#​25969)
  • azurerm_kubernetes_cluster - support forthe dns_zone_ids popperty in the web_app_routing block (#​26117)
  • azurerm_notification_hub_authorization_rule - support for the primary_connection_string and secondary_connection_string properties (#​26188)
  • azurerm_subnet - support for the default_outbound_access_enabled property (#​25259)

BUG FIXES:

  • azurerm_api_management_named_value - will now enforce setting the secret property when setting the value_from_key_vault property (#​26150)
  • azurerm_storage_sync_server_endpoint - improve pooling to work around api inconsistencies (#​26204)
  • azurerm_virtual_network - split create and update function to fix lifecycle - ignore (#​26246)
  • azurerm_vpn_server_configuration - split create and update function to fix lifecycle - ignore (#​26175)
  • azurerm_vpn_server_configuration_policy_group - split create and update function to fix lifecycle - ignore (#​26207)
  • azurerm_vpn_site - split create and update function to fix lifecycle - ignore changes (#​26163)

DEPRECATIONS:

  • azurerm_kubernetes_cluster - the property dns_zone_id has been superseded by the property dns_zone_ids in the web_app_routing block (#​26117)
  • azurerm_nginx_deployment - the block configuration has been deprecated and superseded by the resource azurerm_nginx_configuration (#​25773)

v3.106.1

Compare Source

BUG FIXES:

  • Data Source: azurerm_kubernetes_cluster - fix a crash when reading/setting upgrade_settings (#​26173)

v3.106.0

Compare Source

UPGRADE NOTES:

  • This release updates the Key Vault cache to load Key Vaults using both the Key Vaults List API and the Resources API to workaround the API returning incomplete/stale data. To achieve this, and provide consistency between tooling, we are intentionally using the same older version of the Resources API as the current version of Azure CLI. (#​26070)

FEATURES:

  • New Data Source: azurerm_arc_resource_bridge_appliance (#​25731)
  • New Data Source: azurerm_elastic_san_volume_group (#​26111)
  • New Data Source: azurerm_storage_queue (#​26087)
  • New Data Source: azurerm_storage_table (#​26126)
  • New Resource: azurerm_container_registry_cache_rule (#​26034)
  • New Resource: azurerm_virtual_machine_implicit_data_disk_from_source (#​25537)

ENHANCEMENTS:

  • Data Source: azurerm_kubernetes_cluster - add support for the drain_timeout_in_minutes and node_soak_duration_in_minutes properties in the upgrade_settings block (#​26137)
  • dependencies: updating to v0.20240529.1155048 of github.com/hashicorp/go-azure-sdk (#​26148)
  • containerapps: update API version to 2024-03-01 (#​25993)
  • expressroute: update to use hashicorp/go-azure-sdk (#​26066)
  • keyvault: populating the cache using both the Key Vault List and Resources API to workaround incomplete/stale data being returned (#​26070)
  • servicenetworking: updating to API Version 2023-11-01 (#​26148)
  • virtualnetworkpeerings: update to use hashicorp/go-azure-sdk (#​26065)
  • azurerm_automation_powershell72_module - support for the tags property (#​26106)
  • azurerm_bastion_host - support for Developer SKU (#​26068)
  • azurerm_container_app_environment - support for the mutual_tls_enabled property (#​25993)
  • azurerm_container_registry - validation to fail fast when setting public_network_access_enabled with an invalid SKU (#​26054)
  • azurerm_key_vault_managed_hardware_security_module - the public_network_access_enabled property can now be updated (#​26075)
  • azurerm_kubernetes_cluster - support for the cost_analysis_enabled property (#​26052)
  • azurerm_kubernetes_cluster - support for the drain_timeout_in_minutes and node_soak_duration_in_minutes properties in the upgrade_settings block (#​26137)
  • azurerm_kubernetes_cluster_node_pool - support for the drain_timeout_in_minutes and node_soak_duration_in_minutes properties in the upgrade_settings block (#​26137)
  • azurerm_linux_virtual_machine - the hibernation_enabled property can now be updated (#​26112)
  • azurerm_logic_app_trigger_custom - support for the property callback_url (#​25979)
  • azurerm_machine_learning_workspace - support for the serverless_compute block (#​25660)
  • azurerm_mssql_elasticpool - support the sku HS_PRMS (#​26161)
  • azurerm_new_relic_monitor - support for the identity block (#​26115)
  • azurerm_route_map - the parameter property is now Optional when the action type is Drop (#​26003)
  • azurerm_windows_virtual_machine - the hibernation_enabled property can now be updated (#​26112)

BUG FIXES:

  • Data Source: azurerm_system_center_virtual_machine_manager_inventory_items - normalise the resource ID for Intentory Items (#​25955)
  • azurerm_app_configuration_feature - update polling interval to tolerate eventual consistency of the API (#​26025)
  • azurerm_app_configuration_key - update polling interval to tolerate eventual consistency of the API (#​26025)
  • azurerm_eventhub_namespace_customer_managed_key - validating that the User Assigned Identity used for accessing the Key Vault is assigned to the EventHub Namespace (#​28509)
  • azurerm_linux_function_app - fix update handling of health_check_eviction_time_in_min and WEBSITE_HEALTHCHECK_MAXPINGFAILURES (#​26107)
  • azurerm_linux_function_app_slot - fix update handling of health_check_eviction_time_in_min and WEBSITE_HEALTHCHECK_MAXPINGFAILURES (#​26107)
  • azurerm_linux_web_app - fix update handling of health_check_eviction_time_in_min and WEBSITE_HEALTHCHECK_MAXPINGFAILURES (#​26107)
  • azurerm_linux_web_app_slot - fix update handling of health_check_eviction_time_in_min and WEBSITE_HEALTHCHECK_MAXPINGFAILURES (#​26107)
  • azurerm_postgresql_flexible_server - prevent premature check on updated storage_mb value that prevents the resource from being re-created (#​25986)
  • azurerm_redis_access_cache_policy_assignment - add locks to stabilize creation of multiple policy assignments (#​26085)
  • azurerm_redis_access_cache_policy - add locks to stabilize creation of multiple policy assignments (#​26085)
  • azurerm_windows_function_app - fix update handling of health_check_eviction_time_in_min and WEBSITE_HEALTHCHECK_MAXPINGFAILURES (#​26107)
  • azurerm_windows_function_app_slot - fix update handling of health_check_eviction_time_in_min and WEBSITE_HEALTHCHECK_MAXPINGFAILURES (#​26107)
  • azurerm_windows_web_app - fix update handling of health_check_eviction_time_in_min and WEBSITE_HEALTHCHECK_MAXPINGFAILURES (#​26107)
  • azurerm_windows_web_app_slot - fix update handling of health_check_eviction_time_in_min and WEBSITE_HEALTHCHECK_MAXPINGFAILURES (#​26107)

v3.105.0

Compare Source

BREAKING CHANGE:

  • azurerm_kubernetes_cluster - the properties workload_autoscaler_profile.vertical_pod_autoscaler_update_mode and workload_autoscaler_profile.vertical_pod_autoscaler_controlled_values are no longer populated since they're not exported in API version 2023-09-02-preview (#​25663)

FEATURES:

  • New Resource: azurerm_api_management_policy_fragment (#​24968)

ENHANCEMENTS:

  • dependencies: updating to v0.20240522.1080424 of github.com/hashicorp/go-azure-sdk (#​26069)
  • containerservice: updating to use API Version 2023-09-02-preview (#​25663)
  • azurerm_application_insights_standard_web_test - http_verb can now be set to HEAD and OPTIONS (#​26077)
  • azurerm_cdn_frontdoor_rule - updating the validation for match_values within the uri_path_condition block to support a forward-slash ([#​26017](https:

Configuration

📅 Schedule: Branch creation - "after 7am and before 11am every weekday" in timezone Europe/London, Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

🤖AEP PR SUMMARY🤖

  • components/apim-appgw/init.tf:

    • Updated the version of the azurerm provider from 3.113.0 to 3.117.0.
  • components/apim/init.tf:

    • Updated the version of the azurerm provider from 3.113.0 to 3.117.0.
  • components/backendappgateway/provider.tf:

    • Updated the version of the azurerm provider from 3.113.0 to 3.117.0.
  • components/cftapps_private_dns/provider.tf:

    • Updated the version of the azurerm provider from 3.113.0 to 3.117.0.
  • components/frontendappgateway/provider.tf:

    • Updated the version of the azurerm provider from 3.113.0 to 3.117.0.
  • components/global/provider.tf:

    • Updated the version of the azurerm provider from 3.113.0 to 3.117.0.
  • components/pubsubappgateway/provider.tf:

    • Updated the version of the azurerm provider from 3.113.0 to 3.117.0.
  • components/shutter_static_webapp/init.tf:

    • Updated the version of the azurerm provider from 3.65.0 to 3.117.0.

@renovate renovate bot added the dependencies Pull requests that update a dependency file label Jul 24, 2024
Copy link

Reviewing the Terraform provider version update in your init.tf file for the AzureRM provider, the change appears straightforward and correctly updates the provider version. This is good for staying up-to-date with the latest fixes and features. However, we can make a few more improvements around best practices for Terraform usage and version management:

  1. Version Constraints: Instead of hardcoding to a specific provider version, consider using version constraints to automatically benefit from non-breaking updates. For example, instead of specifying \"3.113.0\", you could use \">= 3.113.0, < 4.0.0\". This allows for automatic updates within the major version that should not include breaking changes, while still preventing an accidental upgrade to a new major version which may include breaking changes. Example:

    hcl
    required_providers {
    azurerm = {
    source = "hashicorp/azurerm"
    version = ">= 3.113.0, < 4.0.0"
    }
    }

    
    
  2. Documentation Comment: Including a comment explaining why a specific version (or version range) is necessary can be invaluable, especially for future you or for others working on the project. It helps understand the context, such as required features or known issues with certain versions.

    Example:

    required_providers {
      azurerm = {
        source  = \"hashicorp/azurerm\"
        // Version 3.113.0 or newer is required for XYZ feature support, but avoid breaking changes in 4.x.
        version = \">= 3.113.0, < 4.0.0\"
      }
    }
  3. Review the Upgrade Guide: Whenever updating major dependencies like Terraform providers, it's good practice to review the provider's upgrade guide or changelog for any potential breaking changes, new features, or bug fixes. This helps in understanding the impact of the update and in planning any necessary changes to your Terraform code.

  4. Testing: After updating the provider version, ensure thorough testing of your Terraform plan to catch any issues or required adjustments before applying the changes, especially in a production environment.

By following these additional suggestions, you'll improve the robustness and maintainability of your Terraform configurations.

@hmcts-platform-operations

Plan Result (sbox_private_dns)

No changes. Your infrastructure matches the configuration.

@hmcts-platform-operations
Copy link

hmcts-platform-operations commented Jul 24, 2024

Plan Result (sbox_global)

Plan: 0 to add, 1 to change, 0 to destroy.
  • Update
    • module.premium_front_door.azurerm_monitor_diagnostic_setting.diagnostics_access_logs_sa[0]
Change Result (Click me)
  # module.premium_front_door.azurerm_monitor_diagnostic_setting.diagnostics_access_logs_sa[0] will be updated in-place
  ~ resource "azurerm_monitor_diagnostic_setting" "diagnostics_access_logs_sa" {
        id                             = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/lz-sbox-rg/providers/Microsoft.Cdn/profiles/hmcts-sbox|fd-log-analytics-logs-sa"
        name                           = "fd-log-analytics-logs-sa"
        # (6 unchanged attributes hidden)

      - metric {
          - category = "AllMetrics" -> null
          - enabled  = false -> null

          - retention_policy {
              - days    = 0 -> null
              - enabled = false -> null
            }
        }

        # (4 unchanged blocks hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.

@hmcts-platform-operations
Copy link

hmcts-platform-operations commented Jul 24, 2024

Plan Result (sbox_apim)

No changes. Your infrastructure matches the configuration.

@hmcts-platform-operations
Copy link

hmcts-platform-operations commented Jul 24, 2024

Plan Result (sbox_apim_appgw)

Plan: 0 to add, 2 to change, 0 to destroy.
  • Update
    • module.app-gw.azurerm_application_gateway.ag[0]
    • module.app-gw.azurerm_monitor_diagnostic_setting.diagnostic_settings[0]
Change Result (Click me)
  # module.app-gw.data.azurerm_monitor_diagnostic_categories.diagnostic_categories will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "azurerm_monitor_diagnostic_categories" "diagnostic_categories" {
      + id                  = (known after apply)
      + log_category_groups = (known after apply)
      + log_category_types  = (known after apply)
      + logs                = (known after apply)
      + metrics             = (known after apply)
      + resource_id         = "/subscriptions/ea3a8c1e-af9d-4108-bc86-a7e2d267f49c/resourceGroups/hmcts-hub-sbox-int/providers/Microsoft.Network/applicationGateways/cft-apim00-sandbox-agw"
    }

  # module.app-gw.azurerm_application_gateway.ag[0] will be updated in-place
  ~ resource "azurerm_application_gateway" "ag" {
        id                                = "/subscriptions/ea3a8c1e-af9d-4108-bc86-a7e2d267f49c/resourceGroups/hmcts-hub-sbox-int/providers/Microsoft.Network/applicationGateways/cft-apim00-sandbox-agw"
        name                              = "cft-apim00-sandbox-agw"
        tags                              = {
            "application"  = "core"
            "builtFrom"    = "hmcts/azure-platform-terraform"
            "businessArea" = "CFT"
            "criticality"  = "Low"
            "environment"  = "sandbox"
            "expiresAfter" = "3000-01-01"
            "startupMode"  = "always"
        }
        # (8 unchanged attributes hidden)

      - probe {
          - host                                      = "cft-api-mgmt-appgw.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/ea3a8c1e-af9d-4108-bc86-a7e2d267f49c/resourceGroups/hmcts-hub-sbox-int/providers/Microsoft.Network/applicationGateways/cft-apim00-sandbox-agw/probes/cft-api-mgmt-appgw-probe" -> null
          - interval                                  = 10 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "cft-api-mgmt-appgw-probe" -> null
          - path                                      = "/status-0123456789abcdef" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      + probe {
          + host                                      = "cft-api-mgmt-appgw.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 10
          + minimum_servers                           = 0
          + name                                      = "cft-api-mgmt-appgw-probe"
          + path                                      = "/status-0123456789abcdef"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }

        # (15 unchanged blocks hidden)
    }

  # module.app-gw.azurerm_monitor_diagnostic_setting.diagnostic_settings[0] will be updated in-place
  ~ resource "azurerm_monitor_diagnostic_setting" "diagnostic_settings" {
        id                             = "/subscriptions/ea3a8c1e-af9d-4108-bc86-a7e2d267f49c/resourceGroups/hmcts-hub-sbox-int/providers/Microsoft.Network/applicationGateways/cft-apim00-sandbox-agw|AppGw"
        name                           = "AppGw"
        # (5 unchanged attributes hidden)

      ~ metric {
          + eventhub_authorization_rule_id = (known after apply)
          + eventhub_name                  = (known after apply)
          + id                             = (known after apply)
          + log_analytics_destination_type = (known after apply)
          + log_analytics_workspace_id     = (known after apply)
          + name                           = (known after apply)
          + partner_solution_id            = (known after apply)
          + storage_account_id             = (known after apply)
          + target_resource_id             = (known after apply)
        } -> (known after apply)

        # (3 unchanged blocks hidden)
    }

Plan: 0 to add, 2 to change, 0 to destroy.

@hmcts-platform-operations
Copy link

hmcts-platform-operations commented Jul 24, 2024

Plan Result (sbox_frontendappgateway)

Plan: 0 to add, 2 to change, 0 to destroy.
  • Update
    • module.frontendappgateway.azurerm_application_gateway.ag[0]
    • module.frontendappgateway.azurerm_monitor_diagnostic_setting.diagnostics_access_logs_sa[0]
Change Result (Click me)
  # module.frontendappgateway.azurerm_application_gateway.ag[0] will be updated in-place
  ~ resource "azurerm_application_gateway" "ag" {
        id                                = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw"
        name                              = "cft-aks-fe-00-sbox-agw"
        tags                              = {
            "application"  = "core"
            "autoShutdown" = "true"
            "builtFrom"    = "hmcts/azure-platform-terraform"
            "businessArea" = "CFT"
            "criticality"  = "Low"
            "environment"  = "sandbox"
            "expiresAfter" = "3000-01-01"
            "startupMode"  = "always"
        }
        # (8 unchanged attributes hidden)

      - probe {
          - host                                      = "cft-api-mgmt.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/cft-api-mgmt" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "cft-api-mgmt" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "frontdoor.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/plumclassic" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "plumclassic" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "hmcts-access.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/hmcts-access" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "hmcts-access" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "hmi-apim.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/hmi-apim" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "hmi-apim" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "idam-user-dashboard.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/idam-user-dashboard" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "idam-user-dashboard" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "idam-web-public.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/idam-web-public" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "idam-web-public" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "labs-apps-njs.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/labs-apps-njs" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "labs-apps-njs" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "labs-endakelly-nodejs.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/labs-endakelly-nodejs" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "labs-endakelly-nodejs" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "labs-goldenpath-khaled.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/labs-goldenpath-khaled" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "labs-goldenpath-khaled" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "labs-rhodrif-nodejs.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/labs-rhodrif-nodejs" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "labs-rhodrif-nodejs" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "plum.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/plum" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "plum" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "reformscan.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw/probes/reformscan" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "reformscan" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      + probe {
          + host                                      = "cft-api-mgmt.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "cft-api-mgmt"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "frontdoor.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "plumclassic"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "hmcts-access.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "hmcts-access"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "hmi-apim.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "hmi-apim"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-user-dashboard.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-user-dashboard"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-web-public.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-web-public"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "labs-apps-njs.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "labs-apps-njs"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "labs-endakelly-nodejs.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "labs-endakelly-nodejs"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "labs-goldenpath-khaled.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "labs-goldenpath-khaled"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "labs-rhodrif-nodejs.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "labs-rhodrif-nodejs"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "plum.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "plum"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "reformscan.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "reformscan"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }

        # (56 unchanged blocks hidden)
    }

  # module.frontendappgateway.azurerm_monitor_diagnostic_setting.diagnostics_access_logs_sa[0] will be updated in-place
  ~ resource "azurerm_monitor_diagnostic_setting" "diagnostics_access_logs_sa" {
        id                             = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks-fe-00-sbox-agw|app-gw-storage-account"
        name                           = "app-gw-storage-account"
        # (6 unchanged attributes hidden)

      - metric {
          - category = "AllMetrics" -> null
          - enabled  = false -> null

          - retention_policy {
              - days    = 0 -> null
              - enabled = false -> null
            }
        }

        # (5 unchanged blocks hidden)
    }

Plan: 0 to add, 2 to change, 0 to destroy.

@hmcts-platform-operations
Copy link

hmcts-platform-operations commented Jul 24, 2024

Plan Result (sbox_backendappgateway)

Plan: 0 to add, 2 to change, 0 to destroy.
  • Update
    • module.backendappgateway.azurerm_application_gateway.ag[0]
    • module.backendappgateway.azurerm_monitor_diagnostic_setting.diagnostics_access_logs_sa[0]
Change Result (Click me)
  # module.backendappgateway.azurerm_application_gateway.ag[0] will be updated in-place
  ~ resource "azurerm_application_gateway" "ag" {
        id                                = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw"
        name                              = "cft-aks00-sandbox-agw"
        tags                              = {
            "application"  = "core"
            "autoShutdown" = "true"
            "builtFrom"    = "hmcts/azure-platform-terraform"
            "businessArea" = "CFT"
            "criticality"  = "Low"
            "environment"  = "sandbox"
            "expiresAfter" = "3000-01-01"
            "startupMode"  = "always"
        }
        # (8 unchanged attributes hidden)

      - probe {
          - host                                      = "bulk-scan-orchestrator-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/bulk-scan-orchestrator" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "bulk-scan-orchestrator" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "bulk-scan-payment-processor-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/bulk-scan-payment-processor" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "bulk-scan-payment-processor" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "bulk-scan-processor-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/bulk-scan-processor" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "bulk-scan-processor" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "bulk-scan-sample-app-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/bulk-scan-sample-app" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "bulk-scan-sample-app" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "div-emca-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/div-emca" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "div-emca" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "docmosis.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/dg-docmosis" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "dg-docmosis" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "draft-store-service-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/draft-store-service" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "draft-store-service" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "fpl-case-service-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/fpl-case-service" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "fpl-case-service" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "ia-bail-case-api-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/ia-bail-case-api" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "ia-bail-case-api" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "ia-case-api-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/ia-case-api" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "ia-case-api" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "ia-case-documents-api-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/ia-case-documents-api" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "ia-case-documents-api" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "ia-case-notifications-api-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/ia-case-notifications-api" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "ia-case-notifications-api" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "ia-hearings-api-sandbox.service.core-compute-sandbox.internal" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/ia-hearings-api" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "ia-hearings-api" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "idam-api-sprod.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/idam-api-sprod" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "idam-api-sprod" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "idam-api.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/idam-api" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "idam-api" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold                       = 3 -> null

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - host                                      = "idam-hmcts-access.sandbox.platform.hmcts.net" -> null
          - id                                        = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw/probes/idam-hmcts-access" -> null
          - interval                                  = 20 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "idam-hmcts-access" -> null
          - path                                      = "/health/liveness" -> null
          - pick_host_name_from_backend_http_settings = false -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 15 -> null
          - unhealthy_threshold  

# ...
# ... The maximum length of GitHub Comment is 65536, so the content is omitted by tfcmt.
# ...

        + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "ia-case-documents-api-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "ia-case-documents-api"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "ia-case-notifications-api-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "ia-case-notifications-api"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "ia-hearings-api-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "ia-hearings-api"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-api-sprod.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-api-sprod"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-api.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-api"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-hmcts-access.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-hmcts-access"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-testing-support-api.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-testing-support-api"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-user-dashboard.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-user-dashboard"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-user-profile-bridge.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-user-profile-bridge"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-web-admin-sprod.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-web-admin-sprod"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "idam-web-admin.sandbox.platform.hmcts.net"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "idam-web-admin"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "labs-apps-njs-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "labs-apps-njs"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "labs-dj-khaled-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "labs-dj-khaled"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "payment-api-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "payment-api"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "plum-frontend-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "plum-frontend"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "probate-business-service-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "probate-business-service"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "probate-orchestrator-service-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "probate-orchestrator-service"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "probate-submit-service-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "probate-submit-service"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "rd-professional-api-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "rd-professional-api"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "rd-profile-sync-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "rd-profile-sync"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "rd-user-profile-api-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "rd-user-profile-api"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "reform-scan-blob-router-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "reform-scan-blob-router"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "reform-scan-notification-service-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "reform-scan-notification-service"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "rpe-send-letter-service-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "rpe-send-letter-service"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "sscs-evidence-share-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "sscs-evidence-share"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }
      + probe {
          + host                                      = "sscs-tribunals-api-sandbox.service.core-compute-sandbox.internal"
          + id                                        = (known after apply)
          + interval                                  = 20
          + minimum_servers                           = 0
          + name                                      = "sscs-tribunals-api"
          + path                                      = "/health/liveness"
          + pick_host_name_from_backend_http_settings = false
          + protocol                                  = "Http"
          + timeout                                   = 15
          + unhealthy_threshold                       = 3
        }

        # (193 unchanged blocks hidden)
    }

  # module.backendappgateway.azurerm_monitor_diagnostic_setting.diagnostics_access_logs_sa[0] will be updated in-place
  ~ resource "azurerm_monitor_diagnostic_setting" "diagnostics_access_logs_sa" {
        id                             = "/subscriptions/b72ab7b7-723f-4b18-b6f6-03b0f2c6a1bb/resourceGroups/cft-sbox-network-rg/providers/Microsoft.Network/applicationGateways/cft-aks00-sandbox-agw|app-gw-storage-account"
        name                           = "app-gw-storage-account"
        # (6 unchanged attributes hidden)

      - metric {
          - category = "AllMetrics" -> null
          - enabled  = false -> null

          - retention_policy {
              - days    = 0 -> null
              - enabled = false -> null
            }
        }

        # (5 unchanged blocks hidden)
    }

Plan: 0 to add, 2 to change, 0 to destroy.

@hmcts-platform-operations

Plan Result (sbox_shutter_webapp)

No changes. Your infrastructure matches the configuration.

@hmcts-platform-operations

Plan Result (prod_private_dns)

No changes. Your infrastructure matches the configuration.

@hmcts-platform-operations

Plan Result (test_cftapps_private_dns)

No changes. Your infrastructure matches the configuration.

@hmcts-platform-operations

Plan Result (demo_private_dns)

No changes. Your infrastructure matches the configuration.

@hmcts-platform-operations

Plan Result (stg_private_dns)

No changes. Your infrastructure matches the configuration.

@hmcts-platform-operations
Copy link

hmcts-platform-operations commented Jul 24, 2024

Plan Result (stg_apim)

Plan: 2 to add, 0 to change, 0 to destroy.
  • Create
    • module.api-mgmt.azurerm_api_management_api_policy.apim
    • module.api-mgmt.azurerm_api_management_custom_domain.api-management-custom-domain
Change Result (Click me)
  # module.api-mgmt.azurerm_api_management_api_policy.apim will be created
  + resource "azurerm_api_management_api_policy" "apim" {
      + api_management_name = "cft-api-mgmt-stg"
      + api_name            = "health"
      + id                  = (known after apply)
      + resource_group_name = "cft-aat-network-rg"
      + xml_content         = <<-EOT
            <policies>
                <inbound>
                    <mock-response status-code="200" content-type="application/json" />
                </inbound>
                <backend>
                    <base />
                </backend>
                <outbound>
                    <base />
                </outbound>
                <on-error>
                    <base />
                </on-error>
            </policies>
        EOT
    }

  # module.api-mgmt.azurerm_api_management_custom_domain.api-management-custom-domain will be created
  + resource "azurerm_api_management_custom_domain" "api-management-custom-domain" {
      + api_management_id = "/subscriptions/96c274ce-846d-4e48-89a7-d528432298a7/resourceGroups/cft-aat-network-rg/providers/Microsoft.ApiManagement/service/cft-api-mgmt-stg"
      + id                = (known after apply)

      + gateway {
          + certificate_source           = (known after apply)
          + certificate_status           = (known after apply)
          + default_ssl_binding          = true
          + expiry                       = (known after apply)
          + host_name                    = "cft-api-mgmt.aat.platform.hmcts.net"
          + key_vault_id                 = "https://acmedcdcftappsstg.vault.azure.net/secrets/wildcard-aat-platform-hmcts-net"
          + negotiate_client_certificate = true
          + subject                      = (known after apply)
          + thumbprint                   = (known after apply)
        }
      + gateway {
          + certificate_source           = (known after apply)
          + certificate_status           = (known after apply)
          + default_ssl_binding          = true
          + expiry                       = (known after apply)
          + host_name                    = "cft-api-mgmt-appgw.aat.platform.hmcts.net"
          + key_vault_id                 = "https://acmedcdcftappsstg.vault.azure.net/secrets/wildcard-aat-platform-hmcts-net"
          + negotiate_client_certificate = true
          + subject                      = (known after apply)
          + thumbprint                   = (known after apply)
        }
      + gateway {
          + certificate_source           = (known after apply)
          + certificate_status           = (known after apply)
          + default_ssl_binding          = true
          + expiry                       = (known after apply)
          + host_name                    = "cft-mtls-api-mgmt-appgw.aat.platform.hmcts.net"
          + key_vault_id                 = "https://acmedcdcftappsstg.vault.azure.net/secrets/wildcard-aat-platform-hmcts-net"
          + negotiate_client_certificate = true
          + subject                      = (known after apply)
          + thumbprint                   = (known after apply)
        }
    }

Plan: 2 to add, 0 to change, 0 to destroy.

@hmcts-platform-operations
Copy link

hmcts-platform-operations commented Jul 24, 2024

Plan Result (demo_apim)

No changes. Your infrastructure matches the configuration.

@hmcts-platform-operations

Plan Result (ithc_private_dns)

No changes. Your infrastructure matches the configuration.

Copy link

Code Review Feedback

General Observations

  • The diffs indicate a widespread update of the azurerm provider version to 3.117.0 across various components. This is generally a good practice to ensure compatibility and take advantage of new features, improvements, and critical bug fixes provided by the updated provider version.

Recommendations

  1. Version Locking: While updating the provider version is a good practice, ensuring that the version is locked to a specific version (~> 3.117.0) rather than using a specific version number (3.117.0) offers a balance between stability and updates. The tilde prefix ~> allows patch-level changes that include fixes and backward-compatible improvements without automatically upgrading to newer minor versions that might introduce breaking changes. Example:
    terraform
    azurerm = {
    source = "hashicorp/azurerm"

    • version = "3.117.0"
    • version = "~> 3.117.0"
      }
    
    
  2. Testing and Validation: Make sure to test the updated version in a controlled environment before rolling it out to production. Use Terraform's plan and apply stages to assess the impact of these changes on your infrastructure. It's particularly crucial since provider updates can occasionally lead to unexpected behavior or incompatibility with the current configuration.

  3. Documentation and Change Log Review: As part of the upgrade process, review the azurerm provider's change log for version 3.117.0. It's necessary to be aware of any deprecations, new features, or breaking changes that might affect your configurations or require adjustments.

  4. Cost Implications: Generally, updating a provider version itself doesn't lead to direct cost changes. However, the new or changed features accessed through the updated provider might have cost implications. Therefore, budget for potential cost impacts based on the new resources or features you plan to use.

  5. Carbon Usage: Similar to cost implications, direct carbon usage is not affected by the provider version itself but by how the infrastructure's design or the resources utilized might change with the new version's capabilities. Aim for sustainability by optimizing resource usage and leveraging Azure's sustainability features.

  6. DRY Principle: If the provider configuration is repeated across multiple Terraform configuration files/components, consider abstracting the provider configuration into a shared configuration file. This approach reduces repetition and centralizes provider version management, making future updates easier and less error-prone.

Specific Example

Before:

terraform {
  required_providers {
    azurerm = {
      source = \"hashicorp/azurerm\"
      version = \"3.117.0\"
    }
  }
}

After incorporating feedback:

terraform {
  required_providers {
    azurerm = {
      source = \"hashicorp/azurerm\"
      version = \"~> 3.117.0\"
    }
  }
}
Conclusion

It's commendable that the provider versions are being updated across the components, indicating attention to infrastructure's reliability and security. Implementing the above recommendations will further enhance the robustness and maintainability of your Terraform configurations.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 9ae431b to b775619 Compare January 23, 2025 14:48
Copy link

Terraform Provider Version Upgrade

The diffs provided show an update to the azurerm provider version across multiple Terraform components. While upgrading provider versions is generally a good practice to take advantage of new features, bug fixes, and improvements, there are additional considerations and improvements that could be made.

Uniformity in Version Constraints

All components are updated to version 3.117.0 from various previous versions. It's commendable to maintain consistency in provider versions across components to ensure compatibility and simplify version management. However, specifying the version directly without using version constraints could lead to potential issues in the future when trying to apply updates or when depending on specific features.

Recommendation:
Use version constraints to allow for more flexibility and automatic updates within a specified range. This could prevent potential conflicts and make future upgrades smoother. For example, instead of hardcoding version 3.117.0, consider using:
hcl
version = "~> 3.117.0"

This allows minor updates that are backward compatible, offering a balance between stability and access to non-breaking improvements.

#### Review and Testing

Upgrading major dependencies like a cloud provider's Terraform provider should be accompanied by thorough testing. Missing in the diffs is any indication of testing or review processes to ensure that the upgrade does not introduce breaking changes to existing infrastructure management code.

**Recommendation:**
Implement a review process that includes:
- Automated testing (if possible) to validate infrastructure changes against expected outcomes.
- Manual review of Terraform's execution plan (`terraform plan`) for unexpected changes.
- Gradual rollout of provider version upgrades across environments, starting with development or staging environments before production.

#### Documentation and Change Log Review

When making such upgrades, reviewing the provider's change log for breaking changes, deprecations, and new features is important. This ensures awareness of any necessary adjustments in Terraform configurations and benefits from new capabilities or performance improvements.

**Recommendation:**
Add a step in the upgrade process where the change logs for the new version are reviewed and relevant information is disseminated to team members involved in infrastructure management.

#### Cost and Carbon Usage Consideration

While the provided diffs focus on version upgrades, any changes in the provider version might indirectly affect cost and carbon usage due to changes in resource handling, efficiency improvements, or new features allowing better optimization.

Since the diffs do not directly imply any immediate cost or carbon usage changes, the estimated price changes or carbon usage impact cannot be precisely determined.

**General Recommendation:**
Stay informed about cost-optimization features and best practices introduced with new provider versions, ensuring infrastructure is as cost-efficient and environmentally friendly as possible.

### Conclusion

The approach of keeping provider versions updated is fundamentally sound for maintaining a secure and efficient infrastructure management practice. However, incorporating version constraints, a structured testing and review process, and actively engaging with the provider's documentation will further improve this practice.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from b775619 to 87b09bb Compare January 24, 2025 09:59
Copy link

Analysis of Terraform Configuration Updates

General Observations

The diffs indicate an update across various Terraform components, specifically updating the azurerm provider version from various older versions, typically 3.113.0, to 3.117.0. This update routine reflects good practice in maintaining up-to-date dependencies, which can enhance security, access new features, and achieve potential performance improvements. However, simply updating the provider versions without a comprehensive review of the impacts of these changes can introduce risks. Let's explore additional improvements and considerations.

Specific Recommendations

  1. Review Release Notes: Before applying version updates for providers, it's critical to review the release notes between the current and target versions. This can help identify any breaking changes, deprecated features, or new requirements that need to be addressed. For each Terraform component updated:

    • Example: Examine the hashicorp/azurerm GitHub releases page for versions 3.113.0 to 3.117.0 to ensure there are no breaking changes affecting your configuration.
  2. Version Constraint Update Strategy: Using specific versions, while ensuring consistency, may unnecessarily restrict the ability to apply patch updates automatically. Consider using version constraints to allow automatic updates within a defined range.

    • Example: Instead of specifying version = \"3.117.0\", you can use a pessimistic version constraint like version = \"~> 3.117\" to accept any non-major updates beyond 3.117.0.
  3. Consistency Across Components: Ensure all components use compatible versions of providers and modules. This helps in maintaining consistency and avoiding compatibility issues. It appears this is being addressed, but a thorough review is always recommended when multiple components are involved.

  4. Testing Updates: Implement a robust testing strategy before applying the updates in production environments. This could include a combination of unit tests, integration tests, and deploying changes to a staging environment.

    • Example: Use Terraform's plan and apply commands in a controlled environment to assess the impact of the version updates.
  5. Infrastructure as Code (IaC) Security Practices: Review and audit the configurations for any potential security implications that might arise from the version updates. Tools like Checkov or Terraform Cloud's Sentinel can automate security checks.

  6. Carbon Usage Considerations: While the proposed changes don't directly influence carbon usage, adopting cloud resources and providers that are more efficient or closer to renewable energy sources can contribute positively. This might be more of a strategic consideration than something directly related to version updates.

Cost Implications

  • Immediate Cost: The direct change of provider versions doesn't inherently incur additional costs. Costs are more influenced by the Azure resources managed by Terraform rather than the Terraform provider itself.
  • Long-term Cost: Newer versions of providers might introduce features that enable more efficient management of Azure resources, potentially leading to cost optimization opportunities. However, careful consideration and strategy are necessary to leverage such benefits.

By following the recommendations above, the changes can align with best practices for maintainability, security, and cost-efficiency, ensuring the infrastructure remains robust and adaptable to future requirements.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 87b09bb to 2e93408 Compare January 24, 2025 13:20
Copy link

General Improvements Across All Changes

Code Quality and Best Practices

  1. Consistency in Versioning: It's good to see version updates for the azurerm provider to maintain the latest features and security patches. However, ensure that all components are consistently using the same version across your infrastructure as code (IaC) to avoid compatibility issues. This diff shows that all components have been updated to version 3.117.0, which is a good practice.

  2. Comments for Version Updates: When updating versions, especially major versions, it can be helpful to include comments in the Terraform configuration files explaining the reason for the update and any significant changes or manual steps required post-update. This can aid in understanding the context of updates during reviews or when troubleshooting.

Security

  1. Review Change Logs: Always review the change logs or release notes for the new version of the providers. This ensures you are aware of any deprecated features, security fixes, or breaking changes that could impact your infrastructure. This process should be a standard practice though not directly reflected in the code.

Cost and Carbon Usage

  1. Potential Cost Implications: Upgrading providers can sometimes lead to cost implications, depending on the new features or changes in default behaviours. For example, newer versions might enable features that incur more cost. It's always a good practice to perform a cost analysis based on the release notes of the updated version. While the git diff doesn't show direct cost changes, being proactive in analyzing this can prevent unexpected increases in expenses.

  2. Resource Efficiency: New versions might offer more efficient ways to manage resources, which can lead to cost savings and lower carbon usage. After updating, review if there are new attributes or resources introduced that can optimize your infrastructure's efficiency.

Specific Examples and Recommendations

  • Review azurerm 3.117.0 Release Notes: For the specific version 3.117.0, review the HashiCorp Terraform Provider Release Notes to understand the improvements or changes. Look for any optimizations or recommended changes in resource configurations that could be adopted.

  • Audit for Deprecated Features: Ensure none of the used features in your Terraform scripts are deprecated in the new version of azurerm. If deprecated features are found, plan for their replacement or modification according to the recommended practices in the version's documentation.

  • Cost Estimation Tools: Utilize Terraform's cost estimation tools or third-party tools to analyze the potential cost impact of upgrading to 3.117.0. This can provide an early indication of any significant cost changes.

Summary

The diffs signify a step towards maintaining up-to-date dependencies which is crucial for security, access to new features, and bug fixes. While the direct implications on cost and carbon output might not be evident through version numbers alone, adhering to this practice of regular updates and conducting due diligence (reviews and optimizations post-update) are best practices that indirectly contribute to cost-efficiency and sustainability in the long run.

Copy link

Terraform Provider Versioning

While the update to the Terraform azurerm provider version is a good practice to ensure compatibility with Azure's latest features and bug fixes, several additional improvements and considerations around versioning and overall Terraform configuration management are worth noting:

  1. Locking to a Specific Provider Version:

    • Whenever possible, avoid locking configurations to a very specific patch version unless necessary. It's better to specify a range that allows for automatic patch updates, which include bug fixes and security patches, without manual intervention.
    • Example: Instead of specifying version = "3.117.0", you could opt for version = "~> 3.117", allowing any non-breaking updates within the 3.117.* range.
  2. Version Consistency Across Components:

    • It's beneficial, as demonstrated, to maintain consistency in provider versions across different components to ensure compatibility and simplify debugging.
  3. Use of Provider Aliases for Environment Separation:

    • When managing resources across multiple Azure environments (e.g., development, staging, production), consider using provider aliases. This allows for distinct configuration settings per environment without duplicating provider blocks.
    • Example:
      hcl
      provider "azurerm" {
      alias = "production"
      version = "~> 3.117"
      features {}
      }

provider "azurerm" {
alias = "development"
version = "~> 3.117"
features {}
}


4. **Review and Regularly Update the Provider Versions:**
   - Regularly review and update the Terraform provider versions. This is critical for leveraging new features, performance improvements, and security patches. Automate this process if possible, using tools like Dependabot for GitHub repositories.

5. **Impact Analysis:**
   - Before upgrading provider versions, especially for major version updates, thoroughly review the release notes for breaking changes or deprecated features that might impact your configuration. Testing in a non-production environment is advisable.
   - Cost, security, and carbon usage impact due to provider version updates is generally minimal to none unless specific new features or resources introduced affect these aspects. However, using more efficient resources or configurations available in newer versions can indirectly lead to cost and carbon usage optimizations.

### Verdict

The updates to the `azurerm` provider version are a positive step for staying up to date with Azure features and improvements. Ensuring a flexible yet controlled approach to versioning, considering the use of provider aliases for better environment management, and establishing a process for regular provider updates are best practices you should follow to maintain and improve your Terraform configurations.

Copy link

The diff showcases an update across multiple Terraform components, upgrading the azurerm provider version from various previous versions to 3.117.0. Here are some additional improvements and best practices that could be applied:

  1. Consolidate Provider Configuration: If multiple components use the same provider and version, consider centralizing the provider configuration to reduce redundancy and simplify future updates. Terraform allows you to define providers in a central configuration file and re-use that configuration across modules.

  2. Version Pinning Strategy: The move to a specific version (3.117.0) is good practice for ensuring environment consistency and avoiding unexpected changes due to provider updates. However, consider using version constraints to automatically adopt patch updates which are typically backward compatible and include bug fixes. For example, you could specify version = \"~> 3.117\" to automatically include updates until 3.118.0.

  3. Review Changelog: Ensure the changelog for azurerm provider from 3.113.0 and 3.65.0 to 3.117.0 is thoroughly reviewed for any breaking changes or new features that could impact your infrastructure. This should include updates to resources, potential changes in behavior, and any required adjustments in your Terraform code.

  4. Terraform State Locking: If not already in place, consider implementing state locking to prevent concurrent state file writes, which can corrupt your state file. This is especially important in CI/CD environments or when working as part of a team. This can usually be enabled with your backend configuration and doesn't necessarily incur an additional cost unless using a managed backend service.

  5. Automated Testing and Plan Review: If not already part of the workflow, integrate automated testing and plan review as part of your CI pipeline. Tools like terraform plan can be run in CI to output the planned execution plan for review before applying changes. This assists in catching potential issues before they impact your live infrastructure.

  6. Cost Implications: Review the updated azurerm provider documentation for any new features or changes that could be leveraged to optimize costs. For example, newer versions often support more pricing tiers or configurations that could lower costs or provide better resource utilization. The update itself doesn't directly incur additional costs, but the new features enabled could lead to cost optimization or increases depending on usage.

  7. Carbon Usage: Modernizing infrastructure and utilizing cloud-native services effectively can contribute to carbon usage reduction through efficiency gains. Utilize Azure's sustainability features to measure and optimize the carbon footprint of your infrastructure. Again, the provider update enables access to newer, potentially more efficient services, indirectly impacting carbon usage.

By addressing these points, you can improve the maintainability, security, and efficiency of your Terraform-managed Azure infrastructure.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 250b841 to fec9b7b Compare January 29, 2025 15:34
Copy link

Terraform Provider Version Update

Updating the Terraform provider version across multiple components is beneficial for maintaining compatibility with Azure resources and features, as well as incorporating fixes for existing issues. However, several additional improvements and considerations should be taken into account for a more robust update:

  1. Version Constraints: Instead of hardcoding to a specific version, consider using version constraints to allow more flexibility while ensuring compatibility. For example, instead of specifying version = \"3.117.0\", you might use:

    hcl
    version = "~> 3.117"

    
    This approach allows minor version updates that include bug fixes and additional features without automatically upgrading to a new major version that might include breaking changes.
    
    
  2. Provider Block Consistency: Ensure that the provider configuration remains consistent across all modules and components. This change updates the azurerm provider version but doesn't address any potential inconsistencies in provider block configurations, such as features blocks or provider aliases. Review and standardize these configurations when necessary.

  3. Review Changelogs: Before upgrading, review the provider's changelog for each version from the current to the target. This can help identify potential breaking changes, new features, or bug fixes that might affect your infrastructure.

  4. Testing: Given the scope of the update, thorough testing is crucial. Implement a testing strategy that includes:

    • Unit testing: To validate each module independently.
    • Integration testing: To ensure modules work together as expected when combined.
    • Plan: Generating and reviewing the Terraform plan to identify what actions Terraform will perform.
  5. Cost Estimation and Optimization: Version updates can sometimes lead to changes in default behaviors or available features that might affect costs. While this update itself does not inherently change cost:

    • Utilize Terraform Cloud or Enterprise's cost estimation features if available.
    • Regularly review and optimize resources to ensure cost-effectiveness.
  6. Sustainability: Consider the carbon footprint associated with your infrastructure. Newer versions of providers might offer features that can help reduce this, such as more efficient resource management, support for newer, more efficient Azure services, or better lifecycle management to reduce waste.

  7. Documentation: Update any documentation related to the infrastructure setup or deployment process that references the specific versions of the Terraform provider.

  8. Version Control and CI/CD: Ensure that these version updates are properly tracked in version control and that your CI/CD pipelines are prepared to handle these changes without disruption.

By adopting these practices, you can improve infrastructure maintainability, stability, and efficiency, thereby reducing potential risks associated with provider version updates.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from fec9b7b to 532551e Compare January 31, 2025 09:35
Copy link

Terraform Provider Upgrade: Review and Recommendations

Improvements in Code Quality and Best Practices

  1. Consistent Versioning Across Components: The commits indicate an effort to standardize the provider version across various components to 3.117.0. This is a good practice for ensuring compatibility and consistency across your infrastructure as code. However, it's crucial to validate if all components are compatible with the newer version to prevent potential deployment issues.

    Example:
    hcl
    terraform {
    required_providers {
    azurerm = {
    source = "hashicorp/azurerm"
    version = "3.117.0"
    }
    }
    }

    Ensure thorough testing is conducted to validate the compatibility of updated provider versions across all components.
    
    
  2. Implement Provider Version Locking Where Appropriate: While it is good practice to keep your provider versions up to date, it is also important to implement version locking to a specific minor version when required to avoid unintentional updates that could potentially break your configurations.

    Example:

    version = \"~> 3.117.0\"

    This will allow automatic updates for patches within the 3.117.x series, providing a balance between receiving critical updates and maintaining stability.

  3. Review Changelogs for Breaking Changes: Anytime you update a provider version, especially with a significant leap as shown for the shutter_static_webapp component (from 3.65.0 to 3.117.0), it's crucial to review the provider's changelog. Look for any breaking changes or deprecations that could affect your infrastructure.

  4. Automate Testing and Validation: Consider implementing automated testing strategies, such as using Terraform's built-in validation tools or integrating with a CI/CD pipeline, to ensure that the version update does not introduce any breaking changes to your infrastructure.

Security, Cost, and Carbon Usage Considerations

  • Security: Regularly updating your providers can help address known vulnerabilities in older versions, enhancing the security posture of your infrastructure. Ensure that your security scanning tools are updated to account for the new versions.

  • Cost (GBP): Generally, updating a provider version in itself doesn't directly affect costs. However, new features introduced in the updated version could offer more efficient resource management or additional cost-saving features. It's advisable to review the updated provider's documentation for any such features.

    Estimated Price Changes: £0 (Direct changes from provider version update typically do not incur costs. However, leveraging new features for efficiency could lead to cost optimization.)

  • Carbon Usage: Indirectly, using more efficient resource management features introduced in the new provider versions could contribute to reduced carbon usage by optimizing the use of cloud resources. While the version update itself doesn't reduce carbon footprint, the adoption of more efficient practices enabled by the update could.

Conclusion

The steps taken to update the azurerm provider across multiple components are commendable for maintaining an up-to-date and secure infrastructure. It's advised to follow through with the above recommendations to ensure the changes yield the intended benefits without adversely affecting your configurations.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 532551e to 7236170 Compare February 3, 2025 13:28
Copy link

github-actions bot commented Feb 3, 2025

Terraform and Azure Provider Version Consistency

The diff indicates an update to the AzureRM provider version from 3.113.0 and 3.65.0 to 3.117.0 across various Terraform modules. This change aligns all modules with the same version of the provider, which is generally a good practice for consistency and leveraging new features or bug fixes. However, there are additional improvements and considerations that could be addressed:

1. Review Release Notes for Breaking Changes

Upgrading a provider can introduce breaking changes. It's crucial to review the AzureRM provider release notes between the old and new versions to understand any changes that might affect your infrastructure. Example:

  • Check for deprecated resources or attributes and adjust the Terraform configuration accordingly.

2. Utilize Version Constraints Properly

Setting the version to a specific number (version = \"3.117.0\") locks the provider to that version. For better flexibility and to receive updates that include bug fixes and patches without manually updating the version each time, you could use a version constraint like >= 3.117.0, < 4.0.0. This way, you allow updates within the 3.x.x range but prevent potential breaking changes from major version upgrades. Example:
hcl
azurerm = {
source = "hashicorp/azurerm"
version = ">= 3.117.0, < 4.0.0"
}


#### 3. **Testing and Validation**
Before applying these changes in a production environment, ensure to test the upgraded version in a development or staging environment. This helps in identifying and resolving any issues that might arise due to the provider version upgrade. Example:
- Utilize Terraform `plan` to identify changes.
- Test in an isolated environment to validate that existing infrastructure is not adversely affected.

#### 4. **Infrastructure as Code (IaC) Pipeline Integration**
If your project uses CI/CD pipelines for IaC deployment, ensure the pipeline tooling is aware of the version change. Sometimes, CI/CD environments cache older versions of providers, leading to inconsistencies between local development and pipeline execution.

#### 5. **Documentation Update**
- Update any project documentation that references the provider version to ensure team members are aware of the change and the reasons behind it.

#### Estimated Cost Implications
Generally, updating the provider version should not directly impact costs unless the new version introduces features or changes that affect the pricing of resources. Reviewing the Azure pricing documentation relevant to the resources managed by Terraform is a good practice after an update.

#### Carbon Usage Consideration
Version updates themselves don’t have a direct impact on carbon usage. However, being on a recent version could enable the use of more efficient Azure services or configurations, indirectly affecting energy consumption. For example, newer versions might support newer Azure services that are more efficient or enable configurations that reduce waste.

By adhering to these best practices, you maintain code quality and ensure the long-term maintainability and security of your Terraform configuration.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 7236170 to 358fd68 Compare February 3, 2025 15:57
Copy link

github-actions bot commented Feb 3, 2025

The provided git diff indicates updates to the azurerm Terraform provider version across various Terraform components. Here are several improvement opportunities based on code quality, security, best practices, cost, and carbon usage:

  1. Consolidate Provider Versioning:

    • If these components are part of the same Terraform project or are frequently used together, consider defining the azurerm provider version in a centralized Terraform configuration file or a shared module. This approach ensures consistency and simplifies future updates.

    hcl

    Example: centralize version definition

    azurerm = {
    source = "hashicorp/azurerm"
    version = "3.117.0"
    }

    
    
  2. Version Locking for Stability:

    • Ensure that version updates do not introduce breaking changes without proper testing. Utilizing the pessimistic constraint operator (~>) could offer a better balance, allowing for backward-compatible updates within a specified minor version.
    # Example: Use pessimistic constraint to allow automatic updates within 3.117.x releases
    azurerm = {
      source  = \"hashicorp/azurerm\"
      version = \"~> 3.117.0\"
    }
  3. Review and Test Provider Features:

    • Given the version leap in shutter_static_webapp, review the release notes for azurerm between 3.65.0 and 3.117.0. Ensure that deprecated features or breaking changes are accounted for, and perform comprehensive testing.
  4. Performance and Cost Optimization:

    • No direct cost impact is evident from a provider version update. However, newer versions might offer more efficient ways to manage resources or new features that could optimize costs if utilized properly. Review the updated documentation for potential optimizations.

    • For example, newer versions might support newer, more cost-effective Azure service tiers or configurations.

    # Example: Using a new feature to optimize cost
    resource \"azurerm_example\" \"example\" {
      # New configurations that are more efficient
    }
  5. Security Enhancements:

    • Updating the provider could introduce security enhancements or fix vulnerabilities present in older versions. This indirectly improves the overall security posture of your infrastructure. Regular updates are a best practice for security.
  6. Environment Friendly Practices:

    • While the provider update itself does not have a direct correlation to carbon usage, efficient management of cloud resources can contribute to reduced energy consumption. Using the newest features to optimize resource utilization and sizing could lead to lower carbon footprints.
    • As part of continuous improvement, always look for ways to use resources more efficiently, such as scaling down during low usage periods or automating the shutdown of unused resources.

To summarize, while updating the azurerm provider version is generally positive, it's crucial to perform thorough testing, leverage new efficiencies, maintain security through updates, and aim for resource optimization to lower both costs and carbon usage.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 358fd68 to 3e28b64 Compare February 4, 2025 11:54
Copy link

github-actions bot commented Feb 4, 2025

Code Review Feedback on Terraform Configuration Updates

General Feedback:

The updates reflect an effort to keep the Terraform azurerm provider versions consistent across different components, which is crucial for maintaining compatibility and taking advantage of bug fixes and new features. However, several specific improvements can be suggested for better practices, security, and efficiency.

Specific Recommendations:

  1. Centralizing Provider Configuration:

    • While updating the provider versions is a good practice, consider centralizing your provider configuration if your infrastructure's size and complexity are growing. This can help in managing upgrades more efficiently. For example, use a versions.tf file at the root of your Terraform configurations to define provider versions, which can then be referenced by individual modules without hardcoding versions everywhere. This change won't directly impact costs or carbon usage but can significantly reduce the maintenance overhead and potential for version conflicts.
  2. Version Constraints:

    • It’s generally a good practice to specify version constraints using >= for greater flexibility unless a specific version is required due to known issues or compatibility reasons. This ensures your configurations are not overly rigid and can benefit from patch updates without manual changes. Example for a more flexible version constraint:
      hcl
      azurerm = {
      source = "hashicorp/azurerm"
      version = ">=3.117.0"
      }
    • This change does not have a direct cost but can save future manual effort (and potential associated costs) in updating the configuration.
  3. Automated Testing:

    • Not observable from the diff directly but worth mentioning: Automated testing of Terraform plans (for instance, through a CI pipeline) can ensure that version updates do not introduce unexpected changes. Tools like terraform plan can be used in a dry-run mode within CI to identify potential issues automatically.
  4. Reviewing the Change Log:

    • Ensure that the upgrade from 3.113.0 to 3.117.0 (and from 3.65.0 to 3.117.0 for the static web app) doesn't introduce breaking changes or require adjustments in your Terraform configurations. This should be standard practice before applying version upgrades, but it’s particularly important when skipping several minor versions, as in the case of the static web app component. This ensures that your infrastructure remains stable and secure.
  5. Documentation and Commenting:

    • Finally, whenever making changes like these, especially in a team environment, document the reason for version updates not just in commit messages but possibly in the code through comments. While Terraform doesn't allow comments inside the required_providers block, maintaining a CHANGELOG.md or similar documentation helps keep the team informed about critical upgrades and their implications.

Summary

These improvements focus on maintainability, flexibility, and ensuring the stability of your infrastructure with minimal direct impact on costs or carbon usage. However, they significantly contribute to a smoother operational workflow and can prevent potential future expenses related to unexpected incompatibilities or manual interventions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
aat_global - TerraformPlanApply/add-or-update aat_global/add-or-update demo_apim - TerraformPlanApply/no-changes demo_apim_appgw - TerraformPlanApply/add-or-update demo_apim_appgw/add-or-update demo_apim/no-changes demo_backendappgateway/add-or-update demo_frontendappgateway/add-or-update demo_global - TerraformPlanApply/add-or-update demo_global/add-or-update demo_private_dns - TerraformPlanApply/no-changes demo_private_dns/no-changes dependencies Pull requests that update a dependency file dev_global - TerraformPlanApply/add-or-update dev_global/add-or-update ithc_apim - TerraformPlanApply/no-changes ithc_apim/no-changes ithc_backendappgateway/add-or-update ithc_frontendappgateway/add-or-update ithc_global - TerraformPlanApply/add-or-update ithc_global/add-or-update ithc_private_dns - TerraformPlanApply/no-changes ithc_private_dns/no-changes perftest_global - TerraformPlanApply/add-or-update perftest_global/add-or-update prod_apim_appgw - TerraformPlanApply/add-or-update prod_apim_appgw/add-or-update prod_apim/no-changes prod_backendappgateway/add-or-update prod_frontendappgateway/add-or-update prod_global - TerraformPlanApply/add-or-update prod_global/add-or-update prod_private_dns - TerraformPlanApply/no-changes prod_private_dns/no-changes prod_shutter_webapp/no-changes sbox_apim - TerraformPlanApply/no-changes sbox_apim_appgw - TerraformPlanApply/add-or-update sbox_apim_appgw/add-or-update sbox_apim/no-changes sbox_backendappgateway/add-or-update sbox_frontendappgateway/add-or-update sbox_global - TerraformPlanApply/add-or-update sbox_global/add-or-update sbox_private_dns - TerraformPlanApply/no-changes sbox_private_dns/no-changes sbox_shutter_webapp/no-changes stg_apim - TerraformPlanApply/no-changes stg_apim/add-or-update stg_apim_appgw - TerraformPlanApply/add-or-update stg_apim_appgw/add-or-update stg_backendappgateway/add-or-update stg_frontendappgateway/add-or-update stg_private_dns - TerraformPlanApply/no-changes stg_private_dns/no-changes test_apim - TerraformPlanApply/no-changes test_apim_appgw - TerraformPlanApply/add-or-update test_apim_appgw/add-or-update test_apim/no-changes test_backendappgateway/add-or-update test_cftapps_private_dns/no-changes test_frontendappgateway/add-or-update
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant