Ejemplos de Terraform/OpenTofu para servicios de Exadata para Azure

Con HashiCorp Terraform, puede aprovisionar y gestionar recursos para Oracle Database@Azure mediante la herramienta Terraform que permite aprovisionar y gestionar infraestructura en Oracle Cloud Infrastructure (OCI).

Para obtener más información sobre implantaciones de referencia para módulos Terraform o OpenTofu, consulte los siguientes enlaces:
Nota

  • En este documento se describen ejemplos de aprovisionamiento y gestión de recursos de Oracle Database@Azure a través de dos (2) proveedores de Terraform, AzureRM y AzAPI. Compruebe el ejemplo que está utilizando para la API adecuada.
  • Las muestras utilizan valores de ejemplo con fines ilustrativos. Debe sustituirlos por su propia configuración.
  • Los ejemplos de AzAPI utilizan Propiedades dinámicas de AzAPI en lugar de JSONEncode para obtener un comportamiento de Terraform más nativo.

Servicios de Oracle Exadata

Infraestructura de Exadata

Cree una infraestructura de Oracle Exadata mediante AzureRM
resource "azurerm_oracle_exadata_infrastructure" "example" {
  name                = "TestName"
  location            = "eastus"
  resource_group_name = azurerm_resource_group.example.name
  compute_count       = "2"
  display_name        = "TestName"
  shape               = "Exadata.X9M"
  storage_count       = "3"
  zones               = ["3"]
  tags = {
    test = "testTag1"
  }
}
Cree una infraestructura de Oracle Exadata mediante AzAPI
resource "azapi_resource" "resource_group" {
  type     = "Microsoft.Resources/resourceGroups@2023-07-01"
  name     = "ExampleRG"
  location = "eastus"
}
 
// OperationId: CloudExadataInfrastructures_CreateOrUpdate, CloudExadataInfrastructures_Get, CloudExadataInfrastructures_Delete
// PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudExadataInfrastructures/{cloudexadatainfrastructurename}
resource "azapi_resource" "cloudExadataInfrastructure" {
  type      = "Oracle.Database/cloudExadataInfrastructures@2023-09-01"
  parent_id = azapi_resource.resource_group.id
  name      = "ExampleName"
  body = {
    "location" : "eastus",
    "zones" : [
      "2"
    ],
    "tags" : {
      "createdby" : "ExampleName"
    },
    "properties" : {
      "computeCount" : 2,
      "displayName" : "ExampleName",
      "maintenanceWindow" : {
        "leadTimeInWeeks" : 0,
        "preference" : "NoPreference",
        "patchingMode" : "Rolling"
      },
      "shape" : "Exadata.X9M",
      "storageCount" : 3
    }
  }
  schema_validation_enabled = false
}
Recuperación de infraestructuras de Oracle Exadata mediante AzureRM
data "azurerm_oracle_exadata_infrastructure" "example" {
  name                = azurerm_oracle_exadata_infrastructure.example.name
  resource_group_name = azurerm_oracle_exadata_infrastructure.example.resource_group_name
}
Enumerar infraestructuras de Oracle Exadata por suscripción mediante AzAPI
data "azapi_resource" "subscription" {
  type                   = "Microsoft.Resources/subscriptions@2020-06-01"
  response_export_values = ["*"]
}
 
// OperationId: CloudExadataInfrastructures_ListBySubscription
// GET /subscriptions/{subscriptionId}/providers/Oracle.Database/cloudExadataInfrastructures
data "azapi_resource_list" "listCloudExadataInfrastructuresBySubscription" {
  type       = "Oracle.Database/cloudExadataInfrastructures@2023-09-01"
  parent_id  = data.azapi_resource.subscription.id
}
Enumerar infraestructuras de Oracle Exadata por grupo de recursos mediante AzAPI
data "azurerm_resource_group" "example" {
  name = "existing"
}
 
// OperationId: CloudExadataInfrastructures_ListByResourceGroup
// GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudExadataInfrastructures
data "azapi_resource_list" "listCloudExadataInfrastructuresByResourceGroup" {
  type       = "Oracle.Database/cloudExadataInfrastructures@2023-09-01"
  parent_id  = azurerm_resource_group.example.id
}
Aplicación de parches a una infraestructura de Oracle Exadata mediante AzAPI
Nota

Solo las etiquetas de Microsoft Azure del recurso se pueden actualizar mediante el proveedor AzAPI.
data "azapi_resource" "subscription" {
  type                   = "Microsoft.Resources/subscriptions@2020-06-01"
  response_export_values = ["*"]
}
 
// OperationId: CloudExadataInfrastructures_Update
// PATCH /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudExadataInfrastructures/{cloudexadatainfrastructurename}
resource "azapi_resource_action" "patch_cloudExadataInfrastructure" {
  type        = "Oracle.Database/cloudExadataInfrastructures@2023-09-01"
  resource_id = azapi_resource.cloudExadataInfrastructure.id
  action      = ""
  method      = "PATCH"
  body = {
    "tags" : {
      "updatedby" : "ExampleName"
    }
  }
}
Mostrar servidores de base de datos en una infraestructura de Oracle Exadata mediante AzAPI
// OperationId: DbServers_Get
// GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudExadataInfrastructures/{cloudexadatainfrastructurename}/dbServers/{dbserverocid}
data "azapi_resource" "dbServer" {
  type      = "Oracle.Database/cloudExadataInfrastructures/dbServers@2023-09-01"
  parent_id = azapi_resource.cloudExadataInfrastructure.id
  name      = var.resource_name
}

Cluster de VM de Exadata

Crear un cluster de VM de Oracle Exadata mediante AzureRM
resource "azurerm_oracle_cloud_vm_cluster" "example" {
  location                        = "eastus"
  name                            = "TestName"
  resource_group_name             = azurerm_resource_group.example.name
  cloud_exadata_infrastructure_id = azurerm_oracle_exadata_infrastructure.example.id
  cpu_core_count                  = 4
  data_storage_size_in_tbs        = 2
  db_node_storage_size_in_gbs     = 120
  db_servers                      = [for obj in data.azurerm_oracle_db_servers.example.db_servers : obj.ocid]
  display_name                    = "TestName"
  gi_version                      = "23.0.0.0"
  license_model                   = "BringYourOwnLicense"
  memory_size_in_gbs              = 60
  hostname                        = "hostname"
  ssh_public_keys                 = ["ssh-rsa abcdefghijkl"]
  subnet_id                       = azurerm_subnet.virtual_network_subnet.id
  virtual_network_id              = azurerm_virtual_network.virtual_network.id
}
Crear un cluster de VM de Oracle Exadata mediante AzAPI
resource "azapi_resource" "resource_group" {
  type     = "Microsoft.Resources/resourceGroups@2023-07-01"
  name     = "ExampleRG"  location = "eastus"
}
 
// OperationId: CloudExadataInfrastructures_CreateOrUpdate, CloudExadataInfrastructures_Get, CloudExadataInfrastructures_Delete
// PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudExadataInfrastructures/{cloudexadatainfrastructurename}
resource "azapi_resource" "cloudExadataInfrastructure" {
  type      = "Oracle.Database/cloudExadataInfrastructures@2023-09-01"
  parent_id = azapi_resource.resource_group.id
  name      = "ExampleName"
  body = {
    "location" : "eastus",
    "zones" : [
      "2"
    ],
    "tags" : {
      "createdby" : "ExampleName"
    },
    "properties" : {
      "computeCount" : 2,
      "displayName" : "ExampleName",
      "maintenanceWindow" : {
        "leadTimeInWeeks" : 0,
        "preference" : "NoPreference",
        "patchingMode" : "Rolling"
      },
      "shape" : "Exadata.X9M",
      "storageCount" : 3
    }
  }
  schema_validation_enabled = false
}
 
//-------------VMCluster resources ------------
// OperationId: CloudVmClusters_CreateOrUpdate, CloudVmClusters_Get, CloudVmClusters_Delete
// PUT GET DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudVmClusters/{cloudvmclustername}
resource "azapi_resource" "cloudVmCluster" {
  type                      = "Oracle.Database/cloudVmClusters@2023-09-01"
  parent_id                 = azapi_resource.resourceGroup.id
  name                      = local.exa_cluster_name
  schema_validation_enabled = false
  depends_on                = [azapi_resource.cloudExadataInfrastructure]
  body                      = {
    "properties": {
        "dataStorageSizeInTbs": 1000,
        "dbNodeStorageSizeInGbs": 1000,
        "memorySizeInGbs": 1000,
        "timeZone": "UTC",
        "hostname": "hostname1",
        "domain": "domain1",
        "cpuCoreCount": 2,
        "ocpuCount": 3,
        "clusterName": "cluster1",
        "dataStoragePercentage": 100,
        "isLocalBackupEnabled": false,
        "cloudExadataInfrastructureId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg000/providers/Oracle.Database/cloudExadataInfrastructures/infra1",
        "isSparseDiskgroupEnabled": false,
        "sshPublicKeys": [
          "ssh-key 1"
        ],
        "nsgCidrs": [
          {
            "source": "10.0.0.0/16",
            "destinationPortRange": {
              "min": 1520,
              "max": 1522
            }
          },
          {
            "source": "10.10.0.0/24"
          }
        ],
        "licenseModel": "LicenseIncluded",
        "scanListenerPortTcp": 1050,
        "scanListenerPortTcpSsl": 1025,
        "vnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg000/providers/Microsoft.Network/virtualNetworks/vnet1",
        "giVersion": "19.0.0.0",
        "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg000/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1",
        "backupSubnetCidr": "172.17.5.0/24",
        "dataCollectionOptions": {
          "isDiagnosticsEventsEnabled": false,
          "isHealthMonitoringEnabled": false,
          "isIncidentLogsEnabled": false
        },
        "displayName": "cluster 1",
        "dbServers": [
          "ocid1..aaaa"
        ]
      },
      "location": "eastus"
  }
  response_export_values = ["properties.ocid"]
}
Recuperar clusters de VM de Oracle Exadata mediante AzureRM
data "azurerm_oracle_cloud_vm_cluster" "example" {
  name                = azurerm_oracle_cloud_vm_cluster.example.name
  resource_group_name = azurerm_oracle_cloud_vm_cluster.example.resource_group_name
}
Mostrar clusters de VM de Oracle Exadata por suscripción mediante AzAPI
data "azapi_resource" "subscription" {
  type                   = "Microsoft.Resources/subscriptions@2020-06-01"
  response_export_values = ["*"]
}
 
// OperationId: CloudExadataInfrastructures_ListBySubscription
// GET /subscriptions/{subscriptionId}/providers/Oracle.Database/cloudExadataInfrastructures
data "azapi_resource_list" "listCloudExadataInfrastructuresBySubscription" {
  type       = "Oracle.Database/cloudVmClusters@2023-09-01"
  parent_id  = data.azapi_resource.subscription.id
}
Mostrar clusters de VM de Oracle Exadata por grupo de recursos mediante AzAPI
data "azurerm_resource_group" "example" {
  name = "existing"
}
 
// OperationId: CloudExadataInfrastructures_ListByResourceGroup
// GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudExadataInfrastructures
data "azapi_resource_list" "listCloudExadataInfrastructuresByResourceGroup" {
  type       = "Oracle.Database/cloudVmClusters@2023-09-01"
  parent_id  = azurerm_resource_group.example.id
}
Mostrar nodos de base de datos en un cluster de VM de Oracle Exadata mediante AzAPI
// OperationId: DbNodes_Get
// GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudVmClusters/{cloudvmclustername}/dbNodes/{dbnodeocid}
data "azapi_resource" "dbNode" {
  type      = "Oracle.Database/cloudVmClusters/dbNodes@2023-09-01"
  parent_id = azapi_resource.cloudVmCluster.id. // VM Cluster Id
  name      = var.resource_name
}
Adición de una dirección de red virtual a un cluster de VM de Exadata mediante AzAPI
// OperationId: VirtualNetworkAddresses_CreateOrUpdate, VirtualNetworkAddresses_Get, VirtualNetworkAddresses_Delete
// PUT GET DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudVmClusters/{cloudvmclustername}/virtualNetworkAddresses/{virtualnetworkaddressname}
resource "azapi_resource" "virtualNetworkAddress" {
  type                      = "Oracle.Database/cloudVmClusters/virtualNetworkAddresses@2023-09-01"
  parent_id                 = azapi_resource.cloudVmCluster.id
  name                      = var.resource_name
  body = {
    "properties": {
        "ipAddress": "192.168.0.1",
        "vmOcid": "ocid1..aaaa"
      }
  }
  schema_validation_enabled = false
}
Mostrar direcciones de red virtual en un cluster de VM de Oracle Exadata mediante AzAPI
// OperationId: VirtualNetworkAddresses_ListByCloudVmCluster
// GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudVmClusters/{cloudvmclustername}/virtualNetworkAddresses
data "azapi_resource_list" "listVirtualNetworkAddressesByCloudVmCluster" {
  type       = "Oracle.Database/cloudVmClusters/virtualNetworkAddresses@2023-09-01"
  parent_id  = azapi_resource.cloudVmCluster.id
}

Unidad de base de datos de Exadata

Recuperar un servidor de base de datos de Oracle Exadata mediante AzureRM
data "azurerm_oracle_db_servers" "example" {
  resource_group_name               = azurerm_resource_group.example.name
  cloud_exadata_infrastructure_name = azurerm_oracle_exadata_infrastructure.example.name
}
Recuperar un nodo de base de datos de Oracle Exadata mediante AzureRM
data "azurerm_oracle_db_nodes" "example" {
  resource_group_name   = azurerm_resource_group.example.name
  cloud_vm_cluster_name = azurerm_oracle_cloud_vm_cluster.example.name
}
Recuperar una unidad de base de datos de Oracle Exadata mediante AzureRM
data "azurerm_oracle_db_system_shapes" "example" {
  location = "eastus"
}
Mostrar una unidad de base de datos de Oracle Exadata mediante AzAPI
data "azapi_resource_id" "location" {
  type      = "Oracle.Database/locations@2023-12-12"
  parent_id = data.azapi_resource.subscription.id
  name      = "eastus"
}
 
// OperationId: DbSystemShapes_Get
// GET /subscriptions/{subscriptionId}/providers/Oracle.Database/locations/{location}/dbSystemShapes/{dbsystemshapename}
data "azapi_resource" "dbSystemShape" {
  type      = "Oracle.Database/locations/dbSystemShapes@2023-09-01"
  parent_id = data.azapi_resource_id.location.id
  name      = var.resource_name
}
Mostrar bases de datos de Oracle Exadata por ubicación mediante AzAPI
// OperationId: DbSystemShapes_ListByLocation
// GET /subscriptions/{subscriptionId}/providers/Oracle.Database/locations/{location}/dbSystemShapes
data "azapi_resource_list" "listDbSystemShapesByLocation" {
  type       = "Oracle.Database/locations/dbSystemShapes@2023-09-01"
  parent_id  = data.azapi_resource_id.location.id
}

Servicios de Exadata combinados

Creación de un directorio raíz de Oracle Database en un cluster de VM de Exadata en una infraestructura de Exadata con una subred delegada en Microsoft Azure mediante AzureRM
Nota

El siguiente script crea una infraestructura de Oracle Exadata y un cluster de VM de Oracle Exadata mediante el proveedor de Terraform AzAPI seguido de la creación de un despliegue de base de datos de Exadata mediante el proveedor de Terraform de OCI (https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/database_db_home).
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
    }
    oci = {
      source = "oracle/oci"
    }
  }
}
data "azurerm_client_config" "current" {}
resource "azurerm_resource_group" "example" {
  name     = "example-rg"
  location = "eastus"
}
resource "azurerm_virtual_network" "virtual_network" {
  name                = "Example_vnet"
  address_space       = ["10.0.0.0/16"]
  location            = "eastus"
  resource_group_name = azurerm_resource_group.example.name
}
resource "azurerm_subnet" "virtual_network_subnet" {
  name                 = "Example_subnet"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.virtual_network.name
  address_prefixes     = ["10.0.1.0/24"]
  delegation {
    name = "delegation"
    service_delegation {
      actions = [
        "Microsoft.Network/networkinterfaces/*",
        "Microsoft.Network/virtualNetworks/subnets/join/action",
      ]
      name = "Oracle.Database/networkAttachments"
    }
  }
}
resource "azurerm_oracle_exadata_infrastructure" "example" {
  name                = "ExampleInfra"
  location            = "eastus"
  resource_group_name = azurerm_resource_group.example.name
  compute_count       = "2"
  display_name        = "ExampleInfra"
  shape               = "Exadata.X9M"
  storage_count       = "3"
  zones               = ["3"]
}
data "azurerm_oracle_db_servers" "example" {
  resource_group_name               = azurerm_resource_group.example.name
  cloud_exadata_infrastructure_name = azurerm_oracle_exadata_infrastructure.example.name
}
resource "azurerm_oracle_cloud_vm_cluster" "example" {
  location                        = "eastus"
  name                            = "ExampleVmCluster"
  resource_group_name             = azurerm_resource_group.example.name
  cloud_exadata_infrastructure_id = azurerm_oracle_exadata_infrastructure.example.id
  cpu_core_count                  = 4
  data_storage_size_in_tbs        = 2
  db_node_storage_size_in_gbs     = 120
  db_servers                      = [for obj in data.azurerm_oracle_db_servers.example.db_servers : obj.ocid]
  display_name                    = "ExampleVmCluster"
  gi_version                      = "23.0.0.0"
  license_model                   = "BringYourOwnLicense"
  memory_size_in_gbs              = 60
  hostname                        = "hostname"
  ssh_public_keys                 = ["ssh-rsa abcdefghijk"]
  subnet_id                       = azurerm_subnet.virtual_network_subnet.id
  virtual_network_id              = azurerm_virtual_network.virtual_network.id
}
resource "oci_database_db_home" "exa_db_home" {
  source        = "VM_CLUSTER_NEW"
  vm_cluster_id = azurerm_oracle_cloud_vm_cluster.example.ocid
  db_version    = "19.20.0.0"
  display_name  = "TFDBHOME"
 
  database {
    db_name        = "TFCDB"
    pdb_name       = "TFPDB"
    admin_password = "TestPass#2024#"
    db_workload    = "OLTP"
  }
}
Creación de un directorio raíz de Oracle Database en un cluster de VM de Exadata en una infraestructura de Exadata con una subred delegada en Microsoft Azure mediante AzAPI
Nota

El siguiente script crea una infraestructura de Oracle Exadata y un cluster de VM de Oracle Exadata mediante el proveedor de Terraform AzAPI seguido de la creación de un despliegue de base de datos de Exadata mediante el proveedor de Terraform de OCI (https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/database_db_home).
terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
    oci = {
      source = "oracle/oci"
    }
  }
}
 
provider "azapi" {
  skip_provider_registration = false
}
 
provider "oci" {
  user_ocid        = <user_ocid>
  fingerprint      = <user_fingerprint>
  tenancy_ocid     = <oci_tenancy_ocid>
  region           = "us-ashburn-1"
  private_key_path = <Path to API Key>
}
 
locals {
  resource_group_name = "TestResourceGroup"
  user                = "Username"
  location            = "eastus"
}
 
resource "azapi_resource" "resource_group" {
  type     = "Microsoft.Resources/resourceGroups@2023-07-01"
  name     = local.resource_group_name
  location = local.location
}
 
resource "azapi_resource" "virtual_network" {
  type      = "Microsoft.Network/virtualNetworks@2023-04-01"
  name      = "${local.resource_group_name}_vnet"
  location  = local.location
  parent_id = azapi_resource.resource_group.id
  body = {
    properties = {
      addressSpace = {
        addressPrefixes = [
          "10.0.0.0/16"
        ]
      }
      subnets = [
        {
          name = "delegated"
          properties = {
            addressPrefix = "10.0.1.0/24"
            delegations = [
              {
                name = "Oracle.Database.networkAttachments"
                properties = {
                  serviceName = "Oracle.Database/networkAttachments"
                }
              }
            ]
          }
        }
      ]
    }
  }
}
 
data "azapi_resource_list" "listVirtualNetwork" {
  type                   = "Microsoft.Network/virtualNetworks/subnets@2023-09-01"
  parent_id              = azapi_resource.virtual_network.id
  depends_on             = [azapi_resource.virtual_network]
  response_export_values = ["*"]
}
 
resource "tls_private_key" "generated_ssh_key" {
  algorithm = "RSA"
  rsa_bits  = 4096
}
 
resource "azapi_resource" "ssh_public_key" {
  type      = "Microsoft.Compute/sshPublicKeys@2023-09-01"
  name      = "${local.resource_group_name}_key"
  location  = local.location
  parent_id = azapi_resource.resource_group.id
  body = {
    properties = {
      publicKey = "${tls_private_key.generated_ssh_key.public_key_openssh}"
    }
  }
}
 
// OperationId: CloudExadataInfrastructures_CreateOrUpdate, CloudExadataInfrastructures_Get, CloudExadataInfrastructures_Delete
// PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudExadataInfrastructures/{cloudexadatainfrastructurename}
resource "azapi_resource" "cloudExadataInfrastructure" {
  type      = "Oracle.Database/cloudExadataInfrastructures@2023-09-01"
  parent_id = azapi_resource.resource_group.id
  name      = "OFake_terraform_deploy_infra_${local.resource_group_name}"
  timeouts {
    create = "1h30m"
    delete = "20m"
  }
  body = {
    "location" : "${local.location}",
    "zones" : [
      "2"
    ],
    "tags" : {
      "createdby" : "${local.user}"
    },
    "properties" : {
      "computeCount" : 2,
      "displayName" : "OFake_terraform_deploy_infra_${local.resource_group_name}",
      "maintenanceWindow" : {
        "leadTimeInWeeks" : 0,
        "preference" : "NoPreference",
        "patchingMode" : "Rolling"
      },
      "shape" : "Exadata.X9M",
      "storageCount" : 3
    }
 
  }
  schema_validation_enabled = false
}
 
// OperationId: DbServers_ListByCloudExadataInfrastructure
// GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudExadataInfrastructures/{cloudexadatainfrastructurename}/dbServers
data "azapi_resource_list" "listDbServersByCloudExadataInfrastructure" {
  type                   = "Oracle.Database/cloudExadataInfrastructures/dbServers@2023-09-01"
  parent_id              = azapi_resource.cloudExadataInfrastructure.id
  depends_on             = [azapi_resource.cloudExadataInfrastructure]
  response_export_values = ["*"]
}
 
// OperationId: CloudVmClusters_CreateOrUpdate, CloudVmClusters_Get, CloudVmClusters_Delete
// PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Oracle.Database/cloudVmClusters/{cloudvmclustername}
resource "azapi_resource" "cloudVmCluster" {
  type                      = "Oracle.Database/cloudVmClusters@2023-09-01"
  parent_id                 = azapi_resource.resource_group.id
  name                      = "OFake_terraform_deploy_cluster_${local.resource_group_name}"
  schema_validation_enabled = false
  depends_on                = [azapi_resource.cloudExadataInfrastructure]
  timeouts {
    create = "1h30m"
    delete = "20m"
  }
  body = {
    "location" : "${local.location}",
    "tags" : {
      "createdby" : "${local.user}"
    },
    "properties" : {
      "subnetId" : "${data.azapi_resource_list.listVirtualNetwork.output.value[0].id}"
      "cloudExadataInfrastructureId" : "${azapi_resource.cloudExadataInfrastructure.id}"
      "cpuCoreCount" : 4
      "dataCollectionOptions" : {
        "isDiagnosticsEventsEnabled" : true,
        "isHealthMonitoringEnabled" : true,
        "isIncidentLogsEnabled" : true
      },
      "dataStoragePercentage" : 80,
      "dataStorageSizeInTbs" : 2,
      "dbNodeStorageSizeInGbs" : 120,
      "dbServers" : [
        "${data.azapi_resource_list.listDbServersByCloudExadataInfrastructure.output.value[0].properties.ocid}",
        "${data.azapi_resource_list.listDbServersByCloudExadataInfrastructure.output.value[1].properties.ocid}"
      ]
      "displayName" : "OFake_terraform_deploy_cluster_${local.resource_group_name}",
      "giVersion" : "19.0.0.0",
      "hostname" : "${local.user}",
      "isLocalBackupEnabled" : false,
      "isSparseDiskgroupEnabled" : false,
      "licenseModel" : "LicenseIncluded",
      "memorySizeInGbs" : 60,
      "sshPublicKeys" : ["${tls_private_key.generated_ssh_key.public_key_openssh}"],
      "timeZone" : "UTC",
      "vnetId" : "${azapi_resource.virtual_network.id}",
      "provisioningState" : "Succeeded"
    }
  }
  response_export_values = ["properties.ocid"]
}
 
resource "oci_database_db_home" "exa_db_home" {
  source        = "VM_CLUSTER_NEW"
  vm_cluster_id = azapi_resource.cloudVmCluster.output.properties.ocid
  db_version    = "19.20.0.0"
  display_name  = "TFDBHOME"
 
  database {
    db_name        = "TFCDB"
    pdb_name       = "TFPDB"
    admin_password = "TestPass#2024#"
    db_workload    = "OLTP"
  }
  depends_on = [azapi_resource.cloudVmCluster]
}