This pattern module deploys an Oracle Exadata appliance on Azure, with a virtual network and other supporting resources necessary.
It deploys at a minimum the following resources:
Limitations: This module does not currently handle updates to the Oracle resources, since the underlying resource providers(REST API) do not support Update operations. Hence idempotency is not currently implemented.
[!IMPORTANT] As the overall AVM framework is not GA (generally available) yet - the CI framework and test automation is not fully functional and implemented across all supported languages yet - breaking changes are expected, and additional customer feedback is yet to be gathered and incorporated. Hence, modules MUST NOT be published at version
1.0.0
or higher at this time.All module MUST be published as a pre-release version (e.g.,
0.1.0
,0.1.1
,0.2.0
, etc.) until the AVM framework becomes GA.However, it is important to note that this DOES NOT mean that the modules cannot be consumed and utilized. They CAN be leveraged in all types of environments (dev, test, prod etc.). Consumers can treat them just like any other IaC module and raise issues or feature requests against them as they learn from the usage of the module. Consumers should also read the release notes for each version, if considering updating to a more recent version of a module to see if there are any considerations or breaking changes etc.
The following requirements are needed by this module:
The following resources are used by this module:
The following input variables are required:
Description: Cloud Exadata Infrastructure resources
name
- The name of the Cloud Exadata Infrastructure.location
- The location of the Cloud Exadata Infrastructure.zone
- (Optional) The availability zone of the Cloud Exadata Infrastructure.compute_count
- The number of compute nodes in the Cloud Exadata Infrastructure.display_name
- The display name of the Cloud Exadata Infrastructure.maintenance_window_loadtime_in_weeks
- The maintenance window load time in weeks.maintenance_window_preference
- The maintenance window preference.maintenance_window_patching_mode
- The maintenance window patching mode.shape
- The shape of the Cloud Exadata Infrastructure.storage_count
- The number of storage servers in the Cloud Exadata Infrastructure.tags
- (Optional) A mapping of tags to assign to the Cloud Exadata Infrastructure.Type:
map(object({
name = string
location = string
zone = string
compute_count = number
display_name = string
maintenance_window_loadtime_in_weeks = optional(string, 0)
maintenance_window_preference = optional(string, "NoPreference")
maintenance_window_patching_mode = optional(string, "Rolling")
shape = optional(string, "Exadata.X9M")
storage_count = number
tags = optional(map(string))
}))
Description: Cloud Exadata VM Cluster resources
cluster_name
- The name of the Cloud Exadata VM Cluster.display_name
- The display name of the Cloud Exadata VM Cluster.data_storage_size_in_tbs
- The data storage size in TBs.dbnode_storage_size_in_gbs
- The DB node storage size in GBs.time_zone
- The time zone of the Cloud Exadata VM Cluster.hostname
- The hostname of the Cloud Exadata VM Cluster.domain
- The domain of the Cloud Exadata VM Cluster.cpu_core_count
- The CPU core count of the Cloud Exadata VM Cluster.ocpu_count
- The OCPU count of the Cloud Exadata VM Cluster.data_storage_percentage
- The data storage percentage of the Cloud Exadata VM Cluster.is_local_backup_enabled
- The local backup enabled status of the Cloud Exadata VM Cluster.cloud_exadata_infra_name
- This is a reference to the Cloud Infrastructure object specified in parametersis_sparse_diskgroup_enabled
- The sparse diskgroup enabled status of the Cloud Exadata VM Cluster.ssh_public_keys
- The SSH public keys of the Cloud Exadata VM Cluster.nsg_cidrs
- (Optional) A set of NSG CIDRs of the Cloud Exadata VM Cluster.license_model
- The license model of the Cloud Exadata VM Cluster.vnet_name
- This is a reference to the VNET object specified in the Virtual networks parameterclient_subnet_name
- This is a reference to the Subnet object specified in the Subnet attribute in Vnet parametersgi_version
- The GI version of the Cloud Exadata VM Cluster.backup_subnet_cidr
- The backup subnet CIDR of the Cloud Exadata VM Cluster.is_diagnostic_events_enabled
- (Optional) The diagnostic events enabled status of the Cloud Exadata VM Cluster.is_health_monitoring_enabled
- (Optional) The health monitoring enabled status of the Cloud Exadata VM Cluster.is_incident_logs_enabled
- (Optional) The incident logs enabled status of the Cloud Exadata VM Cluster.Type:
map(object({
cluster_name = string
display_name = string
cloud_exadata_infra_name = string
location = string
data_storage_size_in_tbs = number
dbnode_storage_size_in_gbs = number
hostname = string
cpu_core_count = number
data_storage_percentage = number
memory_size_in_gbs = number
ssh_public_keys = list(string)
nsg_cidrs = optional(set(object({
source = string
destination_port_range = optional(object({
min = string
max = string
}), null)
})))
license_model = optional(string, "LicenseIncluded")
vnet_name = string
client_subnet_name = string
backup_subnet_cidr = string
gi_version = optional(string, "19.0.0.0")
time_zone = string
is_local_backup_enabled = optional(bool, true)
is_sparse_diskgroup_enabled = optional(bool, true)
is_diagnostic_events_enabled = optional(bool, false)
is_health_monitoring_enabled = optional(bool, false)
is_incident_logs_enabled = optional(bool, false)
tags = optional(map(string))
}))
Description: Azure region where the resource should be deployed.
Type: string
Description: List of virtual network peerings to be setup
Type:
map(object({
vnet_source_resource_group = string
vnet_destination_resource_group = string
vnet_source_name = string
vnet_destination_name = string
}
))
Description: The resource group where the resources will be deployed.
Type: string
The following input variables are optional (have default values):
Description: This variable controls whether or not telemetry is enabled for the module.
For more information see https://aka.ms/avm/telemetryinfo.
If it is set to false, then no telemetry will be collected.
Type: bool
Default: true
Description: (Optional) Tags of the resource.
Type: map(string)
Default: null
Description: Virtual Network(s) for hosting Exadata appliances
Type:
map(object({
address_space = list(string)
name = string
ddos_protection_plan = optional(object({
enable = bool
id = string
}), null)
encryption = optional(object({
enforcement = string
}), null)
flow_timeout_in_minutes = optional(number, null)
resource_group_name = optional(string, null)
subnet = optional(set(object({
delegate_to_oracle = bool
address_prefixes = list(string)
name = string
security_group = optional(string, null)
})), null)
diagnostic_settings = optional(map(object({
name = optional(string, null)
log_categories = optional(set(string), [])
log_groups = optional(set(string), ["allLogs"])
metric_categories = optional(set(string), ["AllMetrics"])
log_analytics_destination_type = optional(string, "Dedicated")
workspace_resource_id = optional(string, null)
storage_account_resource_id = optional(string, null)
event_hub_authorization_rule_resource_id = optional(string, null)
event_hub_name = optional(string, null)
marketplace_partner_resource_id = optional(string, null)
})), null)
role_assignments = optional(map(object({
role_definition_id_or_name = string
principal_id = string
description = optional(string, null)
skip_service_principal_aad_check = optional(bool, false)
condition = optional(string, null)
condition_version = optional(string, null)
delegated_managed_identity_resource_id = optional(string, null)
principal_type = optional(string, null)
})), null)
lock = optional(object({
kind = string
name = optional(string, null)
}), null)
}))
Default:
{
"primaryvnet": {
"address_space": [
"10.0.0.0/16"
],
"name": "vnet-odaa",
"subnet": [
{
"address_prefixes": [
"10.0.0.0/24"
],
"delegate_to_oracle": true,
"name": "client"
},
{
"address_prefixes": [
"10.0.1.0/24"
],
"delegate_to_oracle": false,
"name": "backup"
}
]
}
}
The following outputs are exported:
Description: Resource IDs of the ODAA Infrastructure resources created.
Description: Resource IDs of the ODAA VM Cluster resources created.
Description: Resource IDs of the Virtual networks created
Description: Resource ID for tflint compliance
The following Modules are called:
Source: Azure/avm-res-oracledatabase-cloudexadatainfrastructure/azurerm
Version: 0.1.0
Source: Azure/avm-res-oracledatabase-cloudvmcluster/azurerm
Version: 0.1.0
Source: Azure/avm-res-network-virtualnetwork/azurerm
Version: 0.1.4
Source: ./modules/vnet_peerings
Version:
The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as described in the repository. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft’s privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices.