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

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"]
}