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 2 commits 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:

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

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

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

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

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

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

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

    • Bumped the version of 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

Terraform Provider Version Update Review

Best Practices

  1. Version Pinning for Stability: While the update to version 3.117.0 across various components from 3.113.0 or even a more drastic jump from 3.65.0 is a good practice to keep up with provider enhancements and bug fixes, it's also important to pin to a specific version or use a version constraint that offers a balance between receiving updates and ensuring stability. For instance:
    terraform
    azurerm = {
    source = "hashicorp/azurerm"
    version = "~> 3.117"
    }

    Using the tilde and greater than (~>) constraint allows the use of the latest patch versions without automatically upgrading to a new major version that could introduce breaking changes.
    
    
  2. Review and Testing: Ensure thorough testing when updating critical infrastructure components. Provider updates may introduce changes that affect existing infrastructure. Automated testing environments or canary deployments are recommended to catch issues early.

  3. Documentation and ChangeLog: Before applying updates, review the provider's changelog for version 3.117.0. This helps in understanding new features, enhancements, or bug fixes that come with the update and may also highlight any action required to amend your configurations or associated resources for compatibility.

Security

  • Provider updates often include security patches. Upgrading to 3.117.0 ensures vulnerabilities identified in previous versions are addressed. Always prioritize security patches and evaluate the security impact of updating, balancing potential risks with the benefits of the new version.

Cost and Carbon Usage

  • The cost and carbon usage implications of updating the Terraform provider version are primarily indirect. However, new versions might offer more efficient ways to provision and manage resources, potentially leading to cost and carbon savings.
  • Example: If version 3.117.0 introduces improved support for Azure's reserved instances or spot instances, adopting these can significantly reduce costs and indirectly lower carbon footprint due to more efficient resource utilization.
  • While direct GBP cost changes from simply updating the provider version are hard to quantify without specific context on resource adjustments, leveraging new features for optimization could lead to savings. Regularly review Azure's pricing updates and the provider's capabilities to align with cost-effective practices.

Conclusion

The move to update the azurerm Terraform provider to version 3.117.0 across various components is fundamentally positive, aligning with keeping infrastructure as code practices current. However, it's essential to approach such updates with a strategy that includes version constraints for stability, thorough testing for reliability, and a keen eye on documentation for leveraging new capabilities to maximize security, cost efficiency, and environmental sustainability.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 275bb6b to 0c85a8d Compare February 11, 2025 15:10
Copy link

Code Review

Your update from version 3.113.0 to 3.117.0 for the azurerm provider across multiple components is a positive change towards maintaining up-to-date dependencies. However, additional improvements can be made to enhance code quality, security, and best practices.

Recommendations:

  1. Use Version Constraints for Better Control:
    Instead of hardcoding the provider version to 3.117.0, consider using version constraints to automatically benefit from updates that include bug fixes and enhancements without manually updating your configuration each time. For example:

    hcl
    version = ">= 3.117.0, < 4.0.0"

    
    This approach ensures you are using the latest available version within the major version `3`, protecting your environment from potential breaking changes that a major version upgrade could introduce.
    
    
  2. Verify Compatibility:
    Ensure that the new version 3.117.0 is fully compatible with your Terraform configurations and does not introduce any deprecations or breaking changes that could affect your infrastructure. Review the AzureRM provider release notes for details.

  3. Optimization and Cost Management:
    While the provider version update itself does not directly impact costs, it's a good opportunity to review and assess your Azure resources. Optimizing configuration or considering new features available in the updated provider could lead to cost savings. For example, evaluate if newer, cost-effective services or features are now supported.

  4. Carbon Usage:
    Indirectly, by optimizing resources and leveraging more efficient Azure services introduced in newer provider versions, you can potentially reduce your carbon footprint. Efficient resource usage and choosing regions with greener energy sources are practical steps in this direction.

  5. Automation of Dependency Updates:
    Consider automating the update process of Terraform providers and other dependencies. Tools like Dependabot or Renovate can automatically create pull requests when new versions are available, helping to keep dependencies up-to-date with minimal manual intervention.

  6. Testing:
    Before applying these changes in your production environment, ensure you have tested thoroughly in a development or staging environment. This helps in identifying and mitigating potential issues arising from the provider version upgrade.

Estimated Price Changes

Direct cost changes due to the provider version upgrade are not expected. However, indirect cost benefits can be realized through optimization opportunities that newer versions may offer. It's crucial to conduct a thorough review of the Azure resources in use to identify specific cost-saving measures. The actual savings would depend on the optimizations implemented and cannot be estimated without a detailed understanding of the current infrastructure setup.

Conclusion

By adhering to these recommendations, not only do you keep your infrastructure code up-to-date, but you also adopt best practices that contribute to a more secure, cost-effective, and sustainable Azure environment.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 0c85a8d to 0ff480c Compare February 12, 2025 09:40
Copy link

Code Review Feedback

The diff provided shows an update of the AzureRM provider version from 3.113.0 to 3.117.0 across various Terraform components. While this is generally good practice to keep dependencies up to date, there are several other improvements and considerations worth noting:

  1. Review Release Notes and Upgrade Guides: Before updating the provider version, it's important to review the AzureRM provider's release notes and upgrade guides for any breaking changes or depreciation warnings that could affect your Terraform configurations.

  2. Utilize Version Constraints: Instead of pinning to a specific version, consider using version constraints to allow more flexibility while ensuring compatibility. For example:
    hcl
    version = "~> 3.117"

    This allows for automatic updates to newer patch versions, reducing the need for manual updates while avoiding potentially breaking changes in new major or minor versions.
    
    
  3. Keep Provider Versions Consistent: You've updated most components to 3.117.0, except for components/shutter_static_webapp/init.tf which was updated from 3.65.0. While it's now consistent, ensure all components use compatible versions to avoid conflicts or unexpected behavior.

  4. Error Handling and Validation: Ensure that your configurations have proper error handling and validation checks in place, especially when updating providers which might introduce new requirements or change existing behaviors.

  5. Cost Implications: Updating the provider might enable new features or optimizations that could either save costs by improving efficiency or increase costs if new resources are deployed or existing ones are modified. Perform a cost analysis to understand the impact. Azure offers a Pricing Calculator to help with these estimates. The actual cost change will heavily depend on your specific configuration and usage patterns, making it challenging to give a precise estimate without more details.

  6. Carbon Usage: Newer versions of Azure services might offer improved efficiency or options for using greener data centers. Consider consulting Azure's sustainability documentation for opportunities to reduce your carbon footprint.

  7. Automate Dependency Updates: Consider implementing a process or tools like Dependabot to automatically propose updates to dependencies, including Terraform providers. This can help maintain your configurations up-to-date without manual intervention.

  8. Testing: After updating the provider version, thoroughly test your Terraform configuration to ensure no unexpected changes or issues. Utilize terraform plan to identify any modifications that will be made.

Implementing these improvements and considerations will help ensure more robust, secure, and cost-effective Terraform configurations.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 0ff480c to fb8b0f3 Compare February 12, 2025 09:44
Copy link

Additional Improvements on Terraform Code

The git diff primarily shows an update in the version of the AzureRM provider from various versions to 3.117.0. While updating the provider version is a crucial step for taking advantage of new features, bug fixes, and performance improvements, there are several more aspects you might want to consider to enhance the quality, security, and cost-effectiveness of your Terraform configurations.

1. Consistency and Configuration Management

  • Provider Configuration Block Consolidation: Consider consolidating your provider configuration if these components exist within the same Terraform workspace or are part of the same configuration set. This reduces redundancy and ensures consistency.

    terraform
    terraform {
    required_providers {
    azurerm = {
    source = "hashicorp/azurerm"
    version = "~> 3.117"
    }
    }
    }

    
    
  • Version Constraint: Use version constraints more effectively to automatically inherit backward-compatible updates. Using ~> instead of a fixed version allows for minor updates without manual changes, enhancing maintainability.

    version = \"~> 3.117\"

2. Infrastructure as Code (IaC) Practices

  • Variable Usage for Versions: For projects with multiple components relying on the same provider version, consider using a global variables file to define provider versions. This approach enables you to update the version in a single place, further simplifying maintenance.

    variables.tf:

    variable \"azurerm_provider_version\" {
      description = \"Specifies the version of the AzureRM provider.\"
      type        = string
      default     = \"~> 3.117\"
    }

    provider.tf:

    terraform {
      required_providers {
        azurerm = {
          source  = \"hashicorp/azurerm\"
          version = var.azurerm_provider_version
        }
      }
    }

3. Performance and Efficiency

  • Evaluate New Features and Implications: Each new version of a provider can introduce features that may affect performance, security, and cost. Review the release notes of the provider for potentially beneficial new resources or arguments.

    For example, newer versions might introduce more efficient ways to manage resources or new properties that can reduce costs when properly utilized.

4. Security Practices

  • Review Permissions and Policies: With an updated provider, assess if there are any new recommendations or best practices regarding security, like finer-grained permissions or improved ways to manage secrets.

  • Sensitive Data Handling: Ensure no sensitive data is hard-coded in Terraform configurations. Utilize Terraform secrets management practices for handling sensitive values.

Cost and Carbon Usage

  • Updating the provider version itself may not directly impact costs or carbon usage. However, the utilization of new features or resources with better efficiency could lead to cost savings and reduced carbon footprint:

    • Cost-Effective Resources: Newer versions could support more cost-effective alternatives for managing certain resources.
    • Performance Enhancements: Improved performance might translate to shorter execution times for Terraform runs, indirectly contributing to a reduction in computing resource consumption and carbon footprint.
  • Estimated Price Changes: It's challenging to estimate cost changes without specific resource updates. Still, adopting more efficient resources or configurations can lead to savings. Regularly review and optimize your infrastructure costs by using Azure's cost management tools.

Note: Always consider running terraform plan in a non-production environment after such updates to catch any unexpected changes or deprecations before they impact your production infrastructure.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from fb8b0f3 to 852ef53 Compare February 12, 2025 10:17
Copy link

Assessment and Recommendations

Upon reviewing the git diff focused on Terraform configuration updates for the azurerm provider across various components, here are additional improvements and specific examples for enhancing code quality, security, best practices, and cost, including potential carbon usage considerations:

  1. Locking Provider Versions

    • While updating the provider version is good practice to stay current, it's also crucial to avoid potential conflicts or unintended upgrades. Consider using ~> to lock the provider version to updates that are within the given minor version. This provides stability while ensuring you get patches and backward-compatible changes.

    hcl
    azurerm = {
    source = "hashicorp/azurerm"
    version = "~> 3.117.0"
    }

    
    
  2. Consistency in Provider Upgrade

    • All components are upgraded except shutter_static_webapp, which seems to have jumped from 3.65.0 to 3.117.0. Although upgrading is beneficial, ensure thorough testing to avoid breaking changes that could affect your infrastructure deployment.
  3. Reusable Configuration Modules

    • The repetitive nature of upgrading the azurerm provider version across multiple components suggests an opportunity to abstract common configurations into reusable modules.

    • Create a module for common configurations, significantly reducing redundancy and simplifying future updates.

    # module/provider-configuration/main.tf
    terraform {
        required_providers {
            azurerm = {
                source = \"hashicorp/azurerm\"
                version = \"~> 3.117.0\"
            }
        }
    }
  4. Infrastructure as Code (IaC) Best Practices

    • Review Unused Resources: Use this opportunity to review and remove any unused resources to optimize costs.

    • State File Security: Ensure that your Terraform state file, especially if it contains sensitive information, is stored securely using remote backends like Azure Blob Storage with encryption enabled.

  5. Cost Management

    • Monitor and Optimize Costs: Use Azure Cost Management to monitor the impact of these changes on your infrastructure costs. There may not be a direct cost impact from upgrading the provider itself, but it could lead to resource changes that might have cost implications.

    • Considering potential cost implications, especially when deploying to regions with different pricing, might help in cost optimization.

  6. Carbon Usage Considerations

    • Region Selection: Consider deploying resources in Azure regions that are more sustainable or have a better green energy mix. While the provider update itself does not directly influence carbon output, the choice of services and their locations can.

    • Tags for Resources: Implement a tagging strategy for tracking which resources are most carbon-intensive. Tags like environment = \"production\" or component = \"frontend\" could help in identifying where to optimize.

  7. Security

    • Review IAM Policies: Ensure that the Identity and Access Management (IAM) policies for accessing these Azure resources are up-to-date with the principle of least privilege.

In conclusion, while the updates in the diff focus on keeping the azurerm provider current, the recommendations provided aim at enhancing the overall infrastructure strategy concerning security, cost efficiency, and sustainability.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 852ef53 to 011adab Compare February 12, 2025 15:01
Copy link

Terraform Provider Version Consistency

The diffs indicate an update of the azurerm Terraform provider version from 3.113.0 to 3.117.0 across multiple Terraform modules. This is a good practice for ensuring that the provider versions are up-to-date and consistent across all components, which can help in utilizing new features and bug fixes.

Specific Recommendations:

  1. Version Locking: Consider implementing version constraints instead of pinning to a specific version. Pinning to an exact version (version = \"3.117.0\") can lead to a lack of flexibility and might prevent the automatic use of patch updates that include important bug fixes or security patches. A version constraint like version = \"~> 3.117\" would allow for automatic updates to newer patch versions within the 3.117 line, enhancing security and stability without manual intervention.

    Example:
    hcl
    azurerm = {
    source = "hashicorp/azurerm"

    • version = "3.117.0"
    • version = "~> 3.117"
      }
    
    
  2. Review Updated Features and Deprecations: With each provider update, it's important to review the release notes of the azurerm provider for any new features, improvements, deprecations, or bug fixes. Adjust your Terraform configurations accordingly to leverage new capabilities and to avoid using deprecated features that might be removed in future versions.

  3. Testing: After updating the provider version, thoroughly test your Terraform configurations to ensure that the update does not introduce any unintended changes to your infrastructure. Consider using Terraform’s plan and apply steps in a non-production environment first to catch any potential issues.

  4. Automation: If you have CI/CD pipelines in place for your Terraform deployments, ensure that they are updated to handle the new provider version. This includes updating any version checks or linting tools that might enforce specific version constraints.

Cost, Security, and Carbon Usage:

  • Cost: There is no direct cost impact from updating the Terraform provider version itself. However, new features enabled or optimizations made as a result of using the updated provider could lead to cost savings or increased costs depending on the changes made within the infrastructure.
  • Security: Keeping the provider version up-to-date can enhance security by ensuring that any vulnerabilities discovered in previous versions are addressed.
  • Carbon Usage: There are no direct carbon usage implications from the Terraform provider version update. Indirectly, more efficient resource management enabled by new provider features could contribute to reducing carbon footprint.

Conclusion

Updating the Terraform azurerm provider to a newer version is generally beneficial for taking advantage of bug fixes, security patches, and new features. Implementing version constraints provides flexibility and ensures that your configurations remain compatible with patch updates. Always review the release notes for the updated version and test thoroughly before applying the changes to production environments.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 011adab to 3dbfb38 Compare February 14, 2025 13:46
Copy link

This diff represents a global update to the azurerm provider version across multiple Terraform components from version 3.113.0 to 3.117.0, and a specific update from 3.65.0 to 3.117.0 for the shutter_static_webapp component. Here are additional improvements and observations:

  1. Consistency and Maintenance: The update improves consistency across the components by standardizing the provider version. Regularly updating the provider ensures access to the latest features, bug fixes, and improvements. It's good practice to stay relatively current with your providers to leverage enhancements and ensure compatibility.

  2. Version Constraint Specification: It's commendable to specify versions to avoid unexpected changes. However, using a precise version (version = \"3.117.0\") locks you into that version. Consider using a version constraint to automatically adopt backwards-compatible updates. For example, specifying version = \"~> 3.117\" would allow automatic updates to any future 3.x release without manual intervention, but won't automatically upgrade to a potentially breaking 4.x release.

  3. Review Release Notes: Before committing to a version upgrade, it's critical to review the provider's release notes for 3.117.0 as well as the versions you're skipping. Ensure there are no breaking changes or specific actions required that could impact your infrastructure.

  4. Testing: Upgrading provider versions should always be accompanied by thorough testing. Automated testing environments or canary deployments could provide confidence that the update does not introduce regressions.

  5. Documentation: Update any documentation that references the old provider versions. Documentation ensures that team members are aware of the changes and can help reduce confusion or potential version conflicts during local development or CI/CD processes.

  6. Financial and Carbon Impact: Although the direct cost change from this update is minimal, staying current can indirectly affect costs. New provider versions may offer more efficient ways to manage resources or new features that can optimize cost. For example, newer Azure resources might have better performance or cost-effectiveness. There is also a potential environmental benefit in optimizing resource usage for sustainability goals.

  7. Security Practices: Keeping dependencies up-to-date is a critical security practice. Older versions of providers might include vulnerabilities that have been addressed in newer versions. Ensuring you're using a supported version helps maintain the security posture of your infrastructure.

In conclusion, this update step is a positive move. To further benefit from it, consider the above points for maintaining code quality, security, cost-efficiency, and sustainability in your cloud infrastructure management practices.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 3dbfb38 to 901bd93 Compare February 14, 2025 15:16
Copy link

Terraform Code Review: Provider Version Update

Upon reviewing the provided git diff, which focuses on updating the AzureRM provider version for Terraform in various components, a few additional suggestions can be made to further improve the code’s quality, security, best practices, cost, and carbon usage.

1. Version Pinning for Stability and Reproducibility

  • Example(s):
    Updating the provider version to a specific version (3.117.0) is a good practice. However, consider using version constraints to allow for automatic patch updates, which can include important bug fixes and security patches, without manually changing the version each time. For instance:
    hcl
    version = "~> 3.117"
    This approach ensures that your configurations automatically benefit from patch updates while avoiding potentially breaking changes that minor or major version updates might introduce.
    
    

2. Review and Audit New Features or Breaking Changes

  • Before updating to a newer version, it's beneficial to review the provider's release notes for any new features, improvements, or breaking changes that could affect your configurations. Audit the configurations to leverage any new beneficial features and to ensure compatibility with the updated version.

3. Cost and Efficiency

  • Upgrading AzureRM provider version doesn’t directly impact costs. However, newer versions may introduce more efficient ways to manage resources or support for newer, cost-effective Azure services. Always align resource provisioning with the principles of cost optimization, such as right-sizing and shutting down unused resources.

4. Security Enhancements

  • Newer versions of providers typically include security enhancements and patches. Ensure that all configurations follow Azure security best practices, such as securing access with Managed Identities, using Azure Policy for compliance, and encrypting sensitive data.

5. Carbon Footprint Awareness

  • While the provider version update itself doesn’t have a direct impact on carbon usage, using efficient and appropriately sized Azure services can contribute to reduced energy consumption. Always aim to use services and resources optimally to minimize the environmental footprint.

6. Automate Terraform Provider Updates

  • Consider using automated tools or CI/CD pipelines to keep the Terraform providers up-to-date. This can reduce manual overhead and ensure that your infrastructure benefits from the latest features and security patches.

Summary

Updating the provider version is a crucial step towards maintaining secure, performant, and cost-effective infrastructure as code (IaC). Ensuring that the versioning strategy allows for stability, auditing for compatibility with new features or breaking changes, maintaining security best practices, optimizing for cost and efficiency, being mindful of carbon footprint, and automation are key points to consider for further improvements in managing Terraform configurations.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 901bd93 to 5b11534 Compare February 17, 2025 13:33
Copy link

Terraform Provider Version Updates

The update from azurerm version 3.113.0 to 3.117.0 (and in one case from 3.65.0 to 3.117.0) across multiple components indicates an effort to keep the infrastructure as code (IaC) up to date with the latest provider features, security patches, and performance improvements. This is a good practice, but there are additional improvements and considerations:

  1. Consistent Version Declaration:

    • Current State: Version pinning is done directly in the components' Terraform files.
    • Improvement: For projects with multiple components depending on the same provider, consider using a centralized configuration file for version pinning to ensure consistency and simplify updates. Example:
      hcl
      terraform {
      required_version = ">= 0.13"
      required_providers {
      azurerm = {
      source = "hashicorp/azurerm"
      version = "3.117.0" # Centralized version control
      }
      }
      }
      
      
  2. Version Constraints:

    • Current State: Fixed versions are used.
    • Improvement: Use version constraints to allow for automatic updates within a certain range, thereby receiving critical patches while avoiding unexpected breaking changes. Example:
      version = \"~> 3.117\" # Allows versions >= 3.117.0 and < 3.118.0
  3. Review and Testing Process:

    • Consideration: Ensure there's a review and testing process for updating provider versions. Major version updates can introduce breaking changes.
    • Best Practice: Use automated testing tools to validate configurations with the updated provider version. This ensures compatibility and minimizes disruption.
  4. Documentation:

    • Consideration: Each provider version upgrade should be documented, including the reason for upgrades (e.g., new features, security patches, performance improvements) and any necessary changes in the infrastructure configuration.
    • Best Practice: Maintain a changelog for infrastructure changes to track the evolution of your environment and facilitate debugging and audits.
  5. Cost and Carbon Usage Implications:

    • Cost: Updating providers might lead to cost implications if new features or optimizations are introduced that change the resource utilization or available pricing models.
    • Carbon Usage: Similarly, changes in resource efficiency or the introduction of more sustainable resource types can affect carbon output. Optimizing for efficiency not only saves costs but also aligns with sustainable best practices.
  6. Security:

    • Consideration: Verify the security reputation of the new version, ensuring there are no known vulnerabilities introduced with the update.
    • Best Practice: Utilize tools like HashiCorp Sentinel for policy enforcement and scanning of Terraform configurations to identify potential security concerns proactively.

Estimated Price Changes

  • Provider Updates: Generally, updating a provider version in isolation doesn't directly impact costs. However, leveraging new features or resources introduced could lead to cost optimizations or increases depending on their use.
  • Cost Estimation Tools: Utilize tools like Terraform Cloud's cost estimation or third-party cost management tools to assess the impact of changes on the overall budget.
  • GBP Specific: Direct cost implications in GBP would primarily result from changes in resource usage or switching to different Azure resource types that might be more cost-effective or expensive. The exact figures would depend on the applied changes in the infrastructure following the provider update.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 5b11534 to a219c40 Compare February 17, 2025 15:25
Copy link

Terraform Provider Version Upgrade

You're updating the azurerm provider version across multiple components. This is generally a positive step towards maintaining the up-to-datedness and security of your infrastructure. However, there are additional improvements and best practices you should consider to optimize your Terraform configurations further:

  1. Version Constraints: You've hard-coded the provider version to 3.117.0. While precise version pinning is often necessary for stability, it can also hinder flexibility and the timely adoption of beneficial updates. Consider using version constraints to allow for automatic updates within certain bounds, reducing the need for manual updates. For instance:
    hcl
    azurerm = {
    source = "hashicorp/azurerm"
    version = "~> 3.117"
    }

    This constraint will allow Terraform to automatically use newer patch versions, providing bug fixes and improvements while avoiding potentially disruptive changes.
    
    
  2. Changelog Review: Ensure that the upgrade from 3.113.0 and 3.65.0 to 3.117.0 does not introduce breaking changes or require adjustments to your Terraform code not covered by this diff. Reviewing the AzureRM provider release notes is crucial for understanding changes and avoiding unforeseen issues.

  3. Testing: Before applying this upgrade in a production environment, thoroughly test your configurations in a development or staging environment. This ensures any new features or breaking changes introduced by the provider upgrade do not negatively affect your infrastructure.

  4. Consistency Across Environments: Confirm that all environments (development, staging, production) are using, or prepared to use, the same provider version to avoid discrepancies and hard-to-debug issues caused by environment drift.

  5. Infrastructure as Code (IaC) Best Practices: As part of maintaining and modifying Terraform configurations:

    • Keep your Terraform scripts modular to simplify management and updates.
    • Utilize Terraform workspaces for managing different deployment environments.
    • Implement code review processes for Terraform changes, as you're doing now.
    • Use remote state storage with state locking to prevent concurrent state modifications.

Cost and Carbon Usage

  • Direct Cost Changes: Updating the provider version itself should not directly impact costs unless the new version introduces features or changes that you choose to implement, which could increase or decrease your Azure resource costs.
  • Indirect Cost Savings: Utilizing newer Terraform provider versions could indirectly save costs by leveraging more efficient or cost-effective resources and features introduced in newer versions.
  • Carbon Usage: While the provider version update does not directly affect carbon usage, adopting more efficient Azure services or configurations can have a positive environmental impact. Always aim to optimize resource usage and select regions with greener energy sources if possible.

Summary

While updating your AzureRM provider version is a step in the right direction, consider version constraints for more flexibility, thoroughly review changelogs, ensure extensive testing, and apply IaC best practices for smoother, safer, and more efficient infrastructure management.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from a219c40 to 9befd99 Compare February 19, 2025 10:55
Copy link

Code Review Recommendations:

The diff provided shows updates to the azurerm Terraform provider version across various Terraform component configurations. The change updates the provider version from 3.113.0 to 3.117.0 (and from 3.65.0 to 3.117.0 in one instance). Reviewing for improvements beyond what's provided:

Version Pinning Strategy

The approach to pinning the azurerm provider version strictly to 3.117.0 is generally sound for ensuring consistency across deployments. However, it's critical to assess the risk of potential breaking changes or regressions in patch versions. Consider using the pessimistic constraint operator (~>) to automatically allow patches:

hcl
azurerm = {
source = "hashicorp/azurerm"

  • version = "3.117.0"
  • version = "~> 3.117.0"
    }

This change would permit automatic updates to patch releases (e.g., `3.117.1`) that likely include bug fixes and minor improvements without needing manual intervention for each.

### Dependency Management

Since multiple components are updating the `azurerm` version in tandem, evaluate if your project can benefit from a centralized management of Terraform provider versions. This could be by:

1. Utilizing a shared configuration file for common provider requirements.
2. Implementing a version management tool or script that updates all configurations concurrently to ensure consistency.

These approaches can simplify maintenance tasks, especially as the number of components grows.

### Security Implications

Keeping providers up-to-date, as shown, is crucial for addressing security vulnerabilities. Continuously monitor the releases of the `azurerm` provider for any security patches and evaluate automating the update process to reduce the window of exposure.

### Best Practice: Infrastructure as Code (IaC) Linting and Validation

Not directly shown in the diff, but as a general recommendation, incorporate IaC scanning and validation tools (e.g., `tfsec`, `checkov`, or `terraform validate`) into your development pipeline to catch potential misconfigurations or security issues early in the development cycle.

### Cost and Carbon Usage Consideration

No direct cost or carbon usage impact can be assessed from the version update itself. However, staying current with provider versions ensures access to new features, including any related to cost optimization or reduced carbon footprint. For instance, newer versions might offer better support for spot instances or more efficient resource management, indirectly contributing to cost savings and reduced carbon usage.

#### Estimated Cost Changes

Updating the provider version has no direct cost. However, always assess any new features or changes in resource management introduced by the provider update for potential cost implications.

---

Adopting these recommendations would further align your Terraform practices with a focus on automation, security, and efficiency.

@renovate renovate bot force-pushed the renovate/azurerm-3.x branch from 9befd99 to 331b58e Compare February 19, 2025 11:24
@github-actions github-actions bot requested a review from a team as a code owner February 19, 2025 11:24
Copy link

Recommended Improvements Review

The diff provided shows an update in the azurerm provider version across multiple Terraform components from 3.113.0 to 3.117.0, and in one case, from 3.65.0 to 3.117.0. Here are some additional suggestions for potential improvements:

  1. Consistent Version Pinning Across Components:

    • Current State: The upgrade to version 3.117.0 is a positive step toward maintaining up-to-date dependencies.
    • Suggestion: Ensure that all Terraform configs in the project use the same version pinning approach (=, ~>, >=) to maintain consistency and control over updates.
    • Example:
      hcl
      azurerm = {
      source = "hashicorp/azurerm"
      version = "~> 3.117" # Use pessimistic constraint to automatically adopt patch versions
      }
      
      
  2. Review Updated Version's Changelog:

    • Current State: Direct version update.
    • Suggestion: Always review the provider's changelog for the new version to adapt code for any deprecated features or behavior changes.
    • Example: Check the azurerm GitHub releases page for version 3.117.0.
  3. Testing and Validation:

    • Current State: Update applied directly in the Terraform files.
    • Suggestion: Before applying these version changes across environments, make sure to test them in a contained environment (like a sandbox) to identify potential issues with the new provider version.
    • Example: Use Terraform workspaces or a separate cloud environment to test the changes.
  4. Automated Dependency Update Tools:

    • Current State: Manual version update in git diff.
    • Suggestion: Consider using automated dependency update tools like Dependabot or Renovate to keep your cloud infrastructure code dependencies up-to-date safely.
    • Example: Enable Dependabot for your GitHub repository to get pull requests for dependency updates.
  5. Documentation:

    • Current State: Code change without context in provided diff.
    • Suggestion: Update project documentation to reflect the reasoning behind dependency updates, especially if they include substantial changes to functionality or recommended best practices.
    • Example: Add comments in Terraform files or update a README.md with information about version pinning strategies and update policies.

Cost and Carbon Usage Considerations

  • Updating the azurerm provider version itself doesn't directly incur extra costs or increase carbon footprint. However, using newer versions can sometimes enable more efficient resource management features, potentially reducing costs and carbon usage.
  • Ensure that the updated version doesn’t introduce changes that might lead to resource provisioning that’s more intensive than needed. Keep an eye on the pricing impact of any new features or resources utilized as a result of the provider update.
  • Estimated Price Change: None directly from the version change. Indirect costs/benefits depend on how new features or optimizations are utilized.

By adhering to these practices, you ensure that your infrastructure code is not only up to date with the latest features and security patches but also maintained in a way that's consistent, well-documented, and aligned with best practices.

Copy link
Contributor Author

renovate bot commented Feb 19, 2025

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

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