Terraform/OpenTofu Examples for Autonomous Database Services for Azure
Using HashiCorp Terraform, you can provision and manage resources for Oracle Database@Azure using the Terraform tool that enables you to provision and manage infrastructure in Oracle Cloud Infrastructure (OCI).
For more information on reference implementations for Terraform or OpenTofu modules, sees the following links:
Note
- This document describes examples of provisioning and management of Oracle Database@Azure resources through two (2) Terraform providers,
AzureRM
andAzAPI
. Check the example you are using for the proper API.- For detailed
AzureRM
provider and data source documentation, see https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs - For detailed
AzAPI
provider and data source documentation, see https://registry.terraform.io/providers/Azure/azapi/latest/docs
- For detailed
- The samples use example values for illustration purposes. You must replace them with your own settings.
- The
AzAPI
samples use AzAPI Dynamic Properties instead ofJSONEncode
for more native Terraform behavior.
Oracle Autonomous Database Services
Create an Oracle Autonomous Database using
AzureRM
resource "azurerm_oracle_autonomous_database" "example" {
name = "TestName"
display_name = "TestName"
resource_group_name = azurerm_resource_group.example.name
location = "eastus"
compute_model = "ECPU"
compute_count = "2"
license_model = "BringYourOwnLicense"
backup_retention_period_in_days = 12
auto_scaling_enabled = false
auto_scaling_for_storage_enabled = false
mtls_connection_required = false
data_storage_size_in_tbs = "1"
db_workload = "OLTP"
admin_password = "TestPass#2024#"
db_version = "19c"
character_set = "AL32UTF8"
ncharacter_set = "AL16UTF16"
subnet_id = azurerm_subnet.virtual_network_subnet.id
vnet_id = azurerm_virtual_network.virtual_network.id
lifecycle {
ignore_changes = [
admin_password
]
}
}
Retrieve an Oracle Autonomous Database using
AzureRM
data "azurerm_oracle_autonomous_database" "example" {
name = azurerm_oracle_autonomous_database.example.name
resource_group_name = azurerm_oracle_autonomous_database.example.resource_group_name
}
Retrieve an Oracle Autonomous Database character set using
AzureRM
data "azurerm_oracle_adbs_character_sets" "example" {
location = "eastus"
}
Retrieve an Oracle Autonomous Database national character set using
AzureRM
data "azurerm_oracle_adbs_national_character_sets" "example" {
location = "eastus"
}
Create delegated subnet for Oracle Database@Azure using
AzAPI
resource "azurerm_resource_group" "resource_group" {
location = "eastus"
name = "ExampleRG"
}
module "avm_odbas_network" {
source = "Azure/avm-res-network-virtualnetwork/azurerm"
version = "0.2.4"
address_space = ["10.1.0.0/16"]
location = "eastus"
name = "vnet"
resource_group_name = azurerm_resource_group.resource_group.name
subnets = {
delegated = {
name = delegated
address_prefixes = ["10.1.1.0/24"]
delegation = [{
name = "Oracle.Database/networkAttachments"
service_delegation = {
name = "Oracle.Database/networkAttachments"
actions = ["Microsoft.Network/networkinterfaces/*", "Microsoft.Network/virtualNetworks/subnets/join/action"]
}
}]
}
}
}
Create an Oracle Autonomous Database using
AzAPI
terraform {
required_providers {
azapi = {
source = "Azure/azapi"
}
azurerm = {
source = "hashicorp/azurerm"
}
}
}
data "azurerm_resource_group" "resource_group" {
name = "ExampleRG"
}
data "azurerm_virtual_network" "virtual_network" {
name = "ExampleRG_vnet"
resource_group_name = "ExampleRG"
}
data "azurerm_subnet" "subnet" {
name = "delegated"
virtual_network_name = "ExampleRG_vnet"
resource_group_name = "ExampleRG"
}
resource "azapi_resource" "autonomous_db" {
type = "Oracle.Database/autonomousDatabases@2023-09-01"
parent_id = data.azurerm_resource_group.resource_group.id
name = "demodb"
schema_validation_enabled = false
timeouts {
create = "3h"
update = "2h"
delete = "1h"
}
body = {
"location" : "eastus",
"properties" : {
"displayName" : "demodb",
"computeCount" : 2,
"dataStorageSizeInTbs" : 1,
"adminPassword" : "TestPass#2024#",
"dbVersion" : "19c",
"licenseModel" : "LicenseIncluded",
"dataBaseType" : "Regular",
"computeModel" : "ECPU",
"dbWorkload" : "DW",
"permissionLevel" : "Restricted",
"characterSet" : "AL32UTF8",
"ncharacterSet" : "AL16UTF16",
"isAutoScalingEnabled" : true,
"isAutoScalingForStorageEnabled" : false,
"vnetId" : data.azurerm_virtual_network.virtual_network.id
"subnetId" : data.azurerm_subnet.subnet.id
}
response_export_values = ["id", "properties.ocid", "properties"]
}