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を確認します。AzureRM
プロバイダおよびデータ・ソースの詳細は、https://registry.terraform.io/providers/hashicorp/azurerm/latest/docsを参照してくださいAzAPI
プロバイダおよびデータ・ソースの詳細は、https://registry.terraform.io/providers/Azure/azapi/latest/docsを参照してください
- サンプルでは、例の値を使用して説明しています。それらを独自の設定で置き換える必要があります。
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"]
}