2.24.0 (October 29, 2026)
🎉 Features:
-
New resource:
ovh_cloud_private_endpoint, to expose a service in a private network of the project through a private IP address (#1550) -
New resource:
ovh_cloud_storage_swift_container(#1561) -
New resource:
ovh_dedicated_cloud_user, to manage the users of a Hosted Private Cloud (#1418) -
New resource:
ovh_dedicated_cloud_user_object_right, to grant a Hosted Private Cloud user a right on a VMware object (cluster, datastore, dvportgroup, folder, pool or vm) (#1418) -
New datasource:
ovh_cloud_private_endpoint(#1550) -
New datasource:
ovh_cloud_private_endpoints(#1550) -
New datasource:
ovh_cloud_private_endpoint_service_availabilities, to list the services reachable through a private endpoint in a region (#1550) -
New datasource:
ovh_cloud_storage_swift_container(#1561) -
New datasource:
ovh_cloud_storage_swift_containers(#1561) -
New datasource:
ovh_cloud_storage_swift_container_objects(#1561) -
New datasource:
ovh_dedicated_cloud_user(#1418) -
New datasource:
ovh_dedicated_cloud_user_object_right(#1418)
💪 Improvements:
provider: Addprofile(or theOVH_PROFILEenvironment variable), to use a[profile:<name>]section of the.ovh.conffile and keep several sets of credentials in one file (#1310)r/ovh_cloud_instance,d/ovh_cloud_instance,d/ovh_cloud_instances:power_stateacceptsPAUSEDandSUSPENDED(#1523)d/ovh_cloud_instance_snapshots: Add the computedcan_be_deletedattribute,falsewhen the snapshot is owned by another project or protected (#1524)r/ovh_cloud_project_containerregistry,d/ovh_cloud_project_containerregistry,d/ovh_cloud_project_containerregistries: Add the computedoidc_callback_uriattribute, the callback URI to register on the OIDC provider (#1557)r/ovh_cloud_ssh_key: Add import, with the ID<service_name>/<name>(#1506)r/ovh_cloud_storage_file_share_network: Addavailability_zone. Changing it replaces the share network (#1506)
⚠️ Deprecations:
r/ovh_cloud_project_failover_ip_attach,r/ovh_cloud_project_file_storage_share,r/ovh_cloud_project_file_storage_share_network,r/ovh_cloud_project_gateway,r/ovh_cloud_project_gateway_interface,r/ovh_cloud_project_instance,r/ovh_cloud_project_instance_snapshot,r/ovh_cloud_project_loadbalancer,r/ovh_cloud_project_network_private,r/ovh_cloud_project_network_private_subnet,r/ovh_cloud_project_network_private_subnet_v2,r/ovh_cloud_project_region_network,r/ovh_cloud_project_ssh_key,r/ovh_cloud_project_storage,r/ovh_cloud_project_volume,r/ovh_cloud_project_volume_backup: Deprecated in favor of theovh_cloud_*resources. The new Public Cloud resources migration guide maps each of them to its replacement (#1506)
🐜 Bug fixes:
- Resources deleted outside of Terraform are now removed from the state on refresh, so the next plan creates them again instead of failing, and destroying a resource already gone no longer fails. This applies to
r/ovh_cloud_gateway,r/ovh_cloud_loadbalancer,r/ovh_cloud_loadbalancer_l7policy,r/ovh_cloud_loadbalancer_listener,r/ovh_cloud_loadbalancer_pool,r/ovh_cloud_loadbalancer_pool_member,r/ovh_cloud_network_private_vrack,r/ovh_cloud_project_alerting,r/ovh_cloud_project_containerregistry_iam,r/ovh_cloud_project_failover_ip_attach,r/ovh_cloud_project_gateway_interface,r/ovh_cloud_project_instance,r/ovh_cloud_project_instance_snapshot,r/ovh_cloud_project_loadbalancer,r/ovh_cloud_project_rancher,r/ovh_cloud_project_region,r/ovh_cloud_project_region_network,r/ovh_cloud_project_ssh_key,r/ovh_cloud_project_user_s3_credential,r/ovh_cloud_project_volume,r/ovh_cloud_project_volume_backup,r/ovh_cloud_ssh_key,r/ovh_cloud_storage_file_share,r/ovh_cloud_storage_file_share_network,r/ovh_cloud_storage_file_share_snapshot,r/ovh_dbaas_logs_encryption_key,r/ovh_dbaas_logs_token,r/ovh_dedicated_server_update,r/ovh_domain_name,r/ovh_domain_zone_dnssec,r/ovh_domain_zone_dynhost_login,r/ovh_domain_zone_dynhost_record,r/ovh_domain_zone_import,r/ovh_email_domain_account,r/ovh_iam_permissions_group,r/ovh_iam_policy,r/ovh_iam_resource_group,r/ovh_iam_resource_tags,r/ovh_ip_firewall,r/ovh_ip_firewall_rule,r/ovh_ip_mitigation,r/ovh_iploadbalancing_ssl,r/ovh_iploadbalancing_udp_farm,r/ovh_iploadbalancing_udp_farm_server,r/ovh_iploadbalancing_udp_frontend,r/ovh_okms,r/ovh_okms_credential,r/ovh_okms_secret,r/ovh_okms_service_key,r/ovh_okms_service_key_jwk,r/ovh_ovhcloud_connect_pop_config,r/ovh_ovhcloud_connect_pop_datacenter_config,r/ovh_ovhcloud_connect_pop_datacenter_extra_config,r/ovh_storage_efs,r/ovh_storage_efs_share,r/ovh_storage_efs_share_acl,r/ovh_storage_efs_share_snapshot,r/ovh_vps,r/ovh_vrack_dedicated_cloud,r/ovh_vrack_dedicated_cloud_datacenter,r/ovh_vrack_ipv6,r/ovh_vrack_ipv6_routed_subrange,r/ovh_vrack_ovhcloudconnect,r/ovh_vrack_public_routing_priority,r/ovh_vrack_vrackservices,r/ovh_vrackservices(#1528, #1538, #1540, #1549) r/ovh_cloud_project_database: Changing theregionof the nodes now replaces the cluster. Before, the plan showed an update that left the nodes in their region. Nodes in different regions or networks are now refused at plan time (#1537)r/ovh_cloud_project_kube:kube_proxy_modeon astandardcluster, which does not use kube-proxy, no longer shows as drift or plans a replacement, and is removed from the state. Setting it on a newstandardcluster is now refused at plan time (#1527)r/ovh_cloud_project_kube: Removingload_balancers_subnet_idnow unsets it on the cluster (#1533)r/ovh_cloud_project_network_private_subnet_v2: An emptydns_nameserverslist now creates a subnet without DNS server, instead of one with the default resolver (#1536)r/ovh_cloud_storage_object_bucket:owner_user_idis now sent at creation, and changing it replaces the bucket (#1558)r/ovh_dedicated_server: Only the changed boot fields are sent, as the API refusesboot_idandboot_scriptin the same call (#1535)r/ovh_dedicated_server_reinstall_task: States saved beforestorage.eraseexisted are upgraded witherase = true, including blocks with partitioning or hardware RAID that a v2.23.0 refresh set tofalse. Before, such astorageblock failed validation, or planned a replacement that reinstalled the server (#1531)r/ovh_domain_zone_record: LongTXTrecords split by the API in 255-character strings no longer show as drift (#1534)r/ovh_vps:do_not_send_password, which the API does not return, is kept from the state (#1556)
📚 Documentation:
- New guide to migrate from the
ovh_cloud_project_*Public Cloud resources and data sources to theovh_cloud_*ones, with a note on each legacy resource and data source (#1506, #1561) r/ovh_cloud_project_kube: Use the v2 network resources in the examples, and document how to get the egress IPs of the nodes (#1548)r/ovh_domain_zone: Use thestubtemplate in the example, and describe each template (#1532)
⚙️ General:
- goreleaser: Replace the deprecated
archives.formatwitharchives.formats(#1525)
❤️ Thanks for your contributions ❤️