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,
AzureRMandAzAPI. Check the example you are using for the proper API.- For detailed
AzureRMprovider and data source documentation, see https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs - For detailed
AzAPIprovider 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
AzAPIsamples use AzAPI Dynamic Properties instead ofJSONEncodefor more native Terraform behavior.
Oracle Autonomous Database Services
Create an Oracle Autonomous Database using
AzureRMresource "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
AzureRMdata "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
AzureRMdata "azurerm_oracle_adbs_character_sets" "example" {
location = "eastus"
}Retrieve an Oracle Autonomous Database national character set using
AzureRMdata "azurerm_oracle_adbs_national_character_sets" "example" {
location = "eastus"
}Create delegated subnet for Oracle Database@Azure using
AzAPIresource "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
AzAPIterraform {
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"]
}