Terraform by HashiCorp を使って、Oracle Database@Azure のリソースをプロビジョニングおよび管理できます。 Terraform では、Oracle Cloud Infrastructure (OCI) でインフラストラクチャをプロビジョニングおよび管理するためのツールとして AzAPI プロバイダーが提供されています。
Terraform または OpenTofu モジュールの参照実装について詳しくは、次のリソースを参照してください。
Note
この記事では、Terraform プロバイダー AzAPI を使用した Oracle Database@Azure リソースのプロビジョニングと管理がわかるコードの例を示します。 AzAPI プロバイダー リソースとデータ ソースの詳しいドキュメントについては、Terraform レジストリの AzAPI プロバイダーを参照してください。
サンプルでは、説明のために例示の値が使われています。 プレースホルダーの例示の値を、実際のシナリオの値に置き換えてください。
サンプルでは、Terraform のネイティブな動作に近くなるよう、JSONEncode ではなく 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"]
}
}]
}
}
}
Oracle Exadata Database@Azure のインスタンスを作成する
{
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"]
}