Autonomous Database Services for AzureのTerraform/OpenTofuの例

HashiCorp Terraformを使用すると、Oracle Cloud Infrastructure (OCI)でインフラストラクチャをプロビジョニングおよび管理できるTerraformツールを使用して、Oracle Database@Azureのリソースのプロビジョニングおよび管理を行うことができます。

TerraformまたはOpenTofuモジュールのリファレンス実装の詳細は、次のリンクを参照してください:
ノート

  • このドキュメントでは、2つのTerraformプロバイダ(AzureRMおよびAzAPI)を介したOracle Database@Azureリソースのプロビジョニングおよび管理の例について説明します。使用している例で適切なAPIを確認します。
  • サンプルでは、例の値を使用して説明しています。それらを独自の設定で置き換える必要があります。
  • AzAPIサンプルでは、よりネイティブなTerraform動作のために、JSONEncodeのかわりにAzAPI動的プロパティを使用します。

Oracle Autonomous Database Services

AzureRMを使用したOracle Autonomous Databaseの作成
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
    ]
  }
}
AzureRMを使用したOracle Autonomous Databaseの取得
data "azurerm_oracle_autonomous_database" "example" {
  name                = azurerm_oracle_autonomous_database.example.name
  resource_group_name = azurerm_oracle_autonomous_database.example.resource_group_name
}
AzureRMを使用したOracle Autonomous Database文字セットの取得
data "azurerm_oracle_adbs_character_sets" "example" {
  location = "eastus"
}
AzureRMを使用したOracle Autonomous Databaseの各国語文字セットの取得
data "azurerm_oracle_adbs_national_character_sets" "example" {
  location = "eastus"
}
AzAPIを使用したOracle Database@Azureの委任サブネットの作成
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"]
 
        }
      }]
    }
  }
}
AzAPIを使用したOracle Autonomous Databaseの作成
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"]
}