From 491189a916bbd5187dd35df15df0a37878813218 Mon Sep 17 00:00:00 2001 From: Akarsha I Date: Thu, 20 Aug 2026 16:19:51 +0530 Subject: [PATCH 1/5] Initial commit Initial commit --- .../00-versions.tf | 13 + .../01-provider.tf | 5 + .../02-availability-domains.tf | 15 + .../02-variables.tf | 341 ++ .../03-network.tf | 67 + .../04-security.tf | 274 ++ .../05-compute.tf | 306 ++ .../06-secondary-private-ips.tf | 78 + .../06-sql-storage.tf | 37 + .../07-outputs.tf | 68 + .../08-automation-artifacts.tf | 129 + automation-mssql-server-aoag-sample/README.md | 110 + .../aoag-fresh.tfplan | Bin 0 -> 31976 bytes .../docs/automation-scripts.md | 192 + .../oci-sql-server-aoag-architecture.drawio | 51 + .../docs/oci-sql-server-aoag-architecture.svg | 220 + .../docs/oci-sql-server-aoag-solution-hub.md | 361 ++ .../docs/post-provisioning-runbook.md | 169 + .../aoag/04-prepare-sample-database.ps1 | 195 + .../aoag/05-configure-availability-group.ps1 | 480 +++ .../scripts/aoag/06-safe-planned-failover.ps1 | 185 + .../aoag/07-reconcile-availability-group.ps1 | 251 ++ .../scripts/aoag/README.md | 49 + .../dc/01-configure-domain-controller.ps1 | 647 +++ .../scripts/sql/02-configure-sql-node.ps1 | 1229 ++++++ .../scripts/wsfc/03-configure-wsfc.ps1 | 740 ++++ .../sql-rebuild.tfplan | Bin 0 -> 106346 bytes .../templates/dc-user-data.ps1.tftpl | 111 + .../windows-node-user-data.ps1.tftpl | 245 ++ .../terraform.tfstate | 3541 +++++++++++++++++ .../terraform.tfstate.backup | 28 + .../terraform.tfvars | 30 + .../terraform.tfvars.example | 75 + 33 files changed, 10242 insertions(+) create mode 100644 automation-mssql-server-aoag-sample/00-versions.tf create mode 100644 automation-mssql-server-aoag-sample/01-provider.tf create mode 100644 automation-mssql-server-aoag-sample/02-availability-domains.tf create mode 100644 automation-mssql-server-aoag-sample/02-variables.tf create mode 100644 automation-mssql-server-aoag-sample/03-network.tf create mode 100644 automation-mssql-server-aoag-sample/04-security.tf create mode 100644 automation-mssql-server-aoag-sample/05-compute.tf create mode 100644 automation-mssql-server-aoag-sample/06-secondary-private-ips.tf create mode 100644 automation-mssql-server-aoag-sample/06-sql-storage.tf create mode 100644 automation-mssql-server-aoag-sample/07-outputs.tf create mode 100644 automation-mssql-server-aoag-sample/08-automation-artifacts.tf create mode 100644 automation-mssql-server-aoag-sample/README.md create mode 100644 automation-mssql-server-aoag-sample/aoag-fresh.tfplan create mode 100644 automation-mssql-server-aoag-sample/docs/automation-scripts.md create mode 100644 automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.drawio create mode 100644 automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.svg create mode 100644 automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md create mode 100644 automation-mssql-server-aoag-sample/docs/post-provisioning-runbook.md create mode 100644 automation-mssql-server-aoag-sample/scripts/aoag/04-prepare-sample-database.ps1 create mode 100644 automation-mssql-server-aoag-sample/scripts/aoag/05-configure-availability-group.ps1 create mode 100644 automation-mssql-server-aoag-sample/scripts/aoag/06-safe-planned-failover.ps1 create mode 100644 automation-mssql-server-aoag-sample/scripts/aoag/07-reconcile-availability-group.ps1 create mode 100644 automation-mssql-server-aoag-sample/scripts/aoag/README.md create mode 100644 automation-mssql-server-aoag-sample/scripts/dc/01-configure-domain-controller.ps1 create mode 100644 automation-mssql-server-aoag-sample/scripts/sql/02-configure-sql-node.ps1 create mode 100644 automation-mssql-server-aoag-sample/scripts/wsfc/03-configure-wsfc.ps1 create mode 100644 automation-mssql-server-aoag-sample/sql-rebuild.tfplan create mode 100644 automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl create mode 100644 automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl create mode 100644 automation-mssql-server-aoag-sample/terraform.tfstate create mode 100644 automation-mssql-server-aoag-sample/terraform.tfstate.backup create mode 100644 automation-mssql-server-aoag-sample/terraform.tfvars create mode 100644 automation-mssql-server-aoag-sample/terraform.tfvars.example diff --git a/automation-mssql-server-aoag-sample/00-versions.tf b/automation-mssql-server-aoag-sample/00-versions.tf new file mode 100644 index 0000000..2e32bb9 --- /dev/null +++ b/automation-mssql-server-aoag-sample/00-versions.tf @@ -0,0 +1,13 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ +terraform { + required_version = ">= 1.5.0" + + required_providers { + oci = { + source = "oracle/oci" + version = "~> 6.0" + } + } +} + diff --git a/automation-mssql-server-aoag-sample/01-provider.tf b/automation-mssql-server-aoag-sample/01-provider.tf new file mode 100644 index 0000000..91aec9f --- /dev/null +++ b/automation-mssql-server-aoag-sample/01-provider.tf @@ -0,0 +1,5 @@ +provider "oci" { + region = var.region + config_file_profile = var.oci_config_profile +} + diff --git a/automation-mssql-server-aoag-sample/02-availability-domains.tf b/automation-mssql-server-aoag-sample/02-availability-domains.tf new file mode 100644 index 0000000..ffde4d1 --- /dev/null +++ b/automation-mssql-server-aoag-sample/02-availability-domains.tf @@ -0,0 +1,15 @@ +data "oci_identity_availability_domains" "region" { + compartment_id = var.compartment_id +} + +locals { + # OCI regions can expose one or several ADs. Sorting makes AD-1/AD-2 + # selection deterministic because OCI does not guarantee API result order. + available_availability_domains = sort([ + for availability_domain in data.oci_identity_availability_domains.region.availability_domains : availability_domain.name + ]) + + selected_dc_availability_domain = var.dc_availability_domain != "" ? var.dc_availability_domain : local.available_availability_domains[0] + selected_sql1_availability_domain = var.sql1_availability_domain != "" ? var.sql1_availability_domain : local.available_availability_domains[0] + selected_sql2_availability_domain = var.sql2_availability_domain != "" ? var.sql2_availability_domain : try(local.available_availability_domains[1], local.available_availability_domains[0]) +} diff --git a/automation-mssql-server-aoag-sample/02-variables.tf b/automation-mssql-server-aoag-sample/02-variables.tf new file mode 100644 index 0000000..a928224 --- /dev/null +++ b/automation-mssql-server-aoag-sample/02-variables.tf @@ -0,0 +1,341 @@ +variable "oci_config_profile" { + description = "OCI CLI config profile to use from ~/.oci/config." + type = string + default = "DEFAULT" +} + +variable "region" { + description = "OCI region in which to deploy the lab." + type = string +} + +variable "compartment_id" { + description = "OICCompartment OCID." + type = string +} + +variable "dc_availability_domain" { + description = "Optional AD override for DC-VM. Leave empty to select the first AD in the region." + type = string + default = "" +} + +variable "windows_image_ocid" { + description = "Windows Server image OCID available in var.region." + type = string +} + +variable "sql1_availability_domain" { + description = "Optional AD override for SQL1. Leave empty to select the first AD in the region." + type = string + default = "" +} + +variable "sql2_availability_domain" { + description = "Optional AD override for SQL2. Leave empty to select the second AD when available, otherwise the first AD." + type = string + default = "" +} + +variable "domain_name" { + description = "Active Directory DNS domain name to create on DC-VM." + type = string + default = "mssqlaoag.demo" +} + +variable "domain_netbios_name" { + description = "Active Directory NetBIOS name." + type = string + default = "MSSQLAOAG" +} + +variable "domain_admin_user" { + description = "Domain admin account created by the DC automation script." + type = string + default = "domainadmin" +} + +variable "domain_admin_password" { + description = "Password used to create the domain admin account during DC first-boot automation. Stored in rendered instance metadata/state for this POC." + type = string + sensitive = true + default = "" +} + +variable "sql_service_account_user" { + description = "Dedicated domain account used for SQL Server and SQL Server Agent services." + type = string + default = "sqlsa" +} + +variable "sql_service_account_password" { + description = "Password for the SQL Server service account. If empty, domain_admin_password is reused for this POC." + type = string + sensitive = true + default = "" +} + +variable "local_admin_user" { + description = "Local Windows administrator user to configure for RDP on first boot." + type = string + default = "opc" +} + +variable "windows_admin_password" { + description = "Password for the local Windows Administrator and local_admin_user accounts. If empty, domain_admin_password is reused for this POC." + type = string + sensitive = true + default = "" +} + +variable "auto_configure_domain_controller" { + description = "When true, injects first-boot PowerShell user_data into DC-VM to install AD DS, promote the domain, and create the domain admin user." + type = bool + default = true +} + +variable "auto_configure_windows_nodes" { + description = "When true, injects first-boot PowerShell user_data into SQL nodes to set local Windows credentials, enable RDP, rename, point DNS to DC-VM, join the domain, and grant domainadmin RDP/local admin access." + type = bool + default = true +} + +variable "auto_install_sql_server" { + description = "When true, SQL node first-boot automation installs SQL Server after the node has joined the domain." + type = bool + default = true +} + +variable "install_ssms" { + description = "When true and auto_install_sql_server is true, install SQL Server Management Studio on SQL nodes." + type = bool + default = true +} + +variable "sql_server_download_url" { + description = "Official Microsoft SQL Server 2025 Standard Developer bootstrapper URL." + type = string + default = "https://go.microsoft.com/fwlink/?linkid=2344626" +} + +variable "ssms_download_url" { + description = "Official Microsoft SSMS 22 bootstrapper URL." + type = string + default = "https://aka.ms/ssms/22/release/vs_SSMS.exe" +} + +variable "automation_artifact_expiration" { + description = "RFC3339 expiration for the private Object Storage PARs used by Windows first-boot automation. Refresh this before a deployment after the expiry date." + type = string + default = "2030-01-01T00:00:00Z" +} + +variable "auto_configure_wsfc" { + description = "When true, SQL1 launches the WSFC automation after SQL1/SQL2 are domain joined and SQL Server is installed." + type = bool + default = true +} + +variable "wsfc_cluster_name" { + description = "Windows Server Failover Cluster name." + type = string + default = "SQLAGCLUSTER" +} + +variable "wsfc_cluster_ip_sql1" { + description = "Reserved WSFC cluster IP on the SQL1 subnet." + type = string + default = "10.0.20.20" +} + +variable "wsfc_cluster_ip_sql2" { + description = "Reserved WSFC cluster IP on the SQL2 subnet." + type = string + default = "10.0.30.20" +} + +variable "wsfc_witness_path" { + description = "Local folder on DC-VM published as the file share witness." + type = string + default = "C:\\ClusterWitness" +} + +variable "wsfc_witness_share_name" { + description = "SMB share name for the WSFC file share witness." + type = string + default = "ClusterWitness" +} + +variable "skip_cluster_validation" { + description = "When true, WSFC automation skips Test-Cluster before New-Cluster." + type = bool + default = true +} + +variable "aoag_database_name" { + description = "Database used for the initial Always On availability group." + type = string + default = "AdventureWorks2025" +} + +variable "aoag_availability_group_name" { + description = "Initial Always On availability group name." + type = string + default = "TestAOAG" +} + +variable "aoag_listener_name" { + description = "Native availability group listener DNS name." + type = string + default = "AOAG-LSN" +} + +variable "aoag_listener_port" { + description = "Native availability group listener TCP port." + type = number + default = 1433 +} + +variable "aoag_listener_ip_sql1" { + description = "Reserved availability group listener IP on the SQL1 subnet." + type = string + default = "10.0.20.30" +} + +variable "aoag_listener_ip_sql2" { + description = "Reserved availability group listener IP on the SQL2 subnet." + type = string + default = "10.0.30.30" +} + +variable "hadr_endpoint_name" { + description = "SQL Server Database Mirroring endpoint used by Always On." + type = string + default = "Hadr_endpoint" +} + +variable "hadr_endpoint_port" { + description = "TCP port for the Always On HADR endpoint." + type = number + default = 5022 +} + +variable "sample_database_download_url" { + description = "URL for the sample SQL Server database backup." + type = string + default = "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2025.bak" +} + +variable "vcn_name" { + description = "VCN display name." + type = string + default = "SQL_VCN" +} + +variable "vcn_dns_label" { + description = "VCN DNS label." + type = string + default = "sqlvcn" +} + +variable "vcn_cidr" { + description = "VCN IPv4 CIDR block." + type = string + default = "10.0.0.0/16" +} + +variable "dc_subnet_cidr" { + type = string + default = "10.0.10.0/24" +} + +variable "sql1_subnet_cidr" { + type = string + default = "10.0.20.0/24" +} + +variable "sql2_subnet_cidr" { + type = string + default = "10.0.30.0/24" +} + +variable "dc_private_ip" { + type = string + default = "10.0.10.10" +} + +variable "sql1_private_ip" { + type = string + default = "10.0.20.10" +} + +variable "sql2_private_ip" { + type = string + default = "10.0.30.10" +} + +variable "shape" { + type = string + default = "VM.Standard.E5.Flex" +} + +variable "ocpus" { + description = "OCPUs for DC-VM." + type = number + default = 6 +} + +variable "sql_ocpus" { + description = "OCPUs for SQL1 and SQL2." + type = number + default = 8 +} + +variable "memory_in_gbs" { + description = "Memory for DC-VM." + type = number + default = 16 +} + +variable "sql_memory_in_gbs" { + description = "Memory for SQL1 and SQL2." + type = number + default = 32 +} + +variable "boot_volume_size_in_gbs" { + description = "Boot volume size for DC-VM, SQL1, and SQL2." + type = number + default = 100 +} + +variable "sql_data_volume_size_in_gbs" { + description = "Persistent block volume size attached to each SQL node for SQL data, logs, and backups." + type = number + default = 100 +} + +variable "sql_data_drive_letter" { + description = "Windows drive letter assigned to each SQL node's persistent data volume." + type = string + default = "F" +} + +variable "dc_rdp_source_cidr" { + description = "Source CIDR allowed to RDP into DC-VM." + type = string + default = "0.0.0.0/0" +} + +variable "sql_rdp_source_cidr" { + description = "Source CIDR allowed to RDP into SQL1 and SQL2." + type = string + default = "0.0.0.0/0" +} + +variable "freeform_tags" { + type = map(string) + default = { + Project = "sqlagtest" + } +} diff --git a/automation-mssql-server-aoag-sample/03-network.tf b/automation-mssql-server-aoag-sample/03-network.tf new file mode 100644 index 0000000..f08114a --- /dev/null +++ b/automation-mssql-server-aoag-sample/03-network.tf @@ -0,0 +1,67 @@ +resource "oci_core_vcn" "sql" { + compartment_id = var.compartment_id + cidr_blocks = [var.vcn_cidr] + display_name = var.vcn_name + dns_label = var.vcn_dns_label + freeform_tags = var.freeform_tags +} + +resource "oci_core_internet_gateway" "sql" { + compartment_id = var.compartment_id + vcn_id = oci_core_vcn.sql.id + display_name = "Internet gateway-${var.vcn_name}" + enabled = true + freeform_tags = var.freeform_tags +} + +resource "oci_core_route_table" "public" { + compartment_id = var.compartment_id + vcn_id = oci_core_vcn.sql.id + display_name = "public route table-${var.vcn_name}" + freeform_tags = var.freeform_tags + + route_rules { + destination = "0.0.0.0/0" + destination_type = "CIDR_BLOCK" + network_entity_id = oci_core_internet_gateway.sql.id + } +} + +resource "oci_core_subnet" "dc" { + compartment_id = var.compartment_id + vcn_id = oci_core_vcn.sql.id + cidr_block = var.dc_subnet_cidr + display_name = "sqlagtest-dc-public-subnet" + dns_label = "dcsubnet" + route_table_id = oci_core_route_table.public.id + dhcp_options_id = oci_core_vcn.sql.default_dhcp_options_id + security_list_ids = [oci_core_security_list.dc.id] + prohibit_public_ip_on_vnic = false + freeform_tags = var.freeform_tags +} + +resource "oci_core_subnet" "sql1" { + compartment_id = var.compartment_id + vcn_id = oci_core_vcn.sql.id + cidr_block = var.sql1_subnet_cidr + display_name = "sqlagtest-sql1-public-subnet" + dns_label = "sql1subnet" + route_table_id = oci_core_route_table.public.id + dhcp_options_id = oci_core_vcn.sql.default_dhcp_options_id + security_list_ids = [oci_core_security_list.sql1.id] + prohibit_public_ip_on_vnic = false + freeform_tags = var.freeform_tags +} + +resource "oci_core_subnet" "sql2" { + compartment_id = var.compartment_id + vcn_id = oci_core_vcn.sql.id + cidr_block = var.sql2_subnet_cidr + display_name = "sqlagtest-sql2-public-subnet" + dns_label = "sql2subnet" + route_table_id = oci_core_route_table.public.id + dhcp_options_id = oci_core_vcn.sql.default_dhcp_options_id + security_list_ids = [oci_core_security_list.sql2.id] + prohibit_public_ip_on_vnic = false + freeform_tags = var.freeform_tags +} diff --git a/automation-mssql-server-aoag-sample/04-security.tf b/automation-mssql-server-aoag-sample/04-security.tf new file mode 100644 index 0000000..c494e81 --- /dev/null +++ b/automation-mssql-server-aoag-sample/04-security.tf @@ -0,0 +1,274 @@ +locals { + dc_source_cidrs = [var.vcn_cidr] + sql_source_cidrs = [var.vcn_cidr] + + dc_tcp_ingress_rules = [ + { min = 53, max = 53, description = "DNS TCP" }, + { min = 88, max = 88, description = "Kerberos TCP" }, + { min = 135, max = 135, description = "RPC endpoint mapper TCP" }, + { min = 139, max = 139, description = "NetBIOS session TCP" }, + { min = 389, max = 389, description = "LDAP TCP" }, + { min = 445, max = 445, description = "SMB TCP" }, + { min = 464, max = 464, description = "Kerberos password change TCP" }, + { min = 636, max = 636, description = "LDAPS TCP" }, + { min = 3268, max = 3268, description = "Global Catalog TCP" }, + { min = 3269, max = 3269, description = "Global Catalog SSL TCP" }, + { min = 5985, max = 5985, description = "WinRM HTTP TCP inside lab" }, + { min = 5986, max = 5986, description = "WinRM HTTPS TCP inside lab" }, + { min = 49152, max = 65535, description = "Windows dynamic RPC TCP" } + ] + + dc_udp_ingress_rules = [ + { min = 53, max = 53, description = "DNS UDP" }, + { min = 88, max = 88, description = "Kerberos UDP" }, + { min = 123, max = 123, description = "Windows Time UDP" }, + { min = 137, max = 137, description = "NetBIOS name UDP" }, + { min = 138, max = 138, description = "NetBIOS datagram UDP" }, + { min = 389, max = 389, description = "LDAP UDP" }, + { min = 464, max = 464, description = "Kerberos password change UDP" } + ] + + sql_tcp_ingress_rules = [ + { min = 53, max = 53, description = "DNS TCP responses and domain operations" }, + { min = 88, max = 88, description = "Kerberos TCP" }, + { min = 135, max = 135, description = "RPC endpoint mapper TCP" }, + { min = 139, max = 139, description = "NetBIOS session TCP" }, + { min = 389, max = 389, description = "LDAP TCP" }, + { min = 445, max = 445, description = "SMB TCP for admin and file witness" }, + { min = 464, max = 464, description = "Kerberos password change TCP" }, + { min = 1433, max = 1433, description = "SQL Server and AG listener TCP" }, + { min = 3343, max = 3343, description = "WSFC cluster service TCP" }, + { min = 5022, max = 5022, description = "SQL Always On HADR endpoint TCP" }, + { min = 5985, max = 5985, description = "WinRM HTTP TCP inside lab" }, + { min = 5986, max = 5986, description = "WinRM HTTPS TCP inside lab" }, + { min = 49152, max = 65535, description = "Windows dynamic RPC TCP" } + ] + + sql_udp_ingress_rules = [ + { min = 53, max = 53, description = "DNS UDP" }, + { min = 88, max = 88, description = "Kerberos UDP" }, + { min = 123, max = 123, description = "Windows Time UDP" }, + { min = 137, max = 137, description = "NetBIOS name UDP" }, + { min = 138, max = 138, description = "NetBIOS datagram UDP" }, + { min = 389, max = 389, description = "LDAP UDP" }, + { min = 464, max = 464, description = "Kerberos password change UDP" }, + { min = 1434, max = 1434, description = "SQL Browser UDP" }, + { min = 3343, max = 3343, description = "WSFC cluster service UDP" } + ] + + dc_tcp_source_rules = flatten([ + for source in local.dc_source_cidrs : [ + for rule in local.dc_tcp_ingress_rules : merge(rule, { source = source }) + ] + ]) + + dc_udp_source_rules = flatten([ + for source in local.dc_source_cidrs : [ + for rule in local.dc_udp_ingress_rules : merge(rule, { source = source }) + ] + ]) + + sql_tcp_source_rules = flatten([ + for source in local.sql_source_cidrs : [ + for rule in local.sql_tcp_ingress_rules : merge(rule, { source = source }) + ] + ]) + + sql_udp_source_rules = flatten([ + for source in local.sql_source_cidrs : [ + for rule in local.sql_udp_ingress_rules : merge(rule, { source = source }) + ] + ]) +} + +resource "oci_core_security_list" "dc" { + compartment_id = var.compartment_id + vcn_id = oci_core_vcn.sql.id + display_name = "DC_SC_List" + freeform_tags = var.freeform_tags + + egress_security_rules { + destination = "0.0.0.0/0" + destination_type = "CIDR_BLOCK" + protocol = "all" + } + + ingress_security_rules { + description = "RDP from client public IPv4" + source = var.dc_rdp_source_cidr + protocol = "6" + + tcp_options { + min = 3389 + max = 3389 + } + } + + dynamic "ingress_security_rules" { + for_each = local.dc_tcp_source_rules + + content { + description = ingress_security_rules.value.description + source = ingress_security_rules.value.source + protocol = "6" + + tcp_options { + min = ingress_security_rules.value.min + max = ingress_security_rules.value.max + } + } + } + + dynamic "ingress_security_rules" { + for_each = local.dc_udp_source_rules + + content { + description = ingress_security_rules.value.description + source = ingress_security_rules.value.source + protocol = "17" + + udp_options { + min = ingress_security_rules.value.min + max = ingress_security_rules.value.max + } + } + } + + dynamic "ingress_security_rules" { + for_each = toset(local.dc_source_cidrs) + + content { + description = "ICMP from lab CIDR" + source = ingress_security_rules.value + protocol = "1" + } + } +} + +resource "oci_core_security_list" "sql1" { + compartment_id = var.compartment_id + vcn_id = oci_core_vcn.sql.id + display_name = "SQL1_SC_List" + freeform_tags = var.freeform_tags + + egress_security_rules { + destination = "0.0.0.0/0" + destination_type = "CIDR_BLOCK" + protocol = "all" + } + + ingress_security_rules { + description = "RDP from configured source" + source = var.sql_rdp_source_cidr + protocol = "6" + + tcp_options { + min = 3389 + max = 3389 + } + } + + dynamic "ingress_security_rules" { + for_each = local.sql_tcp_source_rules + + content { + description = ingress_security_rules.value.description + source = ingress_security_rules.value.source + protocol = "6" + + tcp_options { + min = ingress_security_rules.value.min + max = ingress_security_rules.value.max + } + } + } + + dynamic "ingress_security_rules" { + for_each = local.sql_udp_source_rules + + content { + description = ingress_security_rules.value.description + source = ingress_security_rules.value.source + protocol = "17" + + udp_options { + min = ingress_security_rules.value.min + max = ingress_security_rules.value.max + } + } + } + + dynamic "ingress_security_rules" { + for_each = toset(local.sql_source_cidrs) + + content { + description = "ICMP from lab CIDR" + source = ingress_security_rules.value + protocol = "1" + } + } +} + +resource "oci_core_security_list" "sql2" { + compartment_id = var.compartment_id + vcn_id = oci_core_vcn.sql.id + display_name = "SQL2_SC_List" + freeform_tags = var.freeform_tags + + egress_security_rules { + destination = "0.0.0.0/0" + destination_type = "CIDR_BLOCK" + protocol = "all" + } + + ingress_security_rules { + description = "RDP from configured source" + source = var.sql_rdp_source_cidr + protocol = "6" + + tcp_options { + min = 3389 + max = 3389 + } + } + + dynamic "ingress_security_rules" { + for_each = local.sql_tcp_source_rules + + content { + description = ingress_security_rules.value.description + source = ingress_security_rules.value.source + protocol = "6" + + tcp_options { + min = ingress_security_rules.value.min + max = ingress_security_rules.value.max + } + } + } + + dynamic "ingress_security_rules" { + for_each = local.sql_udp_source_rules + + content { + description = ingress_security_rules.value.description + source = ingress_security_rules.value.source + protocol = "17" + + udp_options { + min = ingress_security_rules.value.min + max = ingress_security_rules.value.max + } + } + } + + dynamic "ingress_security_rules" { + for_each = toset(local.sql_source_cidrs) + + content { + description = "ICMP from lab CIDR" + source = ingress_security_rules.value + protocol = "1" + } + } +} diff --git a/automation-mssql-server-aoag-sample/05-compute.tf b/automation-mssql-server-aoag-sample/05-compute.tf new file mode 100644 index 0000000..0917fb8 --- /dev/null +++ b/automation-mssql-server-aoag-sample/05-compute.tf @@ -0,0 +1,306 @@ +locals { + common_agent_plugins = [ + "Compute Instance Run Command", + "Compute Instance Monitoring", + "Management Agent", + "Fleet Application Management Service", + "Cloud Guard Workload Protection" + ] + + effective_domain_admin_password = var.domain_admin_password + effective_windows_admin_password = var.windows_admin_password != "" ? var.windows_admin_password : local.effective_domain_admin_password + effective_sql_service_password = var.sql_service_account_password != "" ? var.sql_service_account_password : local.effective_domain_admin_password + wsfc_primary_node = "SQL1" + wsfc_cluster_nodes = "SQL1,SQL2" + wsfc_cluster_static_addresses = join(",", [var.wsfc_cluster_ip_sql1, var.wsfc_cluster_ip_sql2]) + aoag_listener_ips = join(",", [var.aoag_listener_ip_sql1, var.aoag_listener_ip_sql2]) + wsfc_witness_share = "\\\\DC-VM.${var.domain_name}\\${var.wsfc_witness_share_name}" + + dc_user_data = var.auto_configure_domain_controller ? base64encode(templatefile("${path.module}/templates/dc-user-data.ps1.tftpl", { + script_body_gzip_base64 = base64gzip(file("${path.module}/scripts/dc/01-configure-domain-controller.ps1")) + domain_name = var.domain_name + domain_netbios_name = var.domain_netbios_name + domain_admin_user = var.domain_admin_user + sql_service_account_user = var.sql_service_account_user + local_admin_user = var.local_admin_user + target_computer_name = "DC-VM" + dc_private_ip = var.dc_private_ip + domain_admin_password = replace(local.effective_domain_admin_password, "'", "''") + sql_service_account_password = replace(local.effective_sql_service_password, "'", "''") + windows_admin_password = replace(local.effective_windows_admin_password, "'", "''") + witness_path = var.wsfc_witness_path + witness_share_name = var.wsfc_witness_share_name + })) : null + + sql1_user_data = var.auto_configure_windows_nodes ? base64encode(templatefile("${path.module}/templates/windows-node-user-data.ps1.tftpl", { + sql_script_url = local.automation_object_urls.sql + wsfc_script_url = local.automation_object_urls.wsfc + sample_script_url = local.automation_object_urls.sample + ag_script_url = local.automation_object_urls.ag + safe_failover_script_url = local.automation_object_urls.safe_failover + reconcile_script_url = local.automation_object_urls.reconcile + domain_name = var.domain_name + domain_netbios_name = var.domain_netbios_name + domain_admin_user = var.domain_admin_user + domain_admin_password = replace(local.effective_domain_admin_password, "'", "''") + sql_service_account_user = var.sql_service_account_user + sql_service_account_password = replace(local.effective_sql_service_password, "'", "''") + auto_install_sql_server = var.auto_install_sql_server + install_ssms = var.install_ssms + sql_server_download_url = var.sql_server_download_url + ssms_download_url = var.ssms_download_url + auto_configure_wsfc = var.auto_configure_wsfc + wsfc_cluster_name = var.wsfc_cluster_name + wsfc_primary_node = local.wsfc_primary_node + wsfc_cluster_nodes = local.wsfc_cluster_nodes + wsfc_cluster_static_addresses = local.wsfc_cluster_static_addresses + wsfc_witness_share = local.wsfc_witness_share + skip_cluster_validation = var.skip_cluster_validation + aoag_database_name = var.aoag_database_name + aoag_availability_group_name = var.aoag_availability_group_name + aoag_listener_name = var.aoag_listener_name + aoag_listener_port = var.aoag_listener_port + aoag_listener_ips = local.aoag_listener_ips + hadr_endpoint_name = var.hadr_endpoint_name + hadr_endpoint_port = var.hadr_endpoint_port + sample_database_download_url = var.sample_database_download_url + local_admin_user = var.local_admin_user + windows_admin_password = replace(local.effective_windows_admin_password, "'", "''") + target_computer_name = "SQL1" + dc_private_ip = var.dc_private_ip + sql_data_drive_letter = var.sql_data_drive_letter + })) : null + + sql2_user_data = var.auto_configure_windows_nodes ? base64encode(templatefile("${path.module}/templates/windows-node-user-data.ps1.tftpl", { + sql_script_url = local.automation_object_urls.sql + wsfc_script_url = local.automation_object_urls.wsfc + sample_script_url = "" + ag_script_url = local.automation_object_urls.ag + safe_failover_script_url = local.automation_object_urls.safe_failover + reconcile_script_url = local.automation_object_urls.reconcile + domain_name = var.domain_name + domain_netbios_name = var.domain_netbios_name + domain_admin_user = var.domain_admin_user + domain_admin_password = replace(local.effective_domain_admin_password, "'", "''") + sql_service_account_user = var.sql_service_account_user + sql_service_account_password = replace(local.effective_sql_service_password, "'", "''") + auto_install_sql_server = var.auto_install_sql_server + install_ssms = var.install_ssms + sql_server_download_url = var.sql_server_download_url + ssms_download_url = var.ssms_download_url + auto_configure_wsfc = var.auto_configure_wsfc + wsfc_cluster_name = var.wsfc_cluster_name + wsfc_primary_node = local.wsfc_primary_node + wsfc_cluster_nodes = local.wsfc_cluster_nodes + wsfc_cluster_static_addresses = local.wsfc_cluster_static_addresses + wsfc_witness_share = local.wsfc_witness_share + skip_cluster_validation = var.skip_cluster_validation + aoag_database_name = var.aoag_database_name + aoag_availability_group_name = var.aoag_availability_group_name + aoag_listener_name = var.aoag_listener_name + aoag_listener_port = var.aoag_listener_port + aoag_listener_ips = local.aoag_listener_ips + hadr_endpoint_name = var.hadr_endpoint_name + hadr_endpoint_port = var.hadr_endpoint_port + sample_database_download_url = var.sample_database_download_url + local_admin_user = var.local_admin_user + windows_admin_password = replace(local.effective_windows_admin_password, "'", "''") + target_computer_name = "SQL2" + dc_private_ip = var.dc_private_ip + sql_data_drive_letter = var.sql_data_drive_letter + })) : null +} + +resource "oci_core_instance" "dc" { + availability_domain = local.selected_dc_availability_domain + compartment_id = var.compartment_id + display_name = "DC-VM" + shape = var.shape + freeform_tags = merge(var.freeform_tags, { + Role = "domain-controller" + Domain = var.domain_name + WitnessShare = local.wsfc_witness_share + }) + + agent_config { + are_all_plugins_disabled = false + is_management_disabled = false + is_monitoring_disabled = false + + dynamic "plugins_config" { + for_each = local.common_agent_plugins + + content { + name = plugins_config.value + desired_state = "ENABLED" + } + } + } + + create_vnic_details { + subnet_id = oci_core_subnet.dc.id + display_name = "DC-VM" + hostname_label = "dc-vm" + private_ip = var.dc_private_ip + assign_public_ip = true + nsg_ids = [] + } + + metadata = merge( + var.auto_configure_domain_controller ? { + user_data = local.dc_user_data + } : {} + ) + + instance_options { + are_legacy_imds_endpoints_disabled = true + } + + shape_config { + ocpus = var.ocpus + memory_in_gbs = var.memory_in_gbs + } + + source_details { + source_type = "image" + source_id = var.windows_image_ocid + boot_volume_size_in_gbs = var.boot_volume_size_in_gbs + } + + lifecycle { + precondition { + condition = !var.auto_configure_domain_controller || (var.domain_admin_password != "" && local.effective_windows_admin_password != "" && local.effective_sql_service_password != "") + error_message = "Set domain_admin_password and, when not reusing it, windows_admin_password and sql_service_account_password before enabling DC automation." + } + } +} + +resource "oci_core_instance" "sql1" { + depends_on = [oci_core_instance.dc] + + availability_domain = local.selected_sql1_availability_domain + compartment_id = var.compartment_id + display_name = "SQL1" + shape = var.shape + freeform_tags = merge(var.freeform_tags, { + Role = "sql-node" + Domain = var.domain_name + }) + + agent_config { + are_all_plugins_disabled = false + is_management_disabled = false + is_monitoring_disabled = false + + dynamic "plugins_config" { + for_each = local.common_agent_plugins + + content { + name = plugins_config.value + desired_state = "ENABLED" + } + } + } + + create_vnic_details { + subnet_id = oci_core_subnet.sql1.id + display_name = "SQL1" + hostname_label = "sql1" + private_ip = var.sql1_private_ip + assign_public_ip = true + nsg_ids = [] + } + + metadata = merge( + var.auto_configure_windows_nodes ? { + user_data = local.sql1_user_data + } : {} + ) + + instance_options { + are_legacy_imds_endpoints_disabled = true + } + + shape_config { + ocpus = var.sql_ocpus + memory_in_gbs = var.sql_memory_in_gbs + } + + source_details { + source_type = "image" + source_id = var.windows_image_ocid + boot_volume_size_in_gbs = var.boot_volume_size_in_gbs + } + + lifecycle { + precondition { + condition = !var.auto_configure_windows_nodes || (var.domain_admin_password != "" && local.effective_windows_admin_password != "" && local.effective_sql_service_password != "") + error_message = "Set domain_admin_password and, when not reusing it, windows_admin_password and sql_service_account_password before enabling SQL node automation." + } + } +} + +resource "oci_core_instance" "sql2" { + depends_on = [oci_core_instance.dc] + + availability_domain = local.selected_sql2_availability_domain + compartment_id = var.compartment_id + display_name = "SQL2" + shape = var.shape + freeform_tags = merge(var.freeform_tags, { + Role = "sql-node" + Domain = var.domain_name + }) + + agent_config { + are_all_plugins_disabled = false + is_management_disabled = false + is_monitoring_disabled = false + + dynamic "plugins_config" { + for_each = local.common_agent_plugins + + content { + name = plugins_config.value + desired_state = "ENABLED" + } + } + } + + create_vnic_details { + subnet_id = oci_core_subnet.sql2.id + display_name = "SQL2" + hostname_label = "sql2" + private_ip = var.sql2_private_ip + assign_public_ip = true + nsg_ids = [] + } + + metadata = merge( + var.auto_configure_windows_nodes ? { + user_data = local.sql2_user_data + } : {} + ) + + instance_options { + are_legacy_imds_endpoints_disabled = true + } + + shape_config { + ocpus = var.sql_ocpus + memory_in_gbs = var.sql_memory_in_gbs + } + + source_details { + source_type = "image" + source_id = var.windows_image_ocid + boot_volume_size_in_gbs = var.boot_volume_size_in_gbs + } + + lifecycle { + precondition { + condition = !var.auto_configure_windows_nodes || (var.domain_admin_password != "" && local.effective_windows_admin_password != "" && local.effective_sql_service_password != "") + error_message = "Set domain_admin_password and, when not reusing it, windows_admin_password and sql_service_account_password before enabling SQL node automation." + } + } +} diff --git a/automation-mssql-server-aoag-sample/06-secondary-private-ips.tf b/automation-mssql-server-aoag-sample/06-secondary-private-ips.tf new file mode 100644 index 0000000..3f0f5cc --- /dev/null +++ b/automation-mssql-server-aoag-sample/06-secondary-private-ips.tf @@ -0,0 +1,78 @@ +data "oci_core_vnic_attachments" "sql1" { + compartment_id = var.compartment_id + instance_id = oci_core_instance.sql1.id + + depends_on = [oci_core_instance.sql1] +} + +data "oci_core_vnic_attachments" "sql2" { + compartment_id = var.compartment_id + instance_id = oci_core_instance.sql2.id + + depends_on = [oci_core_instance.sql2] +} + +locals { + sql1_primary_vnic_id = one(data.oci_core_vnic_attachments.sql1.vnic_attachments[*].vnic_id) + sql2_primary_vnic_id = one(data.oci_core_vnic_attachments.sql2.vnic_attachments[*].vnic_id) +} + +resource "oci_core_private_ip" "sql1_wsfc" { + display_name = "sqlag-wsfc-sql1" + ip_address = var.wsfc_cluster_ip_sql1 + vnic_id = local.sql1_primary_vnic_id + + lifecycle { + replace_triggered_by = [oci_core_instance.sql1] + } +} + +resource "oci_core_private_ip" "sql2_wsfc" { + display_name = "sqlag-wsfc-sql2" + ip_address = var.wsfc_cluster_ip_sql2 + vnic_id = local.sql2_primary_vnic_id + + lifecycle { + replace_triggered_by = [oci_core_instance.sql2] + } +} + +resource "oci_core_private_ip" "sql1_agdemodb1" { + display_name = "sqlag-agdemodb1-sql1" + ip_address = var.aoag_listener_ip_sql1 + vnic_id = local.sql1_primary_vnic_id + + lifecycle { + replace_triggered_by = [oci_core_instance.sql1] + } +} + +resource "oci_core_private_ip" "sql2_agdemodb1" { + display_name = "sqlag-agdemodb1-sql2" + ip_address = var.aoag_listener_ip_sql2 + vnic_id = local.sql2_primary_vnic_id + + lifecycle { + replace_triggered_by = [oci_core_instance.sql2] + } +} + +resource "oci_core_private_ip" "sql1_agdemodb2" { + display_name = "sqlag-agdemodb2-sql1" + ip_address = cidrhost(var.sql1_subnet_cidr, 31) + vnic_id = local.sql1_primary_vnic_id + + lifecycle { + replace_triggered_by = [oci_core_instance.sql1] + } +} + +resource "oci_core_private_ip" "sql2_agdemodb2" { + display_name = "sqlag-agdemodb2-sql2" + ip_address = cidrhost(var.sql2_subnet_cidr, 31) + vnic_id = local.sql2_primary_vnic_id + + lifecycle { + replace_triggered_by = [oci_core_instance.sql2] + } +} diff --git a/automation-mssql-server-aoag-sample/06-sql-storage.tf b/automation-mssql-server-aoag-sample/06-sql-storage.tf new file mode 100644 index 0000000..0e388b8 --- /dev/null +++ b/automation-mssql-server-aoag-sample/06-sql-storage.tf @@ -0,0 +1,37 @@ +resource "oci_core_volume" "sql1_data" { + availability_domain = local.selected_sql1_availability_domain + compartment_id = var.compartment_id + display_name = "SQL1-data" + size_in_gbs = var.sql_data_volume_size_in_gbs + + freeform_tags = merge(var.freeform_tags, { + Role = "sql-data" + Node = "SQL1" + }) +} + +resource "oci_core_volume" "sql2_data" { + availability_domain = local.selected_sql2_availability_domain + compartment_id = var.compartment_id + display_name = "SQL2-data" + size_in_gbs = var.sql_data_volume_size_in_gbs + + freeform_tags = merge(var.freeform_tags, { + Role = "sql-data" + Node = "SQL2" + }) +} + +resource "oci_core_volume_attachment" "sql1_data" { + attachment_type = "paravirtualized" + display_name = "SQL1-data-attachment" + instance_id = oci_core_instance.sql1.id + volume_id = oci_core_volume.sql1_data.id +} + +resource "oci_core_volume_attachment" "sql2_data" { + attachment_type = "paravirtualized" + display_name = "SQL2-data-attachment" + instance_id = oci_core_instance.sql2.id + volume_id = oci_core_volume.sql2_data.id +} diff --git a/automation-mssql-server-aoag-sample/07-outputs.tf b/automation-mssql-server-aoag-sample/07-outputs.tf new file mode 100644 index 0000000..7fd350a --- /dev/null +++ b/automation-mssql-server-aoag-sample/07-outputs.tf @@ -0,0 +1,68 @@ +output "vcn_id" { + value = oci_core_vcn.sql.id +} + +output "subnet_ids" { + value = { + dc = oci_core_subnet.dc.id + sql1 = oci_core_subnet.sql1.id + sql2 = oci_core_subnet.sql2.id + } +} + +output "availability_domains" { + value = { + dc = local.selected_dc_availability_domain + sql1 = local.selected_sql1_availability_domain + sql2 = local.selected_sql2_availability_domain + } +} + +output "rdp_public_ips" { + value = { + dc = oci_core_instance.dc.public_ip + sql1 = oci_core_instance.sql1.public_ip + sql2 = oci_core_instance.sql2.public_ip + } +} + +output "primary_private_ips" { + value = { + dc = oci_core_instance.dc.private_ip + sql1 = oci_core_instance.sql1.private_ip + sql2 = oci_core_instance.sql2.private_ip + } +} + +output "secondary_private_ips" { + value = { + sql1_wsfc = oci_core_private_ip.sql1_wsfc.ip_address + sql2_wsfc = oci_core_private_ip.sql2_wsfc.ip_address + sql1_agdemodb1 = oci_core_private_ip.sql1_agdemodb1.ip_address + sql2_agdemodb1 = oci_core_private_ip.sql2_agdemodb1.ip_address + sql1_agdemodb2 = oci_core_private_ip.sql1_agdemodb2.ip_address + sql2_agdemodb2 = oci_core_private_ip.sql2_agdemodb2.ip_address + } +} + +output "sql_data_volume_ids" { + value = { + sql1 = oci_core_volume.sql1_data.id + sql2 = oci_core_volume.sql2_data.id + } +} + +output "post_provisioning_notes" { + value = join(" ", [ + "Terraform apply completion means OCI instances, VNICs, and IPs were created; Windows first-boot automation continues afterward.", + "Wait at least 10-15 minutes before testing, and on a fresh deployment allow the DC promotion cycle to finish first (often 20-25 minutes).", + "Verify DOMAIN_READY.txt on DC-VM, WINDOWS_BOOTSTRAP_READY.txt on both SQL nodes, WSFC_READY.txt on SQL1, and TASK_5_5_LISTENER_READY.txt on both SQL nodes before using the RDP IPs or testing AOAG.", + "DC-VM first-boot user_data configures ${var.domain_name}, creates ${var.domain_admin_user}, creates ${var.sql_service_account_user}, and creates \\\\DC-VM.${var.domain_name}\\${var.wsfc_witness_share_name}.", + "SQL1/SQL2 first-boot user_data joins the domain, installs SQL Server/SSMS when enabled, prepares WSFC/Always On, creates the file-share witness, restores ${var.aoag_database_name} with NORECOVERY on SQL2, creates ${var.aoag_availability_group_name}, waits for synchronization, and configures the native ${var.aoag_listener_name} listener on port ${var.aoag_listener_port} with ${var.aoag_listener_ip_sql1} and ${var.aoag_listener_ip_sql2} when auto_configure_wsfc is true.", + "The next manual step is listener connectivity and failover validation." + ]) +} + +output "automation_artifact_bucket" { + value = oci_objectstorage_bucket.automation.name +} diff --git a/automation-mssql-server-aoag-sample/08-automation-artifacts.tf b/automation-mssql-server-aoag-sample/08-automation-artifacts.tf new file mode 100644 index 0000000..7764223 --- /dev/null +++ b/automation-mssql-server-aoag-sample/08-automation-artifacts.tf @@ -0,0 +1,129 @@ +data "oci_objectstorage_namespace" "automation" { + compartment_id = var.compartment_id +} + +locals { + automation_bucket_name = "aoag-automation-${substr(md5(var.compartment_id), 0, 12)}" + automation_object_urls = { + sql = "https://objectstorage.${var.region}.oraclecloud.com${oci_objectstorage_preauthrequest.sql.access_uri}" + wsfc = "https://objectstorage.${var.region}.oraclecloud.com${oci_objectstorage_preauthrequest.wsfc.access_uri}" + sample = "https://objectstorage.${var.region}.oraclecloud.com${oci_objectstorage_preauthrequest.sample.access_uri}" + ag = "https://objectstorage.${var.region}.oraclecloud.com${oci_objectstorage_preauthrequest.ag.access_uri}" + safe_failover = "https://objectstorage.${var.region}.oraclecloud.com${oci_objectstorage_preauthrequest.safe_failover.access_uri}" + reconcile = "https://objectstorage.${var.region}.oraclecloud.com${oci_objectstorage_preauthrequest.reconcile.access_uri}" + } +} + +resource "oci_objectstorage_bucket" "automation" { + compartment_id = var.compartment_id + namespace = data.oci_objectstorage_namespace.automation.namespace + name = local.automation_bucket_name + access_type = "NoPublicAccess" + storage_tier = "Standard" + + freeform_tags = merge(var.freeform_tags, { + Purpose = "terraform-first-boot-automation" + }) +} + +resource "oci_objectstorage_object" "sql" { + namespace = data.oci_objectstorage_namespace.automation.namespace + bucket = oci_objectstorage_bucket.automation.name + object = "scripts/02-configure-sql-node.ps1" + source = "${path.module}/scripts/sql/02-configure-sql-node.ps1" + content_type = "text/plain" +} + +resource "oci_objectstorage_object" "wsfc" { + namespace = data.oci_objectstorage_namespace.automation.namespace + bucket = oci_objectstorage_bucket.automation.name + object = "scripts/03-configure-wsfc.ps1" + source = "${path.module}/scripts/wsfc/03-configure-wsfc.ps1" + content_type = "text/plain" +} + +resource "oci_objectstorage_object" "sample" { + namespace = data.oci_objectstorage_namespace.automation.namespace + bucket = oci_objectstorage_bucket.automation.name + object = "scripts/04-prepare-sample-database.ps1" + source = "${path.module}/scripts/aoag/04-prepare-sample-database.ps1" + content_type = "text/plain" +} + +resource "oci_objectstorage_object" "ag" { + namespace = data.oci_objectstorage_namespace.automation.namespace + bucket = oci_objectstorage_bucket.automation.name + object = "scripts/05-configure-availability-group.ps1" + source = "${path.module}/scripts/aoag/05-configure-availability-group.ps1" + content_type = "text/plain" +} + +resource "oci_objectstorage_object" "safe_failover" { + namespace = data.oci_objectstorage_namespace.automation.namespace + bucket = oci_objectstorage_bucket.automation.name + object = "scripts/06-safe-planned-failover.ps1" + source = "${path.module}/scripts/aoag/06-safe-planned-failover.ps1" + content_type = "text/plain" +} + +resource "oci_objectstorage_object" "reconcile" { + namespace = data.oci_objectstorage_namespace.automation.namespace + bucket = oci_objectstorage_bucket.automation.name + object = "scripts/07-reconcile-availability-group.ps1" + source = "${path.module}/scripts/aoag/07-reconcile-availability-group.ps1" + content_type = "text/plain" +} + +resource "oci_objectstorage_preauthrequest" "sql" { + access_type = "ObjectRead" + bucket = oci_objectstorage_bucket.automation.name + name = "sql-node-bootstrap" + namespace = data.oci_objectstorage_namespace.automation.namespace + object_name = oci_objectstorage_object.sql.object + time_expires = var.automation_artifact_expiration +} + +resource "oci_objectstorage_preauthrequest" "wsfc" { + access_type = "ObjectRead" + bucket = oci_objectstorage_bucket.automation.name + name = "wsfc-bootstrap" + namespace = data.oci_objectstorage_namespace.automation.namespace + object_name = oci_objectstorage_object.wsfc.object + time_expires = var.automation_artifact_expiration +} + +resource "oci_objectstorage_preauthrequest" "sample" { + access_type = "ObjectRead" + bucket = oci_objectstorage_bucket.automation.name + name = "sample-database-bootstrap" + namespace = data.oci_objectstorage_namespace.automation.namespace + object_name = oci_objectstorage_object.sample.object + time_expires = var.automation_artifact_expiration +} + +resource "oci_objectstorage_preauthrequest" "ag" { + access_type = "ObjectRead" + bucket = oci_objectstorage_bucket.automation.name + name = "availability-group-bootstrap" + namespace = data.oci_objectstorage_namespace.automation.namespace + object_name = oci_objectstorage_object.ag.object + time_expires = var.automation_artifact_expiration +} + +resource "oci_objectstorage_preauthrequest" "safe_failover" { + access_type = "ObjectRead" + bucket = oci_objectstorage_bucket.automation.name + name = "safe-planned-failover" + namespace = data.oci_objectstorage_namespace.automation.namespace + object_name = oci_objectstorage_object.safe_failover.object + time_expires = var.automation_artifact_expiration +} + +resource "oci_objectstorage_preauthrequest" "reconcile" { + access_type = "ObjectRead" + bucket = oci_objectstorage_bucket.automation.name + name = "availability-group-reconciliation" + namespace = data.oci_objectstorage_namespace.automation.namespace + object_name = oci_objectstorage_object.reconcile.object + time_expires = var.automation_artifact_expiration +} diff --git a/automation-mssql-server-aoag-sample/README.md b/automation-mssql-server-aoag-sample/README.md new file mode 100644 index 0000000..f6451ca --- /dev/null +++ b/automation-mssql-server-aoag-sample/README.md @@ -0,0 +1,110 @@ +# SQL Server AOAG Terraform + +This folder is a region-neutral Terraform build for the OCI SQL Server AOAG lab. It follows the Oracle SQL Server AOAG tutorial concept, with the POC changes actually used here: + +- The target OCI region, image, and compartment are inputs. Availability domains are selected automatically: DC/SQL1 use the first AD, and SQL2 uses the second AD when the region has one; otherwise all nodes use the first AD. +- Public subnets for DC, SQL1, and SQL2. +- No bastion. +- No NSGs. +- No OCI Load Balancer. +- Native WSFC and SQL AOAG listener secondary private IPs. +- DC can be used as the file share witness host. + +Terraform in this folder creates the OCI infrastructure and can run first-boot Windows bootstrap scripts. `DC-VM` can promote itself as the first domain controller, create `domainadmin`, create the dedicated SQL service account `sqlsa`, and publish the file-share witness. `SQL1`/`SQL2` can set local Windows credentials, enable RDP, rename, point DNS to the DC, join the domain, grant `domainadmin` local admin/RDP access, install SQL Server 2025 Standard Developer plus SSMS, prepare Failover Clustering, enable Always On, have SQL1 create the configured WSFC with the DC file-share witness, restore the configured sample database with `NORECOVERY` on SQL2, create the configured availability group, synchronize the replicas, and create the configured native listener. + +This is a recreate configuration, not an import of the currently stopped VMs. If you want Terraform to take ownership of the current live resources, use this as the target shape and add `terraform import` or Terraform `import` blocks before applying changes. + +## Files + +- `00-versions.tf` and `01-provider.tf`: Terraform and OCI provider setup. +- `02-variables.tf`: Editable inputs. +- `03-network.tf`: VCN, internet gateway, public route table, and public subnets. +- `04-security.tf`: Security lists only. No NSGs. +- `05-compute.tf`: DC, SQL1, and SQL2 Windows compute instances plus the small first-boot downloader metadata. +- `06-secondary-private-ips.tf`: WSFC and AOAG listener/private IP reservations. +- `06-sql-storage.tf`: One 100 GB paravirtualized block volume for each SQL node. +- `07-outputs.tf`: RDP IPs, private IPs, storage volume IDs, and post-provisioning values. +- `08-automation-artifacts.tf`: Private Object Storage bucket, uploaded PowerShell scripts, and object-specific PARs used by the Windows bootstraps. +- `terraform.tfvars.example`: Copy to `terraform.tfvars` and update before apply. +- `templates/dc-user-data.ps1.tftpl`: Thin launcher that injects the compressed DC script into `DC-VM`. +- `templates/windows-node-user-data.ps1.tftpl`: Thin first-boot downloader/launcher for `SQL1` and `SQL2`. +- `scripts/dc/01-configure-domain-controller.ps1`: DC use-case script for the configured domain, domain-admin/service accounts, and witness share. +- `scripts/sql/02-configure-sql-node.ps1`: Shared SQL node use-case script. Terraform passes `SQL1` or `SQL2` as `TargetComputerName`. +- `scripts/wsfc/03-configure-wsfc.ps1`: WSFC and Always On prep script launched by SQL1 when `auto_configure_wsfc = true`. +- `scripts/aoag/04-prepare-sample-database.ps1`: Task 5.3 sample backup/restore phase uploaded to Object Storage and downloaded only by SQL1. +- `scripts/aoag/05-configure-availability-group.ps1`: Task 5.4 endpoint/AG/replica phase plus Task 5.5 native listener creation and verification. SQL1 and SQL2 use synchronous commit and automatic failover; database seeding remains manual backup/restore. +- `scripts/aoag/06-safe-planned-failover.ps1`: Guarded planned failover/failback that waits for both replicas to return synchronized and healthy. +- `scripts/aoag/07-reconcile-availability-group.ps1`: Startup reconciliation task that waits for SQL/WSFC recovery after a VM reboot and then verifies the local replica is synchronized. +- `docs/automation-scripts.md`: Script map and manual troubleshooting examples. +- `docs/post-provisioning-runbook.md`: What to automate after Terraform. + +Terraform state, local variable files, plans, and the `.terraform` directory are local/generated artifacts. They are ignored by `.gitignore`; keep the active state file if Terraform still manages deployed resources. + +## Deploy + +```bash +cd terraform-sanjose-aoag +cp terraform.tfvars.example terraform.tfvars +terraform init +terraform plan +terraform apply +``` + +For a genuinely fresh lab test, destroy the previous stack first and then apply from this same directory: + +```bash +terraform destroy +terraform apply +``` + +Do not delete `terraform.tfstate` before `terraform destroy`; doing so would orphan the OCI resources from Terraform's tracking. + +Set `domain_admin_password` in `terraform.tfvars` before `terraform apply` when `auto_configure_domain_controller = true`. If `windows_admin_password` is empty, Terraform reuses `domain_admin_password` for the local `Administrator` and `opc` passwords in this POC. + +Terraform reports the public IPs when OCI has finished creating the instances. That is not the end of the Windows work: first-boot scripts continue through renames, reboots, domain promotion, SQL installation, WSFC, restores, and AOAG configuration. Wait at least 10-15 minutes after the IPs appear before testing; on a fresh deployment, allow the DC promotion cycle roughly 20-25 minutes. Do not destroy and redeploy just because the IP output appeared. + +The scripts add short, logged settling pauses at the major handoffs and use readiness/retry loops for the services that must actually be available. The reliable completion signals are the marker files below, not Terraform's resource creation timestamps. + +```text +DC-VM: C:\AOAGAutomation\DC\DOMAIN_READY.txt +SQL1/SQL2: C:\AOAGAutomation\Windows\WINDOWS_BOOTSTRAP_READY.txt +SQL1: C:\AOAGAutomation\WSFC\WSFC_READY.txt +SQL1/SQL2: C:\AOAGAutomation\WSFC\TASK_5_5_LISTENER_READY.txt +``` + +If a marker is missing, inspect the stage and the tail of the matching log before rerunning anything: + +```powershell +Get-Content C:\AOAGAutomation\DC\stage.txt -ErrorAction SilentlyContinue +Get-Content C:\AOAGAutomation\DC\configure-dc.log -Tail 80 +Get-Content C:\AOAGAutomation\Windows\stage.txt -ErrorAction SilentlyContinue +Get-Content C:\AOAGAutomation\Windows\windows-bootstrap.log -Tail 120 +Get-Content C:\AOAGAutomation\WSFC\configure-wsfc.log -Tail 160 +``` + +After the ready markers exist, refresh SSMS Object Explorer and run the verification queries in `docs/post-provisioning-runbook.md`. + +`SQL1` and `SQL2` then complete their staged bootstrap. With `auto_install_sql_server = true`, expect the SQL nodes to take longer because they download SQL Server 2025 media and SSMS from Microsoft. Watch: + +```powershell +Get-Content C:\AOAGAutomation\Windows\stage.txt +Get-Content C:\AOAGAutomation\Windows\windows-bootstrap.log -Tail 80 +Get-Content C:\AOAGAutomation\Windows\WINDOWS_BOOTSTRAP_READY.txt +``` + +When `auto_configure_wsfc = true`, SQL1 waits for both SQL nodes, creates the cluster, and configures the witness. Watch: + +```powershell +Get-Content C:\AOAGAutomation\WSFC\configure-wsfc.log -Tail 120 +Get-Content C:\AOAGAutomation\WSFC\WSFC_READY.txt +Get-ClusterNode -Cluster SQLAGCLUSTER +Get-ClusterQuorum -Cluster SQLAGCLUSTER +``` + +Then use `terraform output` to get the public RDP IPs. The native listener uses the two reserved private IPs configured by `aoag_listener_ip_sql1` and `aoag_listener_ip_sql2`, and the port configured by `aoag_listener_port`. + +Treat `terraform.tfvars`, rendered instance metadata, and Terraform state as sensitive because the first-boot automation needs Windows/domain passwords. + +The PowerShell payloads are uploaded to a private Object Storage bucket because OCI limits combined instance metadata to 32 KB. Terraform creates read-only, object-specific pre-authenticated requests expiring at `automation_artifact_expiration`; refresh that variable before a later deployment after the expiry date. + +The default shape sizing is 6 OCPUs and 16 GB RAM for `DC-VM`, and 8 OCPUs and 32 GB RAM for each SQL node through `sql_ocpus` and `sql_memory_in_gbs`. All boot volumes default to 100 GB. Each SQL node also receives a 100 GB local block volume, formatted as `F:` and used for SQL data, logs, and backup files. SQL binaries and SSMS remain on the boot volume. diff --git a/automation-mssql-server-aoag-sample/aoag-fresh.tfplan b/automation-mssql-server-aoag-sample/aoag-fresh.tfplan new file mode 100644 index 0000000000000000000000000000000000000000..16a638d14fcb713117936a25c502d93f2c6830ac GIT binary patch literal 31976 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%0A)?Q0FDuo$3M+KsWRS1Sa3yR#5A%TscjM)G? z;z`>`Tm|vF7)o@fVQo{=pgIpm$&|fE4!WXQ%w(*~pfsfp2Q5mVyk@DUM(HuCbHmJL z20CDI!3vsRF`sKvKXumLEltV0D@PymGpJA(Z;`$+Y#Jz3wR>^hUjKzSR!$Nu@?2jU z60#GNMkz9Ylz0@MC>LmHWH24hV)93VJ&!yYBMJ!UjPT-Tt_CRBa$t;Rgk&20k&(0W z?KZ6{l><;Q&lk0``jG0|*$7xn(E)96mUN01T8#>Iz8ry?x*2T)R7M>$7|)!%k(8A> z3Sp7Na@B3l79`;$@}{&;6J&!wRZGKSZ4$!slK2#7dHVByhJa|DgF_n0Cr?@#??VA) zjD9aSZ4-x9MT=n3zLY4%9n1i6W*dXo%&c4fwrDzb2wLq8C%dm1u$z^qnYG4QJ@66) zT|igra37YJ5wx?I*NN0?z_J-G8fXe*3Wssw&$trFflq1M9SI#fCcvW#ff_Hb_X|)Y zHkraIQ#z3!J_+0_8mdi7fbp`w*%A8wk>~$N!pb*DRPGOr&g;X&DK7;Cj0*Vk^}c^~ z+k=0k;osx8m;L^J@L!Fge;D%rjK~iIzq9Gz?fJhS{Z}*PALh|N15fr}NB`YQ`a8s5 zJyw5s3jPf84_VvU^ndbT{*L!oN68<~tUp6Z={LOp*{Ah8_+PCNe+REq{SEwowy69L z{?|41zmJ53`fuR>)@$)Q-e1=O{*LFP`5WH9U5Ec2@2|S{A1erd2AJV*c>i%d;djix zs?C2W;(tcC(QlalULXG*@UIf_-vPype*^sYlJ)O^e{J{vP?rCU?cV|agULvr{Eqe4 kGWG{!_%qa<0soah$V-8J*fIeC#E-w*4{p2a_Q$vX1JZ~Dpa1{> literal 0 HcmV?d00001 diff --git a/automation-mssql-server-aoag-sample/docs/automation-scripts.md b/automation-mssql-server-aoag-sample/docs/automation-scripts.md new file mode 100644 index 0000000..f407bbd --- /dev/null +++ b/automation-mssql-server-aoag-sample/docs/automation-scripts.md @@ -0,0 +1,192 @@ +# Automation Scripts + +These scripts are the readable PowerShell automation used by Terraform +`user_data`. From the Terraform root, the scripts are organized by use case: + +```text +scripts/ + dc/ Domain controller and witness share + sql/ Shared SQL1/SQL2 bootstrap + wsfc/ Failover cluster and Always On preparation + aoag/ Database restore and availability group creation +``` + +The Terraform templates under `../templates` are intentionally thin launchers +that download these scripts from the private Object Storage automation bucket +and pass per-VM values. Terraform creates object-specific read-only PARs for +the downloads; the bucket itself is not public. + +You normally do not run these manually. Manual runs are only for troubleshooting +from an elevated PowerShell session. + +## 01-configure-domain-controller.ps1 + +This script is normally injected into `DC-VM` automatically through Terraform `user_data`. + +Use case: + +- Rename and configure `DC-VM`. +- Install AD DS and DNS. +- Promote `mssqlaoag.demo`. +- Create/update `MSSQLAOAG\domainadmin`. +- Create/update `MSSQLAOAG\sqlsa`. +- Create `\\DC-VM.mssqlaoag.demo\ClusterWitness`. + +```powershell +powershell.exe -ExecutionPolicy Bypass -File .\scripts\dc\01-configure-domain-controller.ps1 -DomainAdminPasswordPlain '' +``` + +Default values: + +- Domain: `mssqlaoag.demo` +- NetBIOS: `MSSQLAOAG` +- Domain admin user: `domainadmin` +- DC private IP: `10.0.10.10` +- Witness share: `\\DC-VM.mssqlaoag.demo\ClusterWitness` + +The script may reboot more than once. It registers a temporary startup task named `AOAG-Configure-DomainController` and removes it after successful completion. + +After the final restart, check: + +```powershell +Get-Content C:\AOAGAutomation\DC\DOMAIN_READY.txt +Get-Content C:\AOAGAutomation\DC\DOMAIN_VERIFY.json +``` + +Successful RDP login should use either: + +- `domainadmin@mssqlaoag.demo` +- `MSSQLAOAG\domainadmin` + +## 02-configure-sql-node.ps1 + +This script is injected into both `SQL1` and `SQL2`; Terraform passes +`-TargetComputerName SQL1` or `-TargetComputerName SQL2`. + +Use case: + +- Set local `Administrator` and `opc` passwords. +- Enable RDP. +- Point DNS to `10.0.10.10`. +- Rename the VM to `SQL1` or `SQL2`. +- Wait until the domain is reachable. +- Join `mssqlaoag.demo`. +- Retry domain join and remove stale `SQL1$`/`SQL2$` AD computer objects from previous redeploys. +- Add `MSSQLAOAG\domainadmin` to local Administrators and Remote Desktop Users. +- Optionally install SQL Server 2025 and SSMS. +- Configure SQL Server and SQL Agent to use `MSSQLAOAG\sqlsa`. +- Open Windows firewall TCP `1433` and `5022`. +- Install Failover Clustering prerequisites. +- Enable SQL Server Always On availability groups. +- Reboot before WSFC when Windows reports pending reboot after SQL/SSMS/features. +- If this is SQL1 and `auto_configure_wsfc = true`, launch `03-configure-wsfc.ps1`. + +The DC bootstrap configures DNS forwarding to the OCI VCN resolver and a public fallback. The SQL node bootstrap also retries Microsoft installer downloads with temporary public DNS and restores the DC DNS setting afterward. + +Manual troubleshooting example for SQL1: + +```powershell +powershell.exe -ExecutionPolicy Bypass -File .\scripts\sql\02-configure-sql-node.ps1 ` + -TargetComputerName SQL1 ` + -DomainName mssqlaoag.demo ` + -DomainNetbiosName MSSQLAOAG ` + -DomainAdminUser domainadmin ` + -DomainAdminPassword '' ` + -SqlServiceAccountUser sqlsa ` + -SqlServiceAccountPassword '' ` + -DcPrivateIp 10.0.10.10 +``` + +After the final restart, check on SQL1/SQL2: + +```powershell +Get-Content C:\AOAGAutomation\Windows\stage.txt +Get-Content C:\AOAGAutomation\Windows\WINDOWS_BOOTSTRAP_STATUS.txt +Get-Content C:\AOAGAutomation\Windows\WINDOWS_BOOTSTRAP_READY.txt +Get-Service MSSQLSERVER,SQLSERVERAGENT +``` + +## 03-configure-wsfc.ps1 + +This script is written to `C:\AOAGAutomation\WSFC` on both SQL nodes. SQL1 +launches it after SQL Server and SSMS are installed, SQL Always On is enabled, +and any pending reboot has completed when `auto_configure_wsfc` is true. + +Use case: + +- Relaunch itself as `domainadmin@mssqlaoag.demo` when started by LocalSystem. +- Wait for WinRM and SQL Server on SQL1 and SQL2. +- Install or confirm Failover Clustering management features on both nodes. +- Enable SQL Server Always On availability groups on both nodes. +- Create `SQLAGCLUSTER` with static IPs `10.0.20.20` and `10.0.30.20`. +- Configure quorum using `\\DC-VM.mssqlaoag.demo\ClusterWitness`. +- Restore the configured sample database on SQL1 from the configured backup URL, create full and log backups on the configured witness share, and restore SQL2 with `NORECOVERY`. This runs automatically on SQL1 when the Task 5.3 script is injected by Terraform. +- Create the configured HADR endpoint on both nodes, create the configured availability group with manual seeding, join SQL2, and attach the already-restored database. This is Task 5.4 and runs automatically after Task 5.3. +- Wait for both replicas to be synchronized and healthy, then create the configured native listener with the two configured listener IPs and port. This is Task 5.5 and runs automatically after Task 5.4. + +Manual troubleshooting example from SQL1: + +```powershell +powershell.exe -ExecutionPolicy Bypass -File C:\AOAGAutomation\WSFC\03-configure-wsfc.ps1 ` + -DomainName mssqlaoag.demo ` + -DomainNetbiosName MSSQLAOAG ` + -DomainAdminUser domainadmin ` + -DomainAdminPassword '' ` + -ClusterName SQLAGCLUSTER ` + -ClusterNodes SQL1,SQL2 ` + -ClusterStaticAddresses 10.0.20.20,10.0.30.20 ` + -WitnessShare \\DC-VM.\ ` + -SkipClusterValidation +``` + +After completion, check on SQL1: + +```powershell +Get-Content C:\AOAGAutomation\WSFC\WSFC_READY.txt +Get-Content C:\AOAGAutomation\WSFC\WSFC_STATUS.txt +Get-Content C:\AOAGAutomation\WSFC\WSFC_VERIFY.json +Get-ClusterNode -Cluster SQLAGCLUSTER +Get-ClusterQuorum -Cluster SQLAGCLUSTER +``` + +Task 5.3 verification: + +```powershell +Get-Content C:\AOAGAutomation\WSFC\TASK_5_3_PRIMARY_READY.txt +Get-Content C:\AOAGAutomation\WSFC\TASK_5_3_SECONDARY_READY.txt +``` + +SQL1 should report the sample database online. SQL2 should report that the +database was restored with `NORECOVERY`; it will not be queryable on SQL2 +until the availability group is created and the secondary is joined. After +Task 5.4, check the following markers on both nodes: + +```powershell +Get-Content C:\AOAGAutomation\WSFC\TASK_5_4_AVAILABILITY_GROUP_READY.txt +``` + +After Task 5.5, check the listener marker on both nodes and verify the listener +catalog entries from SQL1: + +```powershell +Get-Content C:\AOAGAutomation\WSFC\TASK_5_5_LISTENER_READY.txt +sqlcmd -E -C -S localhost -Q "SELECT dns_name, port, ip_configuration_string_from_cluster FROM sys.availability_group_listeners WHERE dns_name = 'AOAG-LSN'" +nslookup AOAG-LSN.mssqlaoag.demo +Test-NetConnection AOAG-LSN.mssqlaoag.demo -Port 1433 +``` + +Connect in SSMS with Windows Authentication to `AOAG-LSN.mssqlaoag.demo` and +port `1433` after the marker exists. Failover testing is the next manual POC +step. + +The Task 5.3 script is stored on SQL1 at: + +```text +C:\AOAGAutomation\WSFC\04-prepare-sample-database.ps1 +``` + +The Task 5.4 script is stored on SQL1 and SQL2 at: + +```text +C:\AOAGAutomation\WSFC\05-configure-availability-group.ps1 +``` diff --git a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.drawio b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.drawio new file mode 100644 index 0000000..47c5e5e --- /dev/null +++ b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.drawio @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.svg b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.svg new file mode 100644 index 0000000..1cfcf50 --- /dev/null +++ b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.svg @@ -0,0 +1,220 @@ + + SQL Server Always On Availability Groups on Oracle Cloud Infrastructure + Terraform provisioned OCI reference architecture with a domain controller, two SQL Server nodes, WSFC quorum, private automation artifacts, and a native multi-subnet AOAG listener. + + + + + + + + + + + + SQL Server Always On Availability Groups on OCI + Terraform-provisioned Windows domain, WSFC quorum, synchronous AOAG, and native multi-subnet listener + + POC reference architecture + + + + + + CONTROL PLANE + + + + Terraform + VCN, subnets, routes, + security lists, instances, + volumes and private artifacts + + + + Operator + RDP / SSMS with + MSSQLAOAG\domainadmin + for validation and tests + + POC boundary + Public subnets and public + RDP are intentional here. + Restrict RDP for production. + + Legend + management + data / quorum + SQL / HADR + automation + Icons are simplified OCI-style + service glyphs for portability. + + + + + + + + ORACLE CLOUD INFRASTRUCTURE (OCI) REGION + Compartment: OICCompartment + + + + VCN • configurable CIDR + Public route table → Internet Gateway • security lists only • IMDSv2-only instances + + + + + + Internet Gateway + RDP 3389 + software downloads + + + + + + + Object Storage + Private bucket • PAR artifacts + PowerShell first-boot packages + + + + + + AOAG-LSN • native listener + TCP 1433 • multi-subnet IPs + No OCI Load Balancer in this POC + + + + + PUBLIC SUBNET • DC-VM + 10.0.10.0/24 • AD-1 + + + + DC-VM • 10.0.10.10 + AD DS + DNS + mssqlaoag.demo + ClusterWitness SMB share + Domain services → SQL1 / SQL2 + DNS 53 • LDAP/Kerberos • SMB 445 + Quorum witness: \\DC-VM.domain\ClusterWitness + + + + PUBLIC SUBNET • SQL1 + 10.0.20.0/24 • AD-2 + + + + SQL1 • 10.0.20.10 + MSSQLSERVER + SSMS + AOAG primary / secondary + F: 100 GB SQL data volume + Secondary IPs: WSFC + listener + 10.0.20.20 • 10.0.20.30 + HADR endpoint: TCP 5022 + + + + PUBLIC SUBNET • SQL2 + 10.0.30.0/24 • AD-3 / fallback + + + + SQL2 • 10.0.30.10 + MSSQLSERVER + SSMS + AOAG secondary / primary + F: 100 GB SQL data volume + Secondary IPs: WSFC + listener + 10.0.30.20 • 10.0.30.30 + HADR endpoint: TCP 5022 + + + + + + + + + + + AD / DNS / SMB witness / WSFC control bus + + + + + + + WSFC + HADR TCP 5022 / synchronous commit + + + + + + AOAG-LSN IP ownership follows primary + + + + BOOTSTRAP AND OPERATIONS AUTOMATION + + First-boot PowerShell + AD → domain join → WSFC → SQL + AOAG → listener → reconciliation + + Readiness markers + logs + DOMAIN_READY • WSFC_READY + TASK_5_4 • TASK_5_5 + + Manual seed workflow + SQL1 full/log backup → witness + SQL2 restore NORECOVERY → join AG + + Guarded failover + Synchronized → planned failover + Failback only after resync + + + + + + + + + OCI API + + RDP / SSMS + + + + HA contract + one writable + primary at a time + automatic failover + needs quorum + sync + + + Production hardening next + Private subnets, bastion, restricted RDP, backups, monitoring, DR, and patch governance + Reference implementation • region-neutral Terraform inputs • no OCI Load Balancer + Official OCI diagram toolkit: docs.oracle.com/en-us/iaas/Content/General/Reference/graphicsfordiagrams.htm + diff --git a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md new file mode 100644 index 0000000..6912e12 --- /dev/null +++ b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md @@ -0,0 +1,361 @@ +# Automated SQL Server Always On Availability Groups on OCI + +## Overview + +Microsoft SQL Server high availability projects often require several systems to be configured in the correct order: network connectivity, Active Directory, DNS, Windows Server Failover Clustering, SQL Server, database backup and restore, Always On availability groups, and listener IP addresses. When these steps are performed manually, timing differences between operating-system reboots, domain promotion, service startup, and database restore can produce a cluster that appears online but is not ready for synchronized failover. + +This solution automates a two-node SQL Server Always On Availability Group (AOAG) proof of concept on Oracle Cloud Infrastructure (OCI) using Terraform and staged PowerShell first-boot automation. It creates a domain controller, two SQL Server nodes, the OCI network and security controls, SQL storage volumes, WSFC quorum, a manually seeded sample database, a synchronized availability group, and a native multi-subnet availability group listener. + +The design is region-neutral. The target region, compartment, Windows image, CIDR ranges, availability domains, instance sizing, database name, listener name, and credentials are supplied through Terraform variables. The current reference configuration is suitable for a controlled POC and is not intended to be a production security baseline without additional hardening. + +## Decision Context + +The solution is built around four automation layers: + +### OCI Infrastructure Layer + +Terraform provisions the repeatable OCI foundation: + +- One VCN with configurable CIDR ranges. +- Three separate public subnets for `DC-VM`, `SQL1`, and `SQL2`. +- One public route table with an Internet Gateway route. +- Security lists only; no NSGs are required by this implementation. +- Public IPs for RDP and first-boot software downloads. +- Secondary private IP reservations for WSFC and the AOAG listener. +- One 100 GB paravirtualized block volume for each SQL node. +- A private Object Storage bucket containing the PowerShell automation artifacts. +- Object-specific, read-only pre-authenticated requests for first-boot downloads. + +The default placement uses the first availability domain for `DC-VM` and `SQL1`, and the second availability domain for `SQL2` when the region exposes one. In regions with a single availability domain, all instances use that domain. Explicit availability-domain overrides are supported. + +### Windows and Active Directory Layer + +`DC-VM` installs AD DS and DNS, promotes the first domain controller, creates the configured domain administrator and SQL service account, and publishes the file-share witness used by WSFC. + +`SQL1` and `SQL2` set their local bootstrap credentials, enable RDP, configure DNS to use the domain controller, join the domain, and add the domain administrator to the local Administrators and Remote Desktop Users groups. + +### SQL and WSFC Layer + +The SQL nodes install SQL Server and SSMS when enabled, configure SQL Server and SQL Server Agent to use the dedicated domain service account, install Failover Clustering, configure the HADR endpoint on TCP 5022, and enable Always On availability groups. + +SQL1 creates `SQLAGCLUSTER` with two subnet-specific cluster IPs and configures the file-share witness on `DC-VM`. The cluster computer object permissions needed for the WSFC name are granted in Active Directory by the automation. + +### Database and AOAG Layer + +The sample database is seeded with the documented backup/restore method: + +1. SQL1 restores the sample database online. +2. SQL1 creates full and transaction-log backups on the witness share. +3. SQL2 restores those backups with `NORECOVERY`. +4. The availability group is created with manual seeding, synchronous commit, and automatic failover for the two SQL replicas. +5. The secondary joins the availability group and the database becomes synchronized. +6. The native listener is created and verified with both subnet listener IPs. + +Manual seeding is intentional. It makes the backup, restore, and `NORECOVERY` stages visible for POC testing and avoids relying on automatic database seeding. + +## Reference Architecture + +![SQL Server Always On Availability Groups on OCI reference architecture](oci-sql-server-aoag-architecture.svg) + +**Editable Draw.io source:** [OCI SQL Server AOAG architecture](oci-sql-server-aoag-architecture.drawio) + +The diagram separates the operator/control plane, OCI region boundary, VCN and subnet placement, Windows domain and quorum path, SQL replication path, listener path, and staged automation path. It is intentionally explicit about the native AOAG listener and the fact that this POC does not use an OCI Load Balancer. + +For official OCI service stencils and templates, use Oracle's [OCI Architecture Diagram Toolkit](https://docs.oracle.com/en-us/iaas/Content/General/Reference/graphicsfordiagrams.htm). The editable source is kept as a portable Draw.io artifact so the service glyphs can be refreshed from the current OCI toolkit without changing the architecture or data flows. + +## End-to-End Flow + +### 1. Terraform Input and OCI Provisioning + +The operator copies `terraform.tfvars.example` to `terraform.tfvars`, supplies the target region, `OICCompartment` OCID, Windows image OCID, CIDRs, sizing, and sensitive credentials, then runs Terraform. + +Terraform creates the VCN, Internet Gateway, public route table, public subnets, security lists, instances, block volumes, secondary private IPs, and private automation artifacts. Instance metadata disables the legacy OCI metadata endpoints, making the instances IMDSv2-only. + +### 2. Domain Controller Bootstrap + +The DC first-boot task: + +- Resets and enables the local `Administrator` and `opc` accounts for bootstrap access. +- Renames the server to `DC-VM`. +- Installs AD DS, DNS, and management tools. +- Promotes the first domain controller for the configured DNS domain. +- Creates the domain administrator and dedicated SQL service account. +- Creates `C:\ClusterWitness` and publishes `\\DC-VM.\\ClusterWitness`. +- Verifies the domain after the promotion reboot. + +Readiness marker: + +```text +C:\AOAGAutomation\DC\DOMAIN_READY.txt +``` + +### 3. SQL Node Bootstrap + +Each SQL node waits for the domain controller to answer DNS and LDAP queries before attempting the domain join. The node then: + +- Resets and enables local `Administrator` and `opc`. +- Enables RDP and the required Windows firewall rules. +- Renames the computer to `SQL1` or `SQL2`. +- Sets the DC as the DNS server and joins the domain. +- Grants the domain administrator local administrator and RDP access. +- Installs SQL Server 2025 and SSMS when enabled. +- Formats and mounts its 100 GB data volume as `F:`. +- Creates `F:\SQLData`, `F:\SQLLogs`, and the required access permissions. +- Configures SQL Server and SQL Server Agent to use the dedicated SQL service account. +- Installs WSFC prerequisites and enables Always On. + +Readiness marker on each node: + +```text +C:\AOAGAutomation\Windows\WINDOWS_BOOTSTRAP_READY.txt +``` + +### 4. WSFC and Quorum + +SQL1 orchestrates the WSFC stage after SQL1 and SQL2 are available. The automation: + +- Installs or confirms Failover Clustering on both SQL nodes. +- Creates `SQLAGCLUSTER` with the configured cluster IP on each SQL subnet. +- Grants the cluster computer object the required Active Directory permissions. +- Configures the file-share witness on `DC-VM`. +- Enables the SQL Always On feature on both SQL Server services. +- Starts the HADR endpoint on TCP 5022. + +Readiness markers and checks: + +```text +C:\AOAGAutomation\WSFC\WSFC_READY.txt +C:\AOAGAutomation\WSFC\TASK_5_1_AD_PERMISSION_READY.txt +C:\AOAGAutomation\WSFC\TASK_5_2_ALWAYS_ON_READY.txt +``` + +### 5. Database Backup and Restore + +The configured sample database, `AdventureWorks2025` by default, is downloaded on SQL1 from the configured Microsoft sample URL. SQL1 restores it online, changes it to the FULL recovery model, and writes full and transaction-log backups to: + +```text +\\DC-VM.\\ClusterWitness\\SampleBackups +``` + +SQL2 receives the same backup files through the witness share and restores the database with `NORECOVERY`. At this point, `RESTORING` on SQL2 is expected. SQL2 becomes queryable only after it is joined to the availability group and synchronization completes. + +Readiness markers: + +```text +C:\AOAGAutomation\WSFC\TASK_5_3_PRIMARY_READY.txt +C:\AOAGAutomation\WSFC\TASK_5_3_SECONDARY_READY.txt +``` + +### 6. Availability Group and Listener + +The availability-group automation creates or confirms the HADR endpoint and then creates `TestAOAG` with: + +| Setting | SQL1 | SQL2 | +| --- | --- | --- | +| Replica role at creation | Primary | Secondary | +| Availability mode | Synchronous commit | Synchronous commit | +| Failover mode | Automatic | Automatic | +| Seeding mode | Manual | Manual | +| HADR endpoint | TCP 5022 | TCP 5022 | + +After SQL2 joins and the database is synchronized, the automation creates the native listener: + +| Listener setting | Value | +| --- | --- | +| DNS name | `AOAG-LSN.` | +| Port | `1433` by default | +| SQL1 subnet IP | Configured by `aoag_listener_ip_sql1` | +| SQL2 subnet IP | Configured by `aoag_listener_ip_sql2` | + +The listener is a multi-subnet SQL Server listener. It is created as an availability-group resource, not as an OCI Load Balancer. The listener creation step is retried and verified before the readiness marker is published. + +Readiness markers: + +```text +C:\AOAGAutomation\WSFC\TASK_5_4_AVAILABILITY_GROUP_READY.txt +C:\AOAGAutomation\WSFC\TASK_5_5_LISTENER_READY.txt +``` + +## Key Components + +### Terraform Resources + +| Area | Terraform implementation | +| --- | --- | +| Provider | OCI provider configured from the selected OCI profile and region | +| Network | VCN, Internet Gateway, public route table, three public subnets | +| Compute | Windows `DC-VM`, `SQL1`, and `SQL2` instances using a configurable Flex shape | +| Availability domains | Automatic first/second AD selection with optional overrides | +| Storage | One 100 GB block volume per SQL node, mounted as `F:` | +| Private IPs | WSFC cluster IPs and two-subnet AOAG listener IPs | +| Security | OCI security lists; no NSGs in this implementation | +| Automation delivery | Private Object Storage bucket and object-specific PARs | +| Instance security | Legacy IMDS endpoints disabled on all three instances | + +### PowerShell Use Cases + +| Script | Responsibility | +| --- | --- | +| `scripts/dc/01-configure-domain-controller.ps1` | AD DS, DNS, accounts, witness share, and DC readiness | +| `scripts/sql/02-configure-sql-node.ps1` | Local access, domain join, SQL installation, storage, firewall, and Always On prerequisites | +| `scripts/wsfc/03-configure-wsfc.ps1` | WSFC creation, AD permissions, quorum, Always On, and orchestration | +| `scripts/aoag/04-prepare-sample-database.ps1` | Sample database restore, backups, and SQL2 `NORECOVERY` restore | +| `scripts/aoag/05-configure-availability-group.ps1` | HADR endpoint, AG, replica synchronization, automatic failover, and listener | +| `scripts/aoag/06-safe-planned-failover.ps1` | Guarded planned failover and failback | +| `scripts/aoag/07-reconcile-availability-group.ps1` | Startup reconciliation after reboot, cluster recovery, and listener verification | + +## Network and Security Design + +The reference network uses one VCN and three separate public subnets. All three subnets use the public route table and Internet Gateway so the VMs can be reached by RDP and can download Windows and SQL installation media during the POC. + +The security lists permit domain, SMB witness, WinRM, WSFC, SQL Server, and HADR traffic from the VCN CIDR. RDP is controlled separately by `dc_rdp_source_cidr` and `sql_rdp_source_cidr`. The example values allow `0.0.0.0/0` for lab convenience; production deployments should replace them with a trusted administrator CIDR or use a private access path. + +The following ports are central to the workflow: + +| Port | Purpose | +| --- | --- | +| 3389/TCP | RDP administration | +| 53/TCP and UDP | DNS | +| 88/TCP and UDP | Kerberos | +| 389/TCP and UDP | LDAP | +| 445/TCP | SMB and file-share witness | +| 1433/TCP | SQL Server and AOAG listener | +| 3343/TCP and UDP | WSFC cluster service | +| 5022/TCP | SQL Server Always On HADR endpoint | +| 5985/5986 TCP | WinRM for domain-admin orchestration | +| 49152-65535/TCP | Windows dynamic RPC | + +No NSGs, bastion host, OCI Load Balancer, NAT Gateway, Service Gateway, or +Service Gateway-based private software repository is included in this +reference build. These are deliberate POC boundaries and can be added as a +separate production-hardening phase. + +## Operations and Validation + +Terraform resource creation and Windows bootstrap are asynchronous. When Terraform prints the instance public IPs, the OCI layer is ready, but the Windows configuration may still be running. Allow at least 10-15 minutes after the IPs appear, and allow additional time for DC promotion and SQL/SSMS downloads. + +Use the readiness markers rather than elapsed time alone: + +```powershell +# DC-VM +Get-Content C:\AOAGAutomation\DC\DOMAIN_READY.txt + +# SQL1 and SQL2 +Get-Content C:\AOAGAutomation\Windows\WINDOWS_BOOTSTRAP_READY.txt + +# SQL1 +Get-Content C:\AOAGAutomation\WSFC\WSFC_READY.txt +Get-ClusterNode -Cluster SQLAGCLUSTER +Get-ClusterQuorum -Cluster SQLAGCLUSTER + +# Both SQL nodes +Get-Content C:\AOAGAutomation\WSFC\TASK_5_4_AVAILABILITY_GROUP_READY.txt +Get-Content C:\AOAGAutomation\WSFC\TASK_5_5_LISTENER_READY.txt +``` + +Listener checks: + +```powershell +sqlcmd -E -C -S localhost -Q " +SELECT l.dns_name, + l.port, + CONVERT(varchar(50), ip.ip_address) AS listener_ip +FROM sys.availability_group_listeners AS l +JOIN sys.availability_group_listener_ip_addresses AS ip + ON l.listener_id = ip.listener_id +WHERE l.dns_name = 'AOAG-LSN'; +" + +nslookup AOAG-LSN.mssqlaoag.demo +Test-NetConnection AOAG-LSN.mssqlaoag.demo -Port 1433 +``` + +AOAG health query: + +```sql +SELECT + ar.replica_server_name, + ars.role_desc, + ars.connected_state_desc, + drs.database_state_desc, + drs.synchronization_state_desc, + drs.synchronization_health_desc, + drs.is_suspended, + drs.suspend_reason_desc, + drs.log_send_queue_size, + drs.redo_queue_size +FROM sys.dm_hadr_database_replica_states AS drs +JOIN sys.availability_replicas AS ar + ON drs.replica_id = ar.replica_id +JOIN sys.dm_hadr_availability_replica_states AS ars + ON ars.replica_id = ar.replica_id +WHERE drs.database_id = DB_ID(N'AdventureWorks2025'); +``` + +### Planned Failover and Failback + +Use the domain account `MSSQLAOAG\\domainadmin` with Windows Authentication. The SQL service account `MSSQLAOAG\\sqlsa` is a service identity and should not be used for interactive testing. The local `opc` account is useful for Windows administration but is not the preferred account for AOAG operations. + +For a no-data-loss planned failover, confirm the target secondary is connected, synchronous, synchronized, healthy, online, and not suspended. Then run the guarded failover script on the target secondary: + +```powershell +powershell.exe -ExecutionPolicy Bypass -File C:\AOAGAutomation\WSFC\06-safe-planned-failover.ps1 +``` + +After SQL2 becomes primary, wait for SQL1 to return as `ONLINE`, `SYNCHRONIZED`, and `HEALTHY`. Run the same guarded script from SQL1 to fail back. A planned failover should not leave the database in `RESTORING`; `RESTORING` is expected only during the manual SQL2 seed before AG join. An unplanned VM shutdown can temporarily place the former primary in `REVERTING` or `RECOVERING` during crash recovery. + +This is a single-primary AOAG design. Both replicas participate in availability, but both do not accept independent writes at the same time. Automatic failover is available only when the configured synchronous replica is healthy and the WSFC has quorum. + +## Deployment + +```bash +cd terraform-sanjose-aoag +cp terraform.tfvars.example terraform.tfvars + +# Prefer environment variables or a protected local tfvars file. +export TF_VAR_domain_admin_password='' +export TF_VAR_windows_admin_password='' +export TF_VAR_sql_service_account_password='' + +terraform init +terraform plan +terraform apply +``` + +The same directory can be used for a clean POC recreation: + +```bash +terraform destroy +terraform apply +``` + +Do not delete `terraform.tfstate` before `terraform destroy`; the state file is how Terraform tracks the OCI resources it must remove. Treat Terraform state, rendered metadata, local `terraform.tfvars`, and first-boot logs as sensitive because the bootstrap process handles credentials. + +## Scope and Extension Points + +Included in this reference implementation: + +- Region-neutral Terraform inputs. +- Three public subnets and public RDP access for a POC. +- Domain controller and SQL node first-boot automation. +- WSFC with a file-share witness on the domain controller. +- Manual backup/restore seeding with `NORECOVERY`. +- Synchronous SQL1/SQL2 AOAG with automatic failover. +- Native multi-subnet AOAG listener. +- Separate SQL block volumes and IMDSv2-only instance configuration. +- Startup reconciliation after VM restart. + +Out of scope for this document: + +- OCI Load Balancer integration. +- Bastion-based private administration. +- Chicago or another-region DR replica. +- A secondary domain controller in another region. +- Backup retention, encryption-key lifecycle, monitoring dashboards, and production patch governance. +- Multi-primary write scale-out. + +These can be added as follow-on designs without changing the core domain, WSFC, or AOAG sequencing model. + +## Reference Implementation + +This repository is a POC-oriented Terraform implementation of the Oracle SQL Server AOAG tutorial pattern. It packages the infrastructure and the Windows post-provisioning steps into a repeatable deployment so that a team can recreate the environment, inspect each readiness stage, connect through the native listener, and demonstrate planned failover and failback with synchronized database replicas. diff --git a/automation-mssql-server-aoag-sample/docs/post-provisioning-runbook.md b/automation-mssql-server-aoag-sample/docs/post-provisioning-runbook.md new file mode 100644 index 0000000..c52a3dc --- /dev/null +++ b/automation-mssql-server-aoag-sample/docs/post-provisioning-runbook.md @@ -0,0 +1,169 @@ +# Post-Provisioning Runbook + +Terraform creates the OCI layer, then Windows first-boot automation continues asynchronously. When Terraform prints the instance IPs, wait at least 10-15 minutes before testing. A fresh DC promotion can take roughly 20-25 minutes, and SQL Server/SSMS downloads can extend the SQL node time. Use the ready-marker checks below as the completion signal; do not treat the Terraform apply timestamp as bootstrap completion. + +## 1. Domain Controller + +This is now automated during `terraform apply` when these variables are set: + +```hcl +auto_configure_domain_controller = true +auto_configure_windows_nodes = true +auto_install_sql_server = true +install_ssms = true +auto_configure_wsfc = true +domain_name = "mssqlaoag.demo" +domain_netbios_name = "MSSQLAOAG" +domain_admin_user = "domainadmin" +local_admin_user = "opc" +sql_service_account_user = "sqlsa" +domain_admin_password = "" +sql_service_account_password = "" # empty means reuse domain_admin_password for this POC +windows_admin_password = "" # empty means reuse domain_admin_password for local Windows logins +``` + +Terraform injects `templates/dc-user-data.ps1.tftpl` into `DC-VM` as Windows user data. On first boot, the VM writes and runs: + +```text +C:\AOAGAutomation\DC\01-configure-domain-controller.ps1 +``` + +This script: + +- Renames the computer to `DC-VM` if needed. +- Installs AD DS and DNS. +- Promotes the forest as `mssqlaoag.demo`. +- Creates `domainadmin`. +- Adds `domainadmin` to Domain Admins, Enterprise Admins, Administrators, and Remote Desktop Users. +- Creates `sqlsa` as the dedicated SQL Server service account. +- Creates the file share witness: + - Path: `C:\ClusterWitness` + - Share: `\\DC-VM.mssqlaoag.demo\ClusterWitness` +- Verifies the `domainadmin@mssqlaoag.demo` credential after restart. + +After `terraform apply`, wait for the DC rename/promotion/reboot cycle to finish. Then verify with RDP or OCI Run Command: + +```powershell +Get-Content C:\AOAGAutomation\DC\DOMAIN_READY.txt +Get-Content C:\AOAGAutomation\DC\DOMAIN_VERIFY.json +``` + +## 2. SQL Nodes + +On `SQL1` and `SQL2`: + +- Terraform first-boot user data sets the local `Administrator` and `opc` password, enables RDP, renames the computers to `SQL1` and `SQL2`, points DNS to `10.0.10.10`, joins `mssqlaoag.demo`, and adds `MSSQLAOAG\domainadmin` to local Administrators and Remote Desktop Users. +- If `auto_install_sql_server = true`, Terraform first-boot user data installs SQL Server 2025 Standard Developer after the domain join stage. +- SQL Server and SQL Server Agent are configured to run as `MSSQLAOAG\sqlsa`. +- `MSSQLAOAG\domainadmin` and `BUILTIN\Administrators` are SQL sysadmin accounts. +- SQL Server Management Studio is installed when `install_ssms = true`. +- Failover Clustering prerequisites and SQL Server Always On availability groups are enabled. +- Windows firewall is opened for: + - TCP `1433` + - TCP `5022` + +Verify on each SQL node: + +```powershell +Get-Content C:\AOAGAutomation\Windows\stage.txt +Get-Content C:\AOAGAutomation\Windows\WINDOWS_BOOTSTRAP_READY.txt +Get-Service MSSQLSERVER,SQLSERVERAGENT +Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\MSSQLSERVER" | Select-Object ObjectName +``` + +## 3. WSFC + +When `auto_configure_wsfc = true`, SQL1 launches: + +```text +C:\AOAGAutomation\WSFC\03-configure-wsfc.ps1 +``` + +This waits for SQL1 and SQL2, confirms Failover Clustering, enables Always On, +creates `SQLAGCLUSTER`, and configures the file-share witness: + +```text +\\DC-VM.mssqlaoag.demo\ClusterWitness +``` + +The `.20` addresses are the WSFC cluster IPs reserved by Terraform: + +```text +10.0.20.20 +10.0.30.20 +``` + +Verify on SQL1: + +```powershell +Get-Content C:\AOAGAutomation\WSFC\configure-wsfc.log -Tail 120 +Get-Content C:\AOAGAutomation\WSFC\WSFC_READY.txt +Get-Content C:\AOAGAutomation\WSFC\WSFC_VERIFY.json +Get-ClusterNode -Cluster SQLAGCLUSTER +Get-ClusterQuorum -Cluster SQLAGCLUSTER +``` + +Manual fallback from SQL1: + +```powershell +powershell.exe -ExecutionPolicy Bypass -File C:\AOAGAutomation\WSFC\03-configure-wsfc.ps1 ` + -DomainName mssqlaoag.demo ` + -DomainNetbiosName MSSQLAOAG ` + -DomainAdminUser domainadmin ` + -DomainAdminPassword '' ` + -ClusterName SQLAGCLUSTER ` + -ClusterNodes SQL1,SQL2 ` + -ClusterStaticAddresses 10.0.20.20,10.0.30.20 ` + -WitnessShare \\DC-VM.\ ` + -SkipClusterValidation +``` + +## 4. SQL Availability Group + +Use backup/restore, not automatic seeding: + +- Create the primary databases on SQL1. +- Full backup and log backup on SQL1. +- Restore on SQL2 with `NORECOVERY`. +- Create or join the AG with manual backup/restore seeding, synchronous commit, + and automatic failover for SQL1 and SQL2. +- Wait for both replicas to be online, synchronized, and healthy, then configure the native listener using the reserved listener IPs. + +The example reserves these listener-style IPs; use the values from your +`terraform.tfvars` for another deployment: + +| Purpose | SQL1 subnet | SQL2 subnet | +| --- | --- | --- | +| WSFC cluster | `10.0.20.20` | `10.0.30.20` | +| AG listener IP | `aoag_listener_ip_sql1` | `aoag_listener_ip_sql2` | +| AGDemoDB2 / listener IP | `10.0.20.31` | `10.0.30.31` | + +No OCI Load Balancer is part of this build. + +The listener is automated as Task 5.5. Verify it on both SQL nodes: + +```powershell +Get-Content C:\AOAGAutomation\WSFC\TASK_5_5_LISTENER_READY.txt +``` + +Then connect to `.,` from +SSMS using Windows Authentication. The listener must be tested only after Task +5.5 is marked complete. + +For failover validation, run the guarded planned-failover script on the target +secondary. It waits up to 30 minutes for the target to report `SECONDARY`, +`CONNECTED`, `ONLINE`, `SYNCHRONIZED`, and `HEALTHY`: + +```powershell +powershell.exe -ExecutionPolicy Bypass -File C:\AOAGAutomation\WSFC\06-safe-planned-failover.ps1 +``` + +For a planned test, use the guarded script above. For an unplanned outage test, +you may stop the primary VM, but expect SQL Server to perform crash recovery; +the former primary can temporarily enter `REVERTING` while it performs +undo-of-redo recovery. On restart, the installed +`AOAG-Reconcile-AvailabilityGroup` startup task waits for SQL Server and WSFC, +clears a lab quarantine if needed, and waits for the former primary to return as +an `ONLINE / SYNCHRONIZED / HEALTHY` secondary. Check +`C:\AOAGAutomation\WSFC\AG_RECONCILIATION_READY.txt` before running the guarded +script on that node to perform a planned failback. diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/04-prepare-sample-database.ps1 b/automation-mssql-server-aoag-sample/scripts/aoag/04-prepare-sample-database.ps1 new file mode 100644 index 0000000..215398e --- /dev/null +++ b/automation-mssql-server-aoag-sample/scripts/aoag/04-prepare-sample-database.ps1 @@ -0,0 +1,195 @@ +[CmdletBinding()] +param( + [string]$SecondaryNode = "SQL2", + [string]$DatabaseName = "AdventureWorks2025", + [string]$DownloadUrl = "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2025.bak", + [string]$BackupShare = "\\DC-VM.mssqlaoag.demo\ClusterWitness\SampleBackups", + [string]$SetupDir = "C:\AOAGAutomation\WSFC", + [string]$SqlServiceAccount = "MSSQLAOAG\sqlsa", + [string]$SqlDataDriveLetter = "F" +) + +$ErrorActionPreference = "Stop" +$DataLogicalName = "AdventureWorks2025_data" +$LogLogicalName = "AdventureWorks2025_Log" +$SampleDir = "C:\AOAGAutomation\WSFC\SampleDatabase" +$DataDir = "${SqlDataDriveLetter}:\SQLData" +$LogDir = "${SqlDataDriveLetter}:\SQLLogs" +$DataFile = Join-Path $DataDir "$DatabaseName.mdf" +$LogFile = Join-Path $LogDir "${DatabaseName}_log.ldf" +$LogPath = Join-Path $SetupDir "sample-database.log" + +function Write-Log { + param([string]$Message) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Add-Content -Path $LogPath -Value ("{0:s} {1}" -f (Get-Date), $Message) +} + +function Get-SqlCmd { + $command = Get-Command sqlcmd.exe -ErrorAction SilentlyContinue + if ($command) { return $command.Source } + $candidate = Get-ChildItem "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC" -Filter sqlcmd.exe -Recurse -ErrorAction SilentlyContinue | + Sort-Object LastWriteTime -Descending | Select-Object -First 1 + if (-not $candidate) { throw "sqlcmd.exe was not found on $env:COMPUTERNAME." } + $candidate.FullName +} + +function Invoke-Sql { + param( + [string]$Server, + [string]$Query, + [string]$Label = "SQL command", + [switch]$Delimited + ) + # Keep SQLCMD progress messages on stdout. With -r 1, normal STATS + # messages are written to stderr and PowerShell treats them as errors + # when ErrorActionPreference is Stop. + $arguments = @("-S", $Server, "-E", "-C", "-b", "-r", "0", "-h", "-1", "-W", "-w", "65535", "-Q", $Query, "-l", "60") + if ($Delimited) { $arguments += @("-s", "|") } + $output = & (Get-SqlCmd) @arguments 2>&1 + $outputText = ($output | ForEach-Object { $_ | Out-String -Width 65535 } | ForEach-Object { $_.Trim() } | Where-Object { $_ }) -join " | " + if ($outputText) { Write-Log "$Label output on $Server`: $outputText" } + if ($LASTEXITCODE -ne 0) { + throw "$Label failed on $($Server). sqlcmd exit code=$LASTEXITCODE. Output: $outputText" + } + $output +} + +function SqlLiteral { + param([string]$Value) + "N'" + $Value.Replace("'", "''") + "'" +} + +function Get-BackupLogicalFiles { + param([string]$BackupPath) + + $rows = Invoke-Sql ` + -Server "localhost" ` + -Query "RESTORE FILELISTONLY FROM DISK = $(SqlLiteral $BackupPath);" ` + -Delimited + + $files = foreach ($row in $rows) { + $columns = ([string]$row).Trim() -split "\|", -1 | ForEach-Object { $_.Trim() } + if ($columns.Count -ge 3 -and $columns[0] -and $columns[2] -in @("D", "L")) { + [pscustomobject]@{ + LogicalName = $columns[0] + Type = $columns[2] + } + } + } + + $dataFile = $files | Where-Object Type -eq "D" | Select-Object -First 1 + $logFile = $files | Where-Object Type -eq "L" | Select-Object -First 1 + if (-not $dataFile -or -not $logFile) { + throw "Could not identify data and log logical files in backup $BackupPath. RESTORE FILELISTONLY output: $($rows -join ' | ')" + } + + [pscustomobject]@{ + DataLogicalName = $dataFile.LogicalName + LogLogicalName = $logFile.LogicalName + } +} + +function Restore-Secondary { + param( + [string]$FullBackup, + [string]$LogBackup, + [string]$DataLogicalName, + [string]$LogLogicalName + ) + Invoke-Command -ComputerName $SecondaryNode -Authentication Kerberos -ErrorAction Stop -ScriptBlock { + param($DbName, $FullPath, $LogPath, $DataFilePath, $LogFilePath, $DataLogicalFileName, $LogLogicalFileName, $SqlServiceAccountName) + $ErrorActionPreference = "Stop" + function Get-SqlCmdLocal { + $command = Get-Command sqlcmd.exe -ErrorAction SilentlyContinue + if ($command) { return $command.Source } + $candidate = Get-ChildItem "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC" -Filter sqlcmd.exe -Recurse -ErrorAction SilentlyContinue | + Sort-Object LastWriteTime -Descending | Select-Object -First 1 + if (-not $candidate) { throw "sqlcmd.exe was not found on $env:COMPUTERNAME." } + $candidate.FullName + } + function Grant-SqlDirectoryAccess { + param([string[]]$Paths, [string]$Account) + foreach ($path in $Paths) { + New-Item -ItemType Directory -Path $path -Force | Out-Null + & icacls.exe $path /grant "${Account}:(OI)(CI)(M)" /T /C | Out-Null + if ($LASTEXITCODE -ne 0) { + throw "Could not grant $Account modify access to $path. icacls exit code=$LASTEXITCODE" + } + } + } + function Invoke-SqlLocal { + param([string]$Query, [string]$Label = "SQL command", [switch]$Delimited) + $arguments = @("-S", "localhost", "-E", "-C", "-b", "-r", "0", "-h", "-1", "-W", "-w", "65535", "-Q", $Query, "-l", "60") + if ($Delimited) { $arguments += @("-s", "|") } + $output = & (Get-SqlCmdLocal) @arguments 2>&1 + $outputText = ($output | ForEach-Object { $_ | Out-String -Width 65535 } | ForEach-Object { $_.Trim() } | Where-Object { $_ }) -join " | " + if ($LASTEXITCODE -ne 0) { + throw "$Label failed on $($env:COMPUTERNAME). sqlcmd exit code=$LASTEXITCODE. Output: $outputText" + } + $output + } + function SqlLiteralLocal { + param([string]$Value) + "N'" + $Value.Replace("'", "''") + "'" + } + Remove-Item -LiteralPath "C:\AOAGAutomation\WSFC\TASK_5_3_SECONDARY_READY.txt" -Force -ErrorAction SilentlyContinue + Grant-SqlDirectoryAccess -Paths @((Split-Path $DataFilePath), (Split-Path $LogFilePath)) -Account $SqlServiceAccountName + $dropQuery = "IF DB_ID($(SqlLiteralLocal $DbName)) IS NOT NULL BEGIN ALTER DATABASE [$DbName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE [$DbName]; END;" + Invoke-SqlLocal -Query $dropQuery -Label "Prepare secondary database $DbName" | Out-Null + $restoreFullQuery = "RESTORE DATABASE [$DbName] FROM DISK = $(SqlLiteralLocal $FullPath) WITH FILE = 1, MOVE $(SqlLiteralLocal $DataLogicalFileName) TO $(SqlLiteralLocal $DataFilePath), MOVE $(SqlLiteralLocal $LogLogicalFileName) TO $(SqlLiteralLocal $LogFilePath), NORECOVERY, REPLACE, STATS = 5;" + Invoke-SqlLocal -Query $restoreFullQuery -Label "Restore full backup of $DbName on secondary" | Out-Null + $restoreLogQuery = "RESTORE LOG [$DbName] FROM DISK = $(SqlLiteralLocal $LogPath) WITH NORECOVERY, STATS = 5;" + Invoke-SqlLocal -Query $restoreLogQuery -Label "Restore log backup of $DbName on secondary" | Out-Null + Set-Content -Path "C:\AOAGAutomation\WSFC\TASK_5_3_SECONDARY_READY.txt" -Value "Task 5.3 complete: $DbName restored on $env:COMPUTERNAME with NORECOVERY." -Force + } -ArgumentList @($DatabaseName, $FullBackup, $LogBackup, $DataFile, $LogFile, $DataLogicalName, $LogLogicalName, $SqlServiceAccount) +} + +try { + New-Item -ItemType Directory -Path $SampleDir, $DataDir, $LogDir, $BackupShare -Force | Out-Null + Remove-Item -LiteralPath (Join-Path $SetupDir "TASK_5_3_PRIMARY_READY.txt") -Force -ErrorAction SilentlyContinue + & icacls.exe $DataDir /grant "${SqlServiceAccount}:(OI)(CI)(M)" /T /C | Out-Null + if ($LASTEXITCODE -ne 0) { throw "Could not grant $SqlServiceAccount modify access to $DataDir. icacls exit code=$LASTEXITCODE" } + & icacls.exe $LogDir /grant "${SqlServiceAccount}:(OI)(CI)(M)" /T /C | Out-Null + if ($LASTEXITCODE -ne 0) { throw "Could not grant $SqlServiceAccount modify access to $LogDir. icacls exit code=$LASTEXITCODE" } + $sampleBak = Join-Path $SampleDir "$DatabaseName.bak" + $fullBackup = Join-Path $BackupShare "$DatabaseName.full.bak" + $logBackup = Join-Path $BackupShare "$DatabaseName.log.trn" + if (-not (Test-Path $sampleBak)) { + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + Invoke-WebRequest -UseBasicParsing -Uri $DownloadUrl -OutFile $sampleBak + } + try { + $logicalFiles = Get-BackupLogicalFiles -BackupPath $sampleBak + } + catch { + Write-Log "Existing sample backup could not be inspected; downloading a fresh copy. $($_.Exception.Message)" + Remove-Item -LiteralPath $sampleBak -Force -ErrorAction SilentlyContinue + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + Invoke-WebRequest -UseBasicParsing -Uri $DownloadUrl -OutFile $sampleBak + $logicalFiles = Get-BackupLogicalFiles -BackupPath $sampleBak + } + + $DataLogicalName = $logicalFiles.DataLogicalName + $LogLogicalName = $logicalFiles.LogLogicalName + Write-Log "Backup logical files detected: data=$DataLogicalName, log=$LogLogicalName" + $restoreQuery = "IF DB_ID($(SqlLiteral $DatabaseName)) IS NULL BEGIN RESTORE DATABASE [$DatabaseName] FROM DISK = $(SqlLiteral $sampleBak) WITH FILE = 1, MOVE $(SqlLiteral $DataLogicalName) TO $(SqlLiteral $DataFile), MOVE $(SqlLiteral $LogLogicalName) TO $(SqlLiteral $LogFile), RECOVERY, REPLACE, STATS = 5; END; ALTER DATABASE [$DatabaseName] SET RECOVERY FULL;" + Invoke-Sql -Server "localhost" -Label "Prepare primary database $DatabaseName" -Query $restoreQuery | Out-Null + $fullBackupQuery = "BACKUP DATABASE [$DatabaseName] TO DISK = $(SqlLiteral $fullBackup) WITH INIT, COMPRESSION, STATS = 5;" + Invoke-Sql -Server "localhost" -Label "Create full backup of $DatabaseName" -Query $fullBackupQuery | Out-Null + $logBackupQuery = "BACKUP LOG [$DatabaseName] TO DISK = $(SqlLiteral $logBackup) WITH INIT, COMPRESSION, STATS = 5;" + Invoke-Sql -Server "localhost" -Label "Create log backup of $DatabaseName" -Query $logBackupQuery | Out-Null + if (-not (Test-Path -LiteralPath $fullBackup)) { throw "Full backup was not created at $fullBackup" } + if (-not (Test-Path -LiteralPath $logBackup)) { throw "Log backup was not created at $logBackup" } + Restore-Secondary ` + -FullBackup $fullBackup ` + -LogBackup $logBackup ` + -DataLogicalName $DataLogicalName ` + -LogLogicalName $LogLogicalName + Set-Content -Path (Join-Path $SetupDir "TASK_5_3_PRIMARY_READY.txt") -Value "Task 5.3 complete: $DatabaseName online on SQL1; full and log backups are on $BackupShare." -Force + Write-Log "Task 5.3 complete. $DatabaseName is online on SQL1 and restoring on $SecondaryNode." +} +catch { + Write-Log "ERROR: $($_ | Out-String -Width 65535)" + throw +} diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/05-configure-availability-group.ps1 b/automation-mssql-server-aoag-sample/scripts/aoag/05-configure-availability-group.ps1 new file mode 100644 index 0000000..9f94ab7 --- /dev/null +++ b/automation-mssql-server-aoag-sample/scripts/aoag/05-configure-availability-group.ps1 @@ -0,0 +1,480 @@ +[CmdletBinding()] +param( + [string]$PrimaryNode = "SQL1", + [string]$SecondaryNode = "SQL2", + [string]$DomainName = "mssqlaoag.demo", + [string]$AvailabilityGroupName = "TestAOAG", + [string]$DatabaseName = "AdventureWorks2025", + [string]$EndpointName = "Hadr_endpoint", + [int]$EndpointPort = 5022, + [string]$ListenerName = "AOAG-LSN", + [int]$ListenerPort = 1433, + [string]$ListenerIps = "10.0.20.30,10.0.30.30", + [string]$SqlServiceAccount = "MSSQLAOAG\sqlsa", + [string]$SetupDir = "C:\AOAGAutomation\WSFC" +) + +$ErrorActionPreference = "Stop" +$LogPath = Join-Path $SetupDir "configure-availability-group.log" +$PrimaryReadyPath = Join-Path $SetupDir "TASK_5_4_AVAILABILITY_GROUP_READY.txt" +$ListenerReadyPath = Join-Path $SetupDir "TASK_5_5_LISTENER_READY.txt" + +$ListenerIpList = @( + $ListenerIps -split "," | + ForEach-Object { "$($_)".Trim() } | + Where-Object { -not [string]::IsNullOrWhiteSpace($_) } +) + +if ($ListenerIpList.Count -lt 2) { + throw "ListenerIps must contain both SQL subnet listener addresses. Received: '$ListenerIps'." +} + +function Write-Log { + param([string]$Message) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Add-Content -Path $LogPath -Value ("{0:s} {1}" -f (Get-Date), $Message) +} + +function Get-SqlCmdPath { + $command = Get-Command sqlcmd.exe -ErrorAction SilentlyContinue + if ($command) { + return $command.Source + } + + $candidate = Get-ChildItem "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC" -Filter sqlcmd.exe -Recurse -ErrorAction SilentlyContinue | + Sort-Object LastWriteTime -Descending | + Select-Object -First 1 + if (-not $candidate) { + throw "sqlcmd.exe was not found on $env:COMPUTERNAME." + } + + $candidate.FullName +} + +function ConvertTo-SqlLiteral { + param([string]$Value) + "N'" + $Value.Replace("'", "''") + "'" +} + +function Invoke-LocalSql { + param([string]$Query) + + $arguments = @( + "-S", "localhost", + "-E", + "-C", + "-b", + "-r", "0", + "-h", "-1", + "-W", + "-w", "65535", + "-l", "60", + "-Q", $Query + ) + $output = & (Get-SqlCmdPath) @arguments 2>&1 + if ($LASTEXITCODE -ne 0) { + $details = ($output | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() }) -join " | " + throw "SQL command failed on $env:COMPUTERNAME`: $details" + } + + $output +} + +function Invoke-RemoteSql { + param( + [string]$Node, + [string]$Query + ) + + Invoke-Command -ComputerName $Node -Authentication Kerberos -ErrorAction Stop -ScriptBlock { + param([string]$RemoteQuery) + + $ErrorActionPreference = "Stop" + $command = Get-Command sqlcmd.exe -ErrorAction SilentlyContinue + if (-not $command) { + $command = Get-ChildItem "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC" -Filter sqlcmd.exe -Recurse -ErrorAction SilentlyContinue | + Sort-Object LastWriteTime -Descending | + Select-Object -First 1 + } + if (-not $command) { + throw "sqlcmd.exe was not found on $env:COMPUTERNAME." + } + + $sqlcmdPath = if ($command -is [System.IO.FileInfo]) { $command.FullName } else { $command.Source } + $arguments = @( + "-S", "localhost", + "-E", + "-C", + "-b", + "-r", "0", + "-h", "-1", + "-W", + "-w", "65535", + "-l", "60", + "-Q", $RemoteQuery + ) + $output = & $sqlcmdPath @arguments 2>&1 + if ($LASTEXITCODE -ne 0) { + $details = ($output | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() }) -join " | " + throw "SQL command failed on $env:COMPUTERNAME`: $details" + } + + $output + } -ArgumentList $Query +} + +function Ensure-HadrEndpoint { + param([string]$Node) + + Write-Log "Ensuring $EndpointName on $Node" + $query = @" +IF NOT EXISTS (SELECT 1 FROM sys.endpoints WHERE name = $(ConvertTo-SqlLiteral $EndpointName)) +BEGIN + CREATE ENDPOINT [$EndpointName] + STATE = STARTED + AS TCP (LISTENER_PORT = $EndpointPort) + FOR DATABASE_MIRRORING + ( + AUTHENTICATION = WINDOWS NEGOTIATE, + ENCRYPTION = REQUIRED ALGORITHM AES, + ROLE = ALL + ); +END +ELSE IF EXISTS (SELECT 1 FROM sys.endpoints WHERE name = $(ConvertTo-SqlLiteral $EndpointName) AND state_desc <> N'STARTED') +BEGIN + ALTER ENDPOINT [$EndpointName] STATE = STARTED; +END; + +IF SUSER_ID($(ConvertTo-SqlLiteral $SqlServiceAccount)) IS NULL +BEGIN + CREATE LOGIN [$SqlServiceAccount] FROM WINDOWS; +END; + +IF SUSER_ID($(ConvertTo-SqlLiteral $SqlServiceAccount)) IS NOT NULL +BEGIN + GRANT CONNECT ON ENDPOINT::[$EndpointName] TO [$SqlServiceAccount]; +END; +"@ + + if ($Node -ieq $env:COMPUTERNAME -or $Node -ieq "localhost") { + Invoke-LocalSql -Query $query | Out-Null + } + else { + Invoke-RemoteSql -Node $Node -Query $query | Out-Null + } +} + +function Test-HadrEndpoint { + param([string]$Node) + + $query = @" +SELECT CONCAT( + e.name COLLATE DATABASE_DEFAULT, + N'|', + e.state_desc COLLATE DATABASE_DEFAULT, + N'|', + CONVERT(nvarchar(10), te.port) +) +FROM sys.endpoints AS e +INNER JOIN sys.tcp_endpoints AS te ON te.endpoint_id = e.endpoint_id +WHERE e.name = $(ConvertTo-SqlLiteral $EndpointName); +"@ + $output = if ($Node -ieq $env:COMPUTERNAME -or $Node -ieq "localhost") { + Invoke-LocalSql -Query $query + } + else { + Invoke-RemoteSql -Node $Node -Query $query + } + + $line = ($output | ForEach-Object { [string]$_ } | Where-Object { $_ -match "\|STARTED\|$EndpointPort" } | Select-Object -First 1) + if (-not $line) { + throw "HADR endpoint $EndpointName is not STARTED on $Node at port $EndpointPort. Output: $($output -join ' | ')" + } +} + +function Wait-ForDatabaseState { + param( + [string]$Node, + [string]$ExpectedState + ) + + $query = "SELECT state_desc FROM sys.databases WHERE name = $(ConvertTo-SqlLiteral $DatabaseName);" + for ($attempt = 1; $attempt -le 30; $attempt++) { + try { + $output = if ($Node -ieq $env:COMPUTERNAME -or $Node -ieq "localhost") { + Invoke-LocalSql -Query $query + } + else { + Invoke-RemoteSql -Node $Node -Query $query + } + if (($output -join " ") -match "\b$([regex]::Escape($ExpectedState))\b") { + Write-Log "$DatabaseName is $ExpectedState on $Node" + return + } + } + catch { + Write-Log "Waiting for $DatabaseName on $Node attempt $attempt`: $($_.Exception.Message)" + } + Start-Sleep -Seconds 10 + } + + throw "$DatabaseName did not reach $ExpectedState on $Node." +} + +function Create-AvailabilityGroup { + $primaryEndpoint = "TCP://$PrimaryNode.$DomainName`:$EndpointPort" + $secondaryEndpoint = "TCP://$SecondaryNode.$DomainName`:$EndpointPort" + $query = @" +IF NOT EXISTS (SELECT 1 FROM sys.availability_groups WHERE name = $(ConvertTo-SqlLiteral $AvailabilityGroupName)) +BEGIN + CREATE AVAILABILITY GROUP [$AvailabilityGroupName] + WITH (CLUSTER_TYPE = WSFC) + FOR DATABASE [$DatabaseName] + REPLICA ON + N'$PrimaryNode' WITH + ( + ENDPOINT_URL = N'$primaryEndpoint', + AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, + FAILOVER_MODE = AUTOMATIC, + SEEDING_MODE = MANUAL + ), + N'$SecondaryNode' WITH + ( + ENDPOINT_URL = N'$secondaryEndpoint', + AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, + FAILOVER_MODE = AUTOMATIC, + SEEDING_MODE = MANUAL + ); +END +"@ + Invoke-LocalSql -Query $query | Out-Null +} + +function Join-SecondaryReplica { + Write-Log "Joining $SecondaryNode to availability group $AvailabilityGroupName" + $joinQuery = @" +IF NOT EXISTS (SELECT 1 FROM sys.availability_groups WHERE name = $(ConvertTo-SqlLiteral $AvailabilityGroupName)) +BEGIN + ALTER AVAILABILITY GROUP [$AvailabilityGroupName] JOIN WITH (CLUSTER_TYPE = WSFC); +END +"@ + Invoke-RemoteSql -Node $SecondaryNode -Query $joinQuery | Out-Null + + $databaseQuery = @" +IF EXISTS (SELECT 1 FROM sys.databases WHERE name = $(ConvertTo-SqlLiteral $DatabaseName) AND state_desc = N'RESTORING') +BEGIN + ALTER DATABASE [$DatabaseName] SET HADR AVAILABILITY GROUP = [$AvailabilityGroupName]; +END +"@ + Invoke-RemoteSql -Node $SecondaryNode -Query $databaseQuery | Out-Null +} + +function Wait-ForSynchronization { + $query = @" +SELECT CONCAT( + ar.replica_server_name COLLATE DATABASE_DEFAULT, + N'|', + ars.role_desc COLLATE DATABASE_DEFAULT, + N'|', + drs.database_state_desc COLLATE DATABASE_DEFAULT, + N'|', + drs.synchronization_state_desc COLLATE DATABASE_DEFAULT, + N'|', + drs.synchronization_health_desc COLLATE DATABASE_DEFAULT +) +FROM sys.dm_hadr_database_replica_states AS drs +JOIN sys.availability_replicas AS ar ON ar.replica_id = drs.replica_id +JOIN sys.dm_hadr_availability_replica_states AS ars ON ars.replica_id = drs.replica_id +WHERE drs.database_id = DB_ID($(ConvertTo-SqlLiteral $DatabaseName)); +"@ + + for ($attempt = 1; $attempt -le 60; $attempt++) { + $output = Invoke-LocalSql -Query $query + Write-Log "AG health attempt $attempt`: $($output -join ' | ')" + $healthText = $output -join " " + if ($healthText -match "$PrimaryNode\|PRIMARY\|ONLINE\|SYNCHRONIZED\|HEALTHY" -and + $healthText -match "$SecondaryNode\|SECONDARY\|ONLINE\|SYNCHRONIZED\|HEALTHY") { + return + } + Start-Sleep -Seconds 10 + } + + throw "Availability group $AvailabilityGroupName did not reach synchronized/healthy state. See $LogPath." +} + +function Enable-AutomaticFailover { + $query = @" +ALTER AVAILABILITY GROUP [$AvailabilityGroupName] +MODIFY REPLICA ON N'$PrimaryNode' +WITH (FAILOVER_MODE = AUTOMATIC); + +ALTER AVAILABILITY GROUP [$AvailabilityGroupName] +MODIFY REPLICA ON N'$SecondaryNode' +WITH (FAILOVER_MODE = AUTOMATIC); +"@ + + Write-Log "Enabling automatic failover after synchronized/healthy state was confirmed" + Invoke-LocalSql -Query $query | Out-Null +} + +function Verify-AutomaticFailover { + $query = @" +SELECT CONCAT( + replica_server_name COLLATE DATABASE_DEFAULT, + N'|', + failover_mode_desc COLLATE DATABASE_DEFAULT +) +FROM sys.availability_replicas +WHERE group_id = (SELECT group_id FROM sys.availability_groups WHERE name = $(ConvertTo-SqlLiteral $AvailabilityGroupName)); +"@ + + $output = Invoke-LocalSql -Query $query + $text = ($output -join " ") + Write-Log "Automatic failover verification: $text" + if ($text -notmatch "$PrimaryNode\|AUTOMATIC" -or $text -notmatch "$SecondaryNode\|AUTOMATIC") { + throw "Automatic failover verification failed. Expected AUTOMATIC for $PrimaryNode and $SecondaryNode; output: $text" + } +} + +function Ensure-AvailabilityGroupListener { + $ipClauses = ($ListenerIpList | ForEach-Object { + "(N'$_', N'255.255.255.0')" + }) -join ",`n " + + $query = @" +SET NOCOUNT ON; +IF NOT EXISTS ( + SELECT 1 + FROM sys.availability_group_listeners + WHERE dns_name = $(ConvertTo-SqlLiteral $ListenerName) +) +BEGIN + ALTER AVAILABILITY GROUP [$AvailabilityGroupName] + ADD LISTENER N'$ListenerName' + ( + WITH IP + ( + $ipClauses + ), + PORT = $ListenerPort + ); +END; +"@ + + $verifyQuery = @" +SET NOCOUNT ON; +SELECT CONCAT( + dns_name COLLATE DATABASE_DEFAULT, + N'|', + CONVERT(nvarchar(10), port) +) +FROM sys.availability_group_listeners +WHERE dns_name = $(ConvertTo-SqlLiteral $ListenerName); +"@ + + $listenerIpQuery = @" +SET NOCOUNT ON; +SELECT CONVERT(nvarchar(50), ip_address) +FROM sys.availability_group_listener_ip_addresses AS ip +JOIN sys.availability_group_listeners AS l + ON l.listener_id = ip.listener_id +WHERE l.dns_name = $(ConvertTo-SqlLiteral $ListenerName); +"@ + + $lastError = $null + for ($attempt = 1; $attempt -le 36; $attempt++) { + try { + Write-Log "Stage 5.5.1: ensuring listener $ListenerName attempt $attempt with IPs $($ListenerIpList -join ', ')" + Invoke-LocalSql -Query $query | Out-Null + + $output = Invoke-LocalSql -Query $verifyQuery + $expected = "$ListenerName|$ListenerPort" + $line = $output | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() -eq $expected } | Select-Object -First 1 + if (-not $line) { + throw "Listener name/port was not visible yet. Output: $($output -join ' | ')" + } + + $ipOutput = Invoke-LocalSql -Query $listenerIpQuery + foreach ($listenerIp in $ListenerIpList) { + if (-not ($ipOutput | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() -eq $listenerIp })) { + throw "Listener IP $listenerIp was not visible yet. Output: $($ipOutput -join ' | ')" + } + } + + Write-Log "Stage 5.5.2: listener $ListenerName verified with IPs $($ListenerIpList -join ', ')" + return + } + catch { + $lastError = $_.Exception.Message + if ($attempt -eq 36) { + throw "Availability group listener $ListenerName was not created or verified after 6 minutes. Last error: $lastError" + } + Write-Log "Listener is not ready yet; retrying in 10 seconds: $lastError" + Start-Sleep -Seconds 10 + } + } +} + +try { + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Write-Log "Task 5.4/5.5 availability group and listener automation started" + Write-Log "Stage 5.4.1: verifying database states" + Wait-ForDatabaseState -Node $PrimaryNode -ExpectedState "ONLINE" + Wait-ForDatabaseState -Node $SecondaryNode -ExpectedState "RESTORING" + + Write-Log "Stage 5.4.2: ensuring HADR endpoints" + Ensure-HadrEndpoint -Node $PrimaryNode + Ensure-HadrEndpoint -Node $SecondaryNode + Write-Log "Stage 5.4.3: validating HADR endpoints" + Test-HadrEndpoint -Node $PrimaryNode + Test-HadrEndpoint -Node $SecondaryNode + + Write-Log "Stage 5.4.4: creating availability group $AvailabilityGroupName" + Create-AvailabilityGroup + Write-Log "Stage 5.4.5: joining secondary replica and database" + Join-SecondaryReplica + Write-Log "Stage 5.4.6: waiting for synchronization" + Wait-ForSynchronization + Write-Log "Stage 5.4.7: enabling automatic failover after synchronization" + Enable-AutomaticFailover + Verify-AutomaticFailover + + # Create the listener before publishing readiness markers. A failure here + # must be visible in the WSFC task instead of leaving a healthy AG with no + # client endpoint. + Ensure-AvailabilityGroupListener + + Set-Content -Path $PrimaryReadyPath -Value "Task 5.4 complete: $AvailabilityGroupName created with $PrimaryNode primary and $SecondaryNode synchronized for $DatabaseName. Automatic failover verified." -Force + try { + Invoke-Command -ComputerName $SecondaryNode -Authentication Kerberos -ErrorAction Stop -ScriptBlock { + param($MarkerPath, $Message) + Set-Content -Path $MarkerPath -Value $Message -Force + } -ArgumentList @( + "C:\AOAGAutomation\WSFC\TASK_5_4_AVAILABILITY_GROUP_READY.txt", + "Task 5.4 complete: $AvailabilityGroupName joined on $env:COMPUTERNAME and synchronized for $DatabaseName. Automatic failover verified." + ) + } + catch { + Write-Log "Warning: could not publish the Task 5.4 marker to ${SecondaryNode}: $($_.Exception.Message)" + } + Write-Log "Task 5.4 availability group automation completed" + + Set-Content -Path $ListenerReadyPath -Value "Task 5.5 complete: $ListenerName configured on port $ListenerPort with IPs $($ListenerIpList -join ', ')." -Force + try { + Invoke-Command -ComputerName $SecondaryNode -Authentication Kerberos -ErrorAction Stop -ScriptBlock { + param($MarkerPath, $Message) + Set-Content -Path $MarkerPath -Value $Message -Force + } -ArgumentList @( + "C:\AOAGAutomation\WSFC\TASK_5_5_LISTENER_READY.txt", + "Task 5.5 complete: $ListenerName configured on port $ListenerPort with IPs $($ListenerIpList -join ', ')." + ) + } + catch { + Write-Log "Warning: could not publish the Task 5.5 marker to ${SecondaryNode}: $($_.Exception.Message)" + } + Write-Log "Task 5.5 listener automation completed" +} +catch { + Write-Log "ERROR: $($_.Exception.Message)" + throw +} diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/06-safe-planned-failover.ps1 b/automation-mssql-server-aoag-sample/scripts/aoag/06-safe-planned-failover.ps1 new file mode 100644 index 0000000..44ff282 --- /dev/null +++ b/automation-mssql-server-aoag-sample/scripts/aoag/06-safe-planned-failover.ps1 @@ -0,0 +1,185 @@ +[CmdletBinding()] +param( + [string]$AvailabilityGroupName = "TestAOAG", + [string]$DatabaseName = "AdventureWorks2025", + [int]$ReadinessTimeoutMinutes = 30 +) + +$ErrorActionPreference = "Stop" + +function Get-SqlCmdPath { + $command = Get-Command sqlcmd.exe -ErrorAction SilentlyContinue + if ($command) { return $command.Source } + + $candidate = Get-ChildItem "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC" -Filter sqlcmd.exe -Recurse -ErrorAction SilentlyContinue | + Sort-Object LastWriteTime -Descending | + Select-Object -First 1 + if (-not $candidate) { throw "sqlcmd.exe was not found on $env:COMPUTERNAME." } + $candidate.FullName +} + +function ConvertTo-SqlLiteral { + param([string]$Value) + "N'" + $Value.Replace("'", "''") + "'" +} + +function Invoke-LocalSql { + param([string]$Query) + + $arguments = @( + "-S", "localhost", "-E", "-C", "-b", "-r", "0", + "-h", "-1", "-W", "-w", "65535", "-l", "60", "-Q", $Query + ) + $output = & (Get-SqlCmdPath) @arguments 2>&1 + if ($LASTEXITCODE -ne 0) { + $details = ($output | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() }) -join " | " + throw "SQL command failed on $env:COMPUTERNAME`: $details" + } + @($output | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() }) +} + +function Invoke-RemoteSql { + param( + [Parameter(Mandatory)] + [string]$ComputerName, + [Parameter(Mandatory)] + [string]$Query + ) + + Invoke-Command -ComputerName $ComputerName -Authentication Kerberos -ErrorAction Stop -ScriptBlock { + param([string]$RemoteQuery) + $ErrorActionPreference = "Stop" + $command = Get-Command sqlcmd.exe -ErrorAction SilentlyContinue + if (-not $command) { + $command = Get-ChildItem "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC" -Filter sqlcmd.exe -Recurse -ErrorAction SilentlyContinue | + Sort-Object LastWriteTime -Descending | Select-Object -First 1 + } + if (-not $command) { throw "sqlcmd.exe was not found on $env:COMPUTERNAME." } + $sqlcmdPath = if ($command -is [System.IO.FileInfo]) { $command.FullName } else { $command.Source } + $output = & $sqlcmdPath -S localhost -E -C -b -r 0 -h -1 -W -w 65535 -l 60 -Q $RemoteQuery 2>&1 + if ($LASTEXITCODE -ne 0) { + $details = ($output | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() }) -join " | " + throw "SQL command failed on $env:COMPUTERNAME`: $details" + } + @($output | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() }) + } -ArgumentList $Query +} + +$statusQuery = @" +SET NOCOUNT ON; +SELECT CONCAT( + ar.replica_server_name COLLATE DATABASE_DEFAULT, N'|', + ars.role_desc COLLATE DATABASE_DEFAULT, N'|', + ars.connected_state_desc COLLATE DATABASE_DEFAULT, N'|', + drs.database_state_desc COLLATE DATABASE_DEFAULT, N'|', + drs.synchronization_state_desc COLLATE DATABASE_DEFAULT, N'|', + drs.synchronization_health_desc COLLATE DATABASE_DEFAULT, N'|', + CONVERT(nvarchar(5), drs.is_suspended) +) +FROM sys.availability_groups AS ag +JOIN sys.availability_replicas AS ar ON ar.group_id = ag.group_id +JOIN sys.dm_hadr_availability_replica_states AS ars + ON ars.group_id = ar.group_id AND ars.replica_id = ar.replica_id AND ars.is_local = 1 +JOIN sys.dm_hadr_database_replica_states AS drs + ON drs.group_id = ag.group_id AND drs.replica_id = ar.replica_id +WHERE ag.name = $(ConvertTo-SqlLiteral $AvailabilityGroupName) + AND drs.database_id = DB_ID($(ConvertTo-SqlLiteral $DatabaseName)); +"@ + +$partnerQuery = @" +SET NOCOUNT ON; +SELECT TOP (1) replica_server_name +FROM sys.availability_replicas +WHERE group_id = (SELECT group_id FROM sys.availability_groups WHERE name = $(ConvertTo-SqlLiteral $AvailabilityGroupName)) + AND replica_server_name <> @@SERVERNAME; +"@ + +function Get-StatusLine { + param([string[]]$Output) + $Output | ForEach-Object { [string]$_ } | Where-Object { $_ -match "\|" } | Select-Object -First 1 +} + +function Wait-ForLocalState { + param( + [Parameter(Mandatory)] [ValidateSet("PRIMARY", "SECONDARY")] [string]$ExpectedRole, + [Parameter(Mandatory)] [string]$Node + ) + + $deadline = (Get-Date).AddMinutes($ReadinessTimeoutMinutes) + $last = "no status" + do { + try { + $output = if ($Node -ieq $env:COMPUTERNAME -or $Node -ieq "localhost") { + Invoke-LocalSql -Query $statusQuery + } + else { + Invoke-RemoteSql -ComputerName $Node -Query $statusQuery + } + $line = Get-StatusLine -Output $output + if ($line) { + $last = $line.Trim() + Write-Host "$Node AG state: $last" + if ($last -match "\|$ExpectedRole\|CONNECTED\|ONLINE\|SYNCHRONIZED\|HEALTHY\|0$") { + return $last + } + } + } + catch { + Write-Host "Waiting for $Node to reach $ExpectedRole/CONNECTED/ONLINE/SYNCHRONIZED/HEALTHY: $($_.Exception.Message)" + } + + if ((Get-Date) -ge $deadline) { + throw "$Node did not reach $ExpectedRole/CONNECTED/ONLINE/SYNCHRONIZED/HEALTHY within $ReadinessTimeoutMinutes minutes. Last state: $last" + } + Start-Sleep -Seconds 30 + } while ($true) +} + +# The command must be run on the synchronized target secondary. It is deliberately +# guarded so an unplanned outage cannot be mistaken for a safe planned failover. +$preflightDeadline = (Get-Date).AddMinutes($ReadinessTimeoutMinutes) +$preflightLast = "no local AG/database status" +do { + try { + $line = Get-StatusLine -Output (Invoke-LocalSql -Query $statusQuery) + if ($line) { + $preflightLast = $line.Trim() + $fields = $preflightLast -split "\|", -1 + if ($fields.Count -ge 7) { + $role = $fields[1] + $connected = $fields[2] + $databaseState = $fields[3] + $syncState = $fields[4] + $health = $fields[5] + $suspended = $fields[6] + Write-Host "Local preflight: role=$role connected=$connected database=$databaseState sync=$syncState health=$health suspended=$suspended" + if ($role -eq "SECONDARY" -and $connected -eq "CONNECTED" -and + $databaseState -eq "ONLINE" -and $syncState -eq "SYNCHRONIZED" -and + $health -eq "HEALTHY" -and $suspended -eq "0") { + break + } + } + } + } + catch { + Write-Host "Waiting for a healthy secondary: $($_.Exception.Message)" + } + + if ((Get-Date) -ge $preflightDeadline) { + throw "Planned failover refused after $ReadinessTimeoutMinutes minutes. The local replica must be SECONDARY, CONNECTED, ONLINE, SYNCHRONIZED, HEALTHY, and not suspended. Current state: $preflightLast" + } + Start-Sleep -Seconds 30 +} while ($true) + +$partnerNode = (Invoke-LocalSql -Query $partnerQuery | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() } | Select-Object -First 1).Trim() +if ([string]::IsNullOrWhiteSpace($partnerNode)) { + throw "Could not identify the former primary replica from availability group $AvailabilityGroupName." +} + +Write-Host "Preflight passed. Performing planned failover of $AvailabilityGroupName to $env:COMPUTERNAME." +Invoke-LocalSql -Query "ALTER AVAILABILITY GROUP [$AvailabilityGroupName] FAILOVER;" | Out-Null + +Wait-ForLocalState -ExpectedRole "PRIMARY" -Node $env:COMPUTERNAME | Out-Null +Wait-ForLocalState -ExpectedRole "SECONDARY" -Node $partnerNode | Out-Null + +Write-Host "Planned failover completed. $env:COMPUTERNAME is primary and $partnerNode has rejoined as a synchronized secondary." diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/07-reconcile-availability-group.ps1 b/automation-mssql-server-aoag-sample/scripts/aoag/07-reconcile-availability-group.ps1 new file mode 100644 index 0000000..54a62ac --- /dev/null +++ b/automation-mssql-server-aoag-sample/scripts/aoag/07-reconcile-availability-group.ps1 @@ -0,0 +1,251 @@ +[CmdletBinding()] +param( + [string]$AvailabilityGroupName = "TestAOAG", + [string]$DatabaseName = "AdventureWorks2025", + [string]$ClusterName = "SQLAGCLUSTER", + [string]$ListenerName = "AOAG-LSN", + [int]$ListenerPort = 1433, + [string]$ListenerIps = "10.0.20.30,10.0.30.30", + [int]$ReadinessTimeoutMinutes = 60, + [string]$SetupDir = "C:\AOAGAutomation\WSFC" +) + +$ErrorActionPreference = "Stop" +$LogPath = Join-Path $SetupDir "reconcile-availability-group.log" +$ReadyPath = Join-Path $SetupDir "AG_RECONCILIATION_READY.txt" +$ListenerIpList = @( + $ListenerIps -split "," | + ForEach-Object { "$($_)".Trim() } | + Where-Object { -not [string]::IsNullOrWhiteSpace($_) } +) + +if ($ListenerIpList.Count -lt 2) { + throw "ListenerIps must contain both SQL subnet listener addresses. Received: '$ListenerIps'." +} + +function Write-Log { + param([string]$Message) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Add-Content -Path $LogPath -Value ("{0:s} {1}" -f (Get-Date), $Message) +} + +function Get-SqlCmdPath { + $command = Get-Command sqlcmd.exe -ErrorAction SilentlyContinue + if ($command) { return $command.Source } + $candidate = Get-ChildItem "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC" -Filter sqlcmd.exe -Recurse -ErrorAction SilentlyContinue | + Sort-Object LastWriteTime -Descending | Select-Object -First 1 + if (-not $candidate) { throw "sqlcmd.exe was not found on $env:COMPUTERNAME." } + $candidate.FullName +} + +function SqlLiteral { + param([string]$Value) + "N'" + $Value.Replace("'", "''") + "'" +} + +function Invoke-LocalSql { + param([string]$Query) + $output = & (Get-SqlCmdPath) -S localhost -E -C -b -r 0 -h -1 -W -w 65535 -l 60 -Q $Query 2>&1 + if ($LASTEXITCODE -ne 0) { + $details = ($output | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() }) -join " | " + throw "SQL command failed on $env:COMPUTERNAME`: $details" + } + @($output | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() }) +} + +function Wait-ForClusterNode { + Import-Module FailoverClusters -ErrorAction Stop + $deadline = (Get-Date).AddMinutes($ReadinessTimeoutMinutes) + do { + try { + $clusterService = Get-Service -Name ClusSvc -ErrorAction Stop + if ($clusterService.Status -ne "Running") { + Start-Service -Name ClusSvc -ErrorAction Stop + Start-Sleep -Seconds 10 + } + $localNode = Get-ClusterNode -Cluster $ClusterName -Name $env:COMPUTERNAME -ErrorAction Stop + if ($localNode.State -eq "Up") { + Write-Log "Cluster node $env:COMPUTERNAME is Up." + return + } + + Write-Log "Cluster node state is $($localNode.State); clearing quarantine and starting the node." + Start-ClusterNode -Name $env:COMPUTERNAME -ClearQuarantine -ErrorAction Stop | Out-Null + } + catch { + Write-Log "Waiting for WSFC node readiness: $($_.Exception.Message)" + } + Start-Sleep -Seconds 30 + } while ((Get-Date) -lt $deadline) + + throw "Cluster node $env:COMPUTERNAME did not reach Up within $ReadinessTimeoutMinutes minutes." +} + +function Wait-ForSqlService { + $deadline = (Get-Date).AddMinutes($ReadinessTimeoutMinutes) + do { + try { + $service = Get-Service -Name MSSQLSERVER -ErrorAction Stop + if ($service.Status -ne "Running") { + Start-Service -Name MSSQLSERVER -ErrorAction Stop + } + if ((Get-Service -Name MSSQLSERVER).Status -eq "Running") { + return + } + } + catch { + Write-Log "Waiting for SQL Server service: $($_.Exception.Message)" + } + Start-Sleep -Seconds 15 + } while ((Get-Date) -lt $deadline) + + throw "SQL Server did not reach Running within $ReadinessTimeoutMinutes minutes." +} + +function Wait-ForHealthyLocalReplica { + $query = @" +SET NOCOUNT ON; +SELECT CONCAT( + ar.replica_server_name COLLATE DATABASE_DEFAULT, N'|', + ars.role_desc COLLATE DATABASE_DEFAULT, N'|', + ars.connected_state_desc COLLATE DATABASE_DEFAULT, N'|', + drs.database_state_desc COLLATE DATABASE_DEFAULT, N'|', + drs.synchronization_state_desc COLLATE DATABASE_DEFAULT, N'|', + drs.synchronization_health_desc COLLATE DATABASE_DEFAULT, N'|', + CONVERT(nvarchar(5), drs.is_suspended) +) +FROM sys.availability_groups AS ag +JOIN sys.availability_replicas AS ar ON ar.group_id = ag.group_id +JOIN sys.dm_hadr_availability_replica_states AS ars + ON ars.group_id = ar.group_id AND ars.replica_id = ar.replica_id AND ars.is_local = 1 +JOIN sys.dm_hadr_database_replica_states AS drs + ON drs.group_id = ag.group_id AND drs.replica_id = ar.replica_id +WHERE ag.name = $(SqlLiteral $AvailabilityGroupName) + AND drs.database_id = DB_ID($(SqlLiteral $DatabaseName)); +"@ + + $deadline = (Get-Date).AddMinutes($ReadinessTimeoutMinutes) + $last = "no AG/database status" + do { + try { + $rows = Invoke-LocalSql -Query $query + if ($rows.Count -gt 0) { + $last = ($rows -join " | ").Trim() + Write-Log "Local AG state: $last" + if ($rows -match "\|(?:PRIMARY|SECONDARY)\|CONNECTED\|ONLINE\|SYNCHRONIZED\|HEALTHY\|0$") { + return + } + } + else { + Write-Log "AG/database status is not visible yet." + } + } + catch { + Write-Log "Waiting for AG recovery/synchronization: $($_.Exception.Message)" + } + Start-Sleep -Seconds 30 + } while ((Get-Date) -lt $deadline) + + throw "Local AG replica did not return to CONNECTED/ONLINE/SYNCHRONIZED/HEALTHY within $ReadinessTimeoutMinutes minutes. Last state: $last" +} + +function Ensure-AvailabilityGroupListener { + $ipClauses = ($ListenerIpList | ForEach-Object { + "(N'$_', N'255.255.255.0')" + }) -join ",`n " + + $createQuery = @" +SET NOCOUNT ON; +IF NOT EXISTS ( + SELECT 1 + FROM sys.availability_group_listeners + WHERE dns_name = N'$($ListenerName.Replace("'", "''"))' +) +BEGIN + ALTER AVAILABILITY GROUP [$AvailabilityGroupName] + ADD LISTENER N'$($ListenerName.Replace("'", "''"))' + ( + WITH IP + ( + $ipClauses + ), + PORT = $ListenerPort + ); +END; +"@ + + $verifyQuery = @" +SET NOCOUNT ON; +SELECT CONCAT( + dns_name COLLATE DATABASE_DEFAULT, + N'|', + CONVERT(nvarchar(10), port) +) +FROM sys.availability_group_listeners +WHERE dns_name = N'$($ListenerName.Replace("'", "''"))'; +"@ + + $listenerIpQuery = @" +SET NOCOUNT ON; +SELECT CONVERT(nvarchar(50), ip_address) +FROM sys.availability_group_listener_ip_addresses AS ip +JOIN sys.availability_group_listeners AS l + ON l.listener_id = ip.listener_id +WHERE l.dns_name = N'$($ListenerName.Replace("'", "''"))'; +"@ + + $roleQuery = @" +SET NOCOUNT ON; +SELECT ars.role_desc +FROM sys.dm_hadr_availability_replica_states AS ars +WHERE ars.is_local = 1; +"@ + + for ($attempt = 1; $attempt -le 36; $attempt++) { + try { + $role = [string]((Invoke-LocalSql -Query $roleQuery) | Select-Object -First 1) + $role = $role.Trim() + if ($role -eq "PRIMARY") { + Write-Log "Ensuring listener $ListenerName from primary $env:COMPUTERNAME attempt $attempt" + Invoke-LocalSql -Query $createQuery | Out-Null + } + else { + Write-Log "Local replica role is '$role'; the primary owns listener creation. Verifying listener state locally." + } + + $expected = "$ListenerName|$ListenerPort" + $listener = Invoke-LocalSql -Query $verifyQuery + if (-not ($listener | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() -eq $expected })) { + throw "Listener name/port is not visible yet. Output: $($listener -join ' | ')" + } + + $ipOutput = Invoke-LocalSql -Query $listenerIpQuery + foreach ($listenerIp in $ListenerIpList) { + if (-not ($ipOutput | ForEach-Object { [string]$_ } | Where-Object { $_.Trim() -eq $listenerIp })) { + throw "Listener IP $listenerIp is not visible yet. Output: $($ipOutput -join ' | ')" + } + } + Write-Log "Listener $ListenerName verified with IPs $($ListenerIpList -join ', ')" + return + } + catch { + if ($attempt -eq 36) { throw } + Write-Log "Listener reconciliation attempt $attempt failed: $($_.Exception.Message)" + Start-Sleep -Seconds 10 + } + } +} + +try { + Write-Log "Post-reboot AG reconciliation started on $env:COMPUTERNAME." + Wait-ForSqlService + Wait-ForClusterNode + Wait-ForHealthyLocalReplica + Ensure-AvailabilityGroupListener + Set-Content -Path $ReadyPath -Value "Local AG replica and listener $ListenerName are healthy and synchronized on $env:COMPUTERNAME." -Force + Write-Log "Post-reboot AG reconciliation completed on $env:COMPUTERNAME." +} +catch { + Write-Log "ERROR: $($_.Exception.Message)" + throw +} diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/README.md b/automation-mssql-server-aoag-sample/scripts/aoag/README.md new file mode 100644 index 0000000..2d6dbff --- /dev/null +++ b/automation-mssql-server-aoag-sample/scripts/aoag/README.md @@ -0,0 +1,49 @@ +# Availability Group Automation + +This folder contains the database and availability-group automation phase: + +1. Create or restore demo databases on SQL1. +2. Back up full and transaction-log files. +3. Restore the databases on SQL2 with `NORECOVERY`. +4. Create or join the availability group. +5. Create and verify the native availability group listener. + +The Terraform bootstrap now runs these stages automatically on SQL1 after the +WSFC and database restore stages: + +- `04-prepare-sample-database.ps1` restores the configured database online on + SQL1 and with `NORECOVERY` on SQL2. +- `05-configure-availability-group.ps1` creates the configured HADR endpoint on + both SQL nodes, creates the configured AG with manual backup/restore seeding + and synchronous automatic failover, + joins SQL2, attaches the already-restored database to the AG, waits for + online/synchronized/healthy replicas, then enables automatic failover and + creates the configured native listener. + +The script writes `TASK_5_4_AVAILABILITY_GROUP_READY.txt` after replica +synchronization and `TASK_5_5_LISTENER_READY.txt` after the listener and both +listener IPs are verified. The listener is created by SQL1 after Task 5.4; +SQL2 receives the same readiness marker over Kerberos. + +For failover testing, run the guarded planned-failover script on the target +secondary only after both replicas are synchronized: + +```powershell +powershell.exe -ExecutionPolicy Bypass -File C:\AOAGAutomation\WSFC\06-safe-planned-failover.ps1 +``` + +The script waits up to 30 minutes for the target secondary to be connected, +online, synchronized, healthy, and not suspended before it performs a planned +failover. Do not test failover by stopping the primary VM; that is an unplanned +failover and can leave the former primary in the documented `REVERTING` state +while it performs undo-of-redo recovery. Once the former primary returns, wait +for it to become synchronized again and run the same guarded script there to +fail back safely. + +Each SQL node also registers `07-reconcile-availability-group.ps1` as a startup +task. It starts the local cluster service if needed, clears a lab-node +quarantine after a reboot, and waits for the local AG database to be +`ONLINE / SYNCHRONIZED / HEALTHY`; the primary creates the listener if needed +and both nodes verify its name, port, and IPs before writing +`AG_RECONCILIATION_READY.txt`. It never restores, recovers, drops, or rebuilds +the database, so it does not replace the AG's normal synchronization process. diff --git a/automation-mssql-server-aoag-sample/scripts/dc/01-configure-domain-controller.ps1 b/automation-mssql-server-aoag-sample/scripts/dc/01-configure-domain-controller.ps1 new file mode 100644 index 0000000..f9f749b --- /dev/null +++ b/automation-mssql-server-aoag-sample/scripts/dc/01-configure-domain-controller.ps1 @@ -0,0 +1,647 @@ +<# +.SYNOPSIS +Configures DC-VM as the first domain controller for the AOAG lab. + +.DESCRIPTION +This script is intentionally separate from Terraform so domain passwords are +not stored in Terraform state. It runs in stages and registers a temporary +startup task so it can continue after the AD DS promotion reboot. + +.EXAMPLE +powershell.exe -ExecutionPolicy Bypass -File .\01-configure-domain-controller.ps1 -DomainAdminPasswordPlain '' +#> + +[CmdletBinding()] +param( + [string]$DomainName = "mssqlaoag.demo", + [string]$NetbiosName = "MSSQLAOAG", + [string]$DomainAdminUser = "domainadmin", + [string]$SqlServiceAccountUser = "sqlsa", + [string]$LocalAdminUser = "opc", + [string]$TargetComputerName = "DC-VM", + [string]$DcPrivateIp = "10.0.10.10", + [string]$BootstrapDnsServer = "169.254.169.254", + [string]$WitnessPath = "C:\ClusterWitness", + [string]$WitnessShareName = "ClusterWitness", + [string]$SetupDir = "C:\AOAGAutomation\DC", + [string]$DomainAdminPasswordPlain, + [string]$SqlServiceAccountPasswordPlain, + [string]$LocalAdminPasswordPlain, + [switch]$UseStoredSecret, + [switch]$NonInteractive +) + +$ErrorActionPreference = "Stop" +$TaskName = "AOAG-Configure-DomainController" +$InstalledScriptPath = Join-Path $SetupDir "01-configure-domain-controller.ps1" +$StagePath = Join-Path $SetupDir "stage.txt" +$SecretPath = Join-Path $SetupDir "domainadmin-password.dpapi" +$SqlServiceSecretPath = Join-Path $SetupDir "sql-service-password.dpapi" +$LogPath = Join-Path $SetupDir "configure-dc.log" +$ReadyPath = Join-Path $SetupDir "DOMAIN_READY.txt" +$VerifyPath = Join-Path $SetupDir "DOMAIN_VERIFY.json" +$SecretEntropy = "mssql-aoag-dc-bootstrap-v1" +$PostPromotionSettleSeconds = 60 + +function Wait-ForBootstrapSettle { + param( + [Parameter(Mandatory)] + [string]$Phase, + [Parameter(Mandatory)] + [int]$Seconds + ) + + Write-Log "STATUS: settling-$Phase seconds=$Seconds" + Write-Log "Waiting $Seconds seconds for $Phase services and DNS state to settle." + Start-Sleep -Seconds $Seconds +} + +function Write-Log { + param([string]$Message) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Add-Content -Path $LogPath -Value ("{0:s} {1}" -f (Get-Date), $Message) +} + +function Assert-RunningElevated { + $identity = [Security.Principal.WindowsIdentity]::GetCurrent() + $principal = [Security.Principal.WindowsPrincipal]::new($identity) + $isAdmin = $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) + $isSystem = $identity.Name -eq "NT AUTHORITY\SYSTEM" + + Write-Log "Running as $($identity.Name). IsAdmin=$isAdmin IsSystem=$isSystem" + + if (-not ($isAdmin -or $isSystem)) { + throw "DC automation must run elevated or as LocalSystem." + } +} + +function Set-StrictAcl { + param([string]$Path) + & icacls.exe $Path /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null +} + +function Add-LocalGroupMemberByNet { + param( + [string]$Group, + [string]$Member + ) + + $groupResult = Invoke-NetCommand -Arguments @("localgroup", $Group, $Member, "/add") + Write-CommandOutput -Label "net localgroup $($Group):" -Output $groupResult.Output + + $groupOutput = ($groupResult.Output -join "`n") + $alreadyMember = ($groupResult.ExitCode -eq 1378) -or + ($groupOutput -match "System error 1378") -or + ($groupOutput -match "already a member of the group") + + if ($alreadyMember) { + Write-Log "$Member is already a member of $Group; continuing." + } + elseif ($groupResult.ExitCode -ne 0) { + Write-Log "Local group membership warning for $Member in $Group. net.exe exit code $($groupResult.ExitCode)." + } +} + +function Protect-PlainText { + param([string]$PlainText) + Add-Type -AssemblyName System.Security + $bytes = [Text.Encoding]::UTF8.GetBytes($PlainText) + $entropy = [Text.Encoding]::UTF8.GetBytes($SecretEntropy) + $protected = [Security.Cryptography.ProtectedData]::Protect( + $bytes, + $entropy, + [Security.Cryptography.DataProtectionScope]::LocalMachine + ) + [Convert]::ToBase64String($protected) +} + +function Unprotect-PlainText { + param([string]$ProtectedText) + Add-Type -AssemblyName System.Security + $bytes = [Convert]::FromBase64String($ProtectedText) + $entropy = [Text.Encoding]::UTF8.GetBytes($SecretEntropy) + $plainBytes = [Security.Cryptography.ProtectedData]::Unprotect( + $bytes, + $entropy, + [Security.Cryptography.DataProtectionScope]::LocalMachine + ) + [Text.Encoding]::UTF8.GetString($plainBytes) +} + +function Convert-SecureStringToPlainText { + param([securestring]$SecureString) + $bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString) + try { + [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr) + } + finally { + [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr) + } +} + +function Save-Secret { + param([string]$PlainText) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Set-Content -Path $SecretPath -Value (Protect-PlainText -PlainText $PlainText) -Force + Set-StrictAcl -Path $SecretPath +} + +function Save-SqlServiceSecret { + param([string]$PlainText) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Set-Content -Path $SqlServiceSecretPath -Value (Protect-PlainText -PlainText $PlainText) -Force + Set-StrictAcl -Path $SqlServiceSecretPath +} + +function Get-PlainPassword { + if ($DomainAdminPasswordPlain) { + Save-Secret -PlainText $DomainAdminPasswordPlain + return $DomainAdminPasswordPlain + } + + if (Test-Path $SecretPath) { + return Unprotect-PlainText -ProtectedText (Get-Content -Path $SecretPath -Raw) + } + + if ($NonInteractive -or $UseStoredSecret) { + throw "DomainAdminPasswordPlain was not supplied and no stored domain-admin secret exists." + } + + $secure = Read-Host -Prompt "Password for $DomainName\$DomainAdminUser" -AsSecureString + $plain = Convert-SecureStringToPlainText -SecureString $secure + Save-Secret -PlainText $plain + return $plain +} + +function Get-SqlServicePlainPassword { + param([string]$DefaultPlainPassword) + + if ($SqlServiceAccountPasswordPlain) { + Save-SqlServiceSecret -PlainText $SqlServiceAccountPasswordPlain + return $SqlServiceAccountPasswordPlain + } + + if (Test-Path $SqlServiceSecretPath) { + return Unprotect-PlainText -ProtectedText (Get-Content -Path $SqlServiceSecretPath -Raw) + } + + if (-not $DefaultPlainPassword) { + throw "SqlServiceAccountPasswordPlain was not supplied and no stored SQL service secret exists." + } + + Write-Log "SQL service account password was not supplied; reusing the supplied domain-admin password." + Save-SqlServiceSecret -PlainText $DefaultPlainPassword + return $DefaultPlainPassword +} + +function Get-Stage { + if (Test-Path $StagePath) { + return (Get-Content -Path $StagePath -Raw).Trim() + } + "rename" +} + +function Set-Stage { + param([string]$Stage) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Set-Content -Path $StagePath -Value $Stage -Force + Write-Log "Stage set to $Stage" +} + +function Write-CommandOutput { + param( + [string]$Label, + [object[]]$Output + ) + + foreach ($line in $Output) { + if ($null -ne $line -and "$line" -ne "") { + Write-Log "$Label $line" + } + } +} + +function Invoke-NetCommand { + param( + [Parameter(Mandatory)] + [string[]]$Arguments + ) + + $previousErrorActionPreference = $ErrorActionPreference + $ErrorActionPreference = "Continue" + try { + $output = & net.exe @Arguments 2>&1 + $exitCode = $LASTEXITCODE + } + finally { + $ErrorActionPreference = $previousErrorActionPreference + } + + [pscustomobject]@{ + ExitCode = $exitCode + Output = $output + } +} + +function Ensure-LocalAdminAccess { + param([string]$PlainPassword) + + if ([string]::IsNullOrWhiteSpace($PlainPassword)) { + Write-Log "Local Windows admin password was not supplied; skipping local admin password setup" + return + } + + Write-Log "Configuring local Administrator and $LocalAdminUser for bootstrap RDP access" + + $adminResult = Invoke-NetCommand -Arguments @("user", "Administrator", $PlainPassword, "/logonpasswordchg:no", "/active:yes") + Write-CommandOutput -Label "net user Administrator:" -Output $adminResult.Output + if ($adminResult.ExitCode -ne 0) { + throw "Failed to configure local Administrator account. net.exe exit code $($adminResult.ExitCode)." + } + + if ($LocalAdminUser -and $LocalAdminUser -ne "Administrator") { + $userResult = Invoke-NetCommand -Arguments @("user", $LocalAdminUser, $PlainPassword, "/logonpasswordchg:no", "/active:yes") + Write-CommandOutput -Label "net user $($LocalAdminUser):" -Output $userResult.Output + + if ($userResult.ExitCode -ne 0) { + $addUserResult = Invoke-NetCommand -Arguments @("user", $LocalAdminUser, $PlainPassword, "/add", "/logonpasswordchg:no", "/active:yes") + Write-CommandOutput -Label "net user $LocalAdminUser /add:" -Output $addUserResult.Output + if ($addUserResult.ExitCode -ne 0) { + throw "Failed to create local $LocalAdminUser account. net.exe exit code $($addUserResult.ExitCode)." + } + } + + Add-LocalGroupMemberByNet -Group "Administrators" -Member $LocalAdminUser + Add-LocalGroupMemberByNet -Group "Remote Desktop Users" -Member $LocalAdminUser + } +} + +function Register-ResumeTask { + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + + $currentScript = $PSCommandPath + if ($currentScript -and ($currentScript -ne $InstalledScriptPath)) { + Copy-Item -LiteralPath $currentScript -Destination $InstalledScriptPath -Force + } + + Set-StrictAcl -Path $InstalledScriptPath + + $args = @( + "-NoProfile", + "-ExecutionPolicy Bypass", + "-File `"$InstalledScriptPath`"", + "-DomainName `"$DomainName`"", + "-NetbiosName `"$NetbiosName`"", + "-DomainAdminUser `"$DomainAdminUser`"", + "-SqlServiceAccountUser `"$SqlServiceAccountUser`"", + "-LocalAdminUser `"$LocalAdminUser`"", + "-TargetComputerName `"$TargetComputerName`"", + "-DcPrivateIp `"$DcPrivateIp`"", + "-WitnessPath `"$WitnessPath`"", + "-WitnessShareName `"$WitnessShareName`"", + "-SetupDir `"$SetupDir`"", + "-UseStoredSecret", + "-NonInteractive" + ) -join " " + + $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument $args + $trigger = New-ScheduledTaskTrigger -AtStartup + Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger -User "SYSTEM" -RunLevel Highest -Force | Out-Null + Write-Log "Registered resume task $TaskName" +} + +function Remove-ResumeTask { + Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false -ErrorAction SilentlyContinue +} + +function Enable-LabRdp { + Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0 + Enable-NetFirewallRule -DisplayGroup "Remote Desktop" -ErrorAction SilentlyContinue | Out-Null + Write-Log "Enabled Remote Desktop firewall rules" +} + +function Set-DcDns { + param([switch]$DomainReady) + + $servers = if ($DomainReady) { + @($DcPrivateIp, "127.0.0.1") + } + else { + # Do not point the new DC at itself before DNS is installed. The OCI + # resolver keeps the instance reachable during feature installation and + # the AD DS promotion reboot. + @($BootstrapDnsServer) + } + + Get-NetAdapter | Where-Object { $_.Status -eq "Up" } | ForEach-Object { + try { + Set-DnsClientServerAddress -InterfaceIndex $_.ifIndex -ServerAddresses $servers + Write-Log "Set DNS servers on adapter $($_.Name) to $($servers -join ', ')" + } + catch { + Write-Log "DNS update warning on adapter $($_.Name): $($_.Exception.Message)" + } + } +} + +function Ensure-DnsForwarders { + if (-not (Get-Command Set-DnsServerForwarder -ErrorAction SilentlyContinue)) { + Write-Log "DNS Server cmdlets are not available yet; skipping forwarder configuration." + return + } + + Write-Log "Configuring DNS forwarders after core domain setup" + try { + Set-DnsServerForwarder -IPAddress @("169.254.169.254", "1.1.1.1") -UseRootHint:$false -ErrorAction Stop + Clear-DnsServerCache -ErrorAction SilentlyContinue + Write-Log "Configured DNS forwarders to OCI VCN resolver and Cloudflare DNS." + } + catch { + Write-Log "DNS forwarder configuration warning: $($_.Exception.Message)" + } +} + +function Test-DomainReady { + try { + Import-Module ActiveDirectory -ErrorAction Stop + Get-ADDomain -Identity $DomainName -Server "localhost" -ErrorAction Stop | Out-Null + return $true + } + catch { + return $false + } +} + +function Wait-ForDomain { + for ($i = 1; $i -le 80; $i++) { + if (Test-DomainReady) { + Write-Log "Domain $DomainName is available" + return + } + + Write-Log "Waiting for AD DS readiness attempt $($i): Active Directory is not available yet." + Start-Sleep -Seconds 15 + } + + throw "AD DS did not become ready in time." +} + +function Ensure-DomainAdmin { + param([securestring]$Password) + + Import-Module ActiveDirectory -ErrorAction Stop + $upn = "$DomainAdminUser@$DomainName" + $existing = Get-ADUser -LDAPFilter "(sAMAccountName=$DomainAdminUser)" -Server "localhost" -ErrorAction SilentlyContinue + + if (-not $existing) { + New-ADUser ` + -Name $DomainAdminUser ` + -SamAccountName $DomainAdminUser ` + -UserPrincipalName $upn ` + -AccountPassword $Password ` + -Enabled $true ` + -ChangePasswordAtLogon $false ` + -CannotChangePassword $false ` + -PasswordNeverExpires $true ` + -Description "AOAG lab domain administrator" + Write-Log "Created domain user $upn" + } + else { + Set-ADAccountPassword -Identity $DomainAdminUser -Reset -NewPassword $Password + Enable-ADAccount -Identity $DomainAdminUser -ErrorAction Stop + Unlock-ADAccount -Identity $DomainAdminUser -ErrorAction SilentlyContinue + Set-ADAccountControl ` + -Identity $DomainAdminUser ` + -Enabled $true ` + -PasswordNeverExpires $true ` + -CannotChangePassword $false ` + -PasswordNotRequired $false + Set-ADUser ` + -Identity $DomainAdminUser ` + -PasswordNeverExpires $true ` + -ChangePasswordAtLogon $false ` + -CannotChangePassword $false ` + -UserPrincipalName $upn ` + -Description "AOAG lab domain administrator" + Write-Log "Updated domain user $upn" + } + + foreach ($group in @("Domain Admins", "Enterprise Admins", "Administrators", "Remote Desktop Users")) { + $isMember = Get-ADGroupMember -Identity $group -Recursive -ErrorAction Stop | + Where-Object { $_.SamAccountName -ieq $DomainAdminUser } + + if (-not $isMember) { + Add-ADGroupMember -Identity $group -Members $DomainAdminUser -ErrorAction Stop + Write-Log "Added $DomainAdminUser to $group" + } + else { + Write-Log "$DomainAdminUser is already a member of $group" + } + } + + $account = Get-ADUser -Identity $DomainAdminUser -Server "localhost" -Properties Enabled, LockedOut, PasswordExpired, PasswordNeverExpires, UserPrincipalName + if (-not $account.Enabled -or $account.LockedOut -or $account.PasswordExpired -or -not $account.PasswordNeverExpires -or $account.UserPrincipalName -ine $upn) { + throw "Domain administrator account verification failed. Enabled=$($account.Enabled); LockedOut=$($account.LockedOut); PasswordExpired=$($account.PasswordExpired); PasswordNeverExpires=$($account.PasswordNeverExpires); UPN=$($account.UserPrincipalName)." + } + + foreach ($group in @("Domain Admins", "Enterprise Admins", "Administrators", "Remote Desktop Users")) { + $verifiedMember = Get-ADGroupMember -Identity $group -Recursive -ErrorAction Stop | + Where-Object { $_.SamAccountName -ieq $DomainAdminUser } + if (-not $verifiedMember) { + throw "Domain administrator account is not a member of $group." + } + } + + Write-Log "Verified $upn is enabled, unlocked, password-valid, and a member of the required administrative and RDP groups" +} + +function Ensure-SqlServiceAccount { + param([securestring]$Password) + + Import-Module ActiveDirectory -ErrorAction Stop + $upn = "$SqlServiceAccountUser@$DomainName" + $existing = Get-ADUser -LDAPFilter "(sAMAccountName=$SqlServiceAccountUser)" -ErrorAction SilentlyContinue + + if (-not $existing) { + New-ADUser ` + -Name $SqlServiceAccountUser ` + -SamAccountName $SqlServiceAccountUser ` + -UserPrincipalName $upn ` + -AccountPassword $Password ` + -Enabled $true ` + -PasswordNeverExpires $true ` + -Description "AOAG lab SQL Server service account" + Write-Log "Created SQL Server service account $upn" + } + else { + Set-ADAccountPassword -Identity $SqlServiceAccountUser -Reset -NewPassword $Password + Enable-ADAccount -Identity $SqlServiceAccountUser + Set-ADUser -Identity $SqlServiceAccountUser -PasswordNeverExpires $true -UserPrincipalName $upn -Description "AOAG lab SQL Server service account" + Write-Log "Updated SQL Server service account $upn" + } +} + +function Ensure-WitnessShare { + New-Item -ItemType Directory -Path $WitnessPath -Force | Out-Null + $sqlServiceAcl = "$NetbiosName\$SqlServiceAccountUser" + ":(OI)(CI)(M)" + & icacls.exe $WitnessPath /inheritance:e /grant "Administrators:(OI)(CI)(F)" "Domain Admins:(OI)(CI)(F)" "Everyone:(OI)(CI)(M)" $sqlServiceAcl | Out-Null + + $existingShare = Get-SmbShare -Name $WitnessShareName -ErrorAction SilentlyContinue + if (-not $existingShare) { + New-SmbShare -Name $WitnessShareName -Path $WitnessPath -FullAccess "Administrators", "Domain Admins" -ChangeAccess "Everyone", "$NetbiosName\$SqlServiceAccountUser" -CachingMode None | Out-Null + Write-Log "Created witness share \\$TargetComputerName\$WitnessShareName" + } + else { + Grant-SmbShareAccess -Name $WitnessShareName -AccountName "Everyone" -AccessRight Change -Force | Out-Null + Grant-SmbShareAccess -Name $WitnessShareName -AccountName "$NetbiosName\$SqlServiceAccountUser" -AccessRight Change -Force | Out-Null + Write-Log "Witness share already exists: \\$TargetComputerName\$WitnessShareName" + } +} + +function Test-DomainAdminCredential { + param([securestring]$Password) + + Import-Module ActiveDirectory -ErrorAction Stop + $credential = [pscredential]::new("$DomainAdminUser@$DomainName", $Password) + Get-ADUser -Identity $DomainAdminUser -Credential $credential -Server "localhost" -ErrorAction Stop | Out-Null + Write-Log "Credential validation succeeded for $DomainAdminUser@$DomainName" +} + +try { + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Write-Log "DC automation script entered" + Assert-RunningElevated + + $stage = Get-Stage + $plainPassword = Get-PlainPassword + $securePassword = ConvertTo-SecureString $plainPassword -AsPlainText -Force + $sqlServicePlainPassword = Get-SqlServicePlainPassword -DefaultPlainPassword $plainPassword + $sqlServiceSecurePassword = ConvertTo-SecureString $sqlServicePlainPassword -AsPlainText -Force + $localAdminPassword = if ($LocalAdminPasswordPlain) { $LocalAdminPasswordPlain } elseif ($plainPassword) { $plainPassword } else { throw "LocalAdminPasswordPlain was not supplied." } + + if ($stage -eq "complete") { + Write-Log "DC automation already complete; reconciling domain service account and witness share" + Wait-ForDomain + Ensure-DomainAdmin -Password $securePassword + Ensure-SqlServiceAccount -Password $sqlServiceSecurePassword + Ensure-WitnessShare + Test-DomainAdminCredential -Password $securePassword + $verify = [ordered]@{ + computer_name = $env:COMPUTERNAME + domain_name = $DomainName + netbios_name = $NetbiosName + domain_admin_user = "$NetbiosName\$DomainAdminUser" + sql_service_user = "$NetbiosName\$SqlServiceAccountUser" + user_principal_name = "$DomainAdminUser@$DomainName" + witness_share = "\\$TargetComputerName.$DomainName\$WitnessShareName" + rdp_firewall_enabled = $true + completed_utc = (Get-Date).ToUniversalTime().ToString("o") + } + $verify | ConvertTo-Json | Set-Content -Path $VerifyPath -Force + Remove-Item -Path $SecretPath, $SqlServiceSecretPath -Force -ErrorAction SilentlyContinue + Remove-ResumeTask + exit 0 + } + + if (@("rename", "features", "promote") -contains $stage) { + Ensure-LocalAdminAccess -PlainPassword $localAdminPassword + } + + Register-ResumeTask + Enable-LabRdp + if (@("post-promote", "complete") -contains $stage) { + Set-DcDns -DomainReady + } + else { + Set-DcDns + } + + Write-Log "Starting DC configuration stage: $stage" + + if ($stage -eq "rename") { + Set-Stage -Stage "features" + if ($env:COMPUTERNAME -ne $TargetComputerName) { + Write-Log "Renaming computer from $env:COMPUTERNAME to $TargetComputerName" + Rename-Computer -NewName $TargetComputerName -Force + Restart-Computer -Force + exit 0 + } + } + + if ((Get-Stage) -eq "features") { + Write-Log "Installing AD DS and DNS roles" + foreach ($feature in @("AD-Domain-Services", "DNS", "RSAT-ADDS", "RSAT-DNS-Server")) { + Install-WindowsFeature -Name $feature -IncludeManagementTools | Out-Null + Write-Log "Installed or confirmed Windows feature $feature" + } + + Set-DcDns + Set-Stage -Stage "promote" + } + + if ((Get-Stage) -eq "promote") { + if (-not (Test-DomainReady)) { + Write-Log "Promoting first domain controller for $DomainName" + Import-Module ADDSDeployment -ErrorAction Stop + Install-ADDSForest ` + -DomainName $DomainName ` + -DomainNetbiosName $NetbiosName ` + -InstallDNS ` + -CreateDnsDelegation:$false ` + -SafeModeAdministratorPassword $securePassword ` + -Force ` + -NoRebootOnCompletion:$true + + Set-Stage -Stage "post-promote" + Restart-Computer -Force + exit 0 + } + + Write-Log "Domain $DomainName is already available; skipping forest promotion" + Set-Stage -Stage "post-promote" + } + + if ((Get-Stage) -eq "post-promote") { + Set-DcDns -DomainReady + Wait-ForDomain + Wait-ForBootstrapSettle -Phase "after-domain-promotion" -Seconds $PostPromotionSettleSeconds + Write-Log "Post-promotion: ensuring domain administrator" + Ensure-DomainAdmin -Password $securePassword + Write-Log "Post-promotion: ensuring SQL service account" + Ensure-SqlServiceAccount -Password $sqlServiceSecurePassword + Write-Log "Post-promotion: ensuring witness share" + Ensure-WitnessShare + Write-Log "Post-promotion: validating domain administrator credential" + Test-DomainAdminCredential -Password $securePassword + + $verify = [ordered]@{ + computer_name = $env:COMPUTERNAME + domain_name = $DomainName + netbios_name = $NetbiosName + domain_admin_user = "$NetbiosName\$DomainAdminUser" + sql_service_user = "$NetbiosName\$SqlServiceAccountUser" + user_principal_name = "$DomainAdminUser@$DomainName" + witness_share = "\\$TargetComputerName.$DomainName\$WitnessShareName" + rdp_firewall_enabled = $true + completed_utc = (Get-Date).ToUniversalTime().ToString("o") + } + + $verify | ConvertTo-Json | Set-Content -Path $VerifyPath -Force + Set-Content -Path $ReadyPath -Value "Domain $DomainName ready. Login test passed for $DomainAdminUser@$DomainName." -Force + Set-Stage -Stage "complete" + Write-Log "Core domain setup complete; domain login marker written" + + # DNS forwarding is useful for installer downloads but is not required + # for AD account creation or domain joins, so keep it outside the + # critical post-promotion path. + Ensure-DnsForwarders + + Remove-Item -Path $SecretPath, $SqlServiceSecretPath -Force -ErrorAction SilentlyContinue + Remove-ResumeTask + Write-Log "DC automation complete" + } +} +catch { + Write-Log "ERROR: $($_.Exception.Message)" + throw +} diff --git a/automation-mssql-server-aoag-sample/scripts/sql/02-configure-sql-node.ps1 b/automation-mssql-server-aoag-sample/scripts/sql/02-configure-sql-node.ps1 new file mode 100644 index 0000000..1bfe859 --- /dev/null +++ b/automation-mssql-server-aoag-sample/scripts/sql/02-configure-sql-node.ps1 @@ -0,0 +1,1229 @@ +[CmdletBinding()] +param( + [string]$DomainName = "mssqlaoag.demo", + [string]$DomainNetbiosName = "MSSQLAOAG", + [string]$DomainAdminUser = "domainadmin", + [string]$DomainAdminPassword, + [string]$SqlServiceAccountUser = "sqlsa", + [string]$SqlServiceAccountPassword, + [string]$AutoInstallSqlServer = "true", + [string]$InstallSsms = "true", + [string]$SqlServerDownloadUrl = "https://go.microsoft.com/fwlink/?linkid=2344626", + [string]$SsmsDownloadUrl = "https://aka.ms/ssms/22/release/vs_SSMS.exe", + [string]$AutoConfigureWsfc = "true", + [string]$WsfcClusterName = "SQLAGCLUSTER", + [string]$WsfcPrimaryNode = "SQL1", + [string]$WsfcClusterNodes = "SQL1,SQL2", + [string]$WsfcClusterStaticAddresses = "10.0.20.20,10.0.30.20", + [string]$WsfcWitnessShare = "\\DC-VM.mssqlaoag.demo\ClusterWitness", + [string]$SkipClusterValidation = "true", + [string]$AoagDatabaseName = "AdventureWorks2025", + [string]$AoagAvailabilityGroupName = "TestAOAG", + [string]$AoagListenerName = "AOAG-LSN", + [string]$AoagListenerPort = "1433", + [string]$AoagListenerIps = "10.0.20.30,10.0.30.30", + [string]$HadrEndpointName = "Hadr_endpoint", + [string]$HadrEndpointPort = "5022", + [string]$SampleDatabaseDownloadUrl = "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2025.bak", + [string]$WsfcScriptPath = "C:\AOAGAutomation\WSFC\03-configure-wsfc.ps1", + [string]$SampleScriptPath = "C:\AOAGAutomation\WSFC\04-prepare-sample-database.ps1", + [string]$AgScriptPath = "C:\AOAGAutomation\WSFC\05-configure-availability-group.ps1", + [string]$ReconcileScriptPath = "C:\AOAGAutomation\WSFC\07-reconcile-availability-group.ps1", + [string]$LocalAdminUser = "opc", + [string]$LocalAdminPassword, + [string]$TargetComputerName = "SQL1", + [string]$DcHostName = "DC-VM", + [string]$DcPrivateIp = "10.0.10.10", + [string]$SqlDataDriveLetter = "F", + [string]$SetupDir = "C:\AOAGAutomation\Windows" +) + +$ErrorActionPreference = "Stop" + +$LogPath = Join-Path $SetupDir "windows-bootstrap.log" +$ReadyPath = Join-Path $SetupDir "WINDOWS_BOOTSTRAP_READY.txt" +$StatusPath = Join-Path $SetupDir "WINDOWS_BOOTSTRAP_STATUS.txt" +$StagePath = Join-Path $SetupDir "stage.txt" +$InstalledScriptPath = Join-Path $SetupDir "02-configure-sql-node.ps1" +$TaskName = "AOAG-Configure-WindowsNode" +$BootstrapMutexName = "Global\AOAG-$TargetComputerName-WindowsBootstrap" +$BootstrapMutex = $null +$BootstrapMutexAcquired = $false + +$DomainJoinSettleSeconds = 30 +$PostInstallSettleSeconds = 60 +$PreWsfcSettleSeconds = 30 +$AutoInstallSqlServerEnabled = [System.Convert]::ToBoolean($AutoInstallSqlServer) +$InstallSsmsEnabled = [System.Convert]::ToBoolean($InstallSsms) +$AutoConfigureWsfcEnabled = [System.Convert]::ToBoolean($AutoConfigureWsfc) +$SkipClusterValidationEnabled = [System.Convert]::ToBoolean($SkipClusterValidation) +$InstallerDir = Join-Path $SetupDir "Installers" +$SqlMediaDir = Join-Path $SetupDir "SQLMedia" +# The persistent OCI block volume may not be initialized or assigned a drive +# letter when this script starts. These paths are populated after the volume +# is available so a missing F: cannot prevent the domain-join stage. +$SqlDataRoot = $null +$SqlDataDir = $null +$SqlBackupDir = $null +$SqlLogDir = $null + +function Write-Log { + param([string]$Message) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + $line = "{0:s} {1}" -f (Get-Date), $Message + for ($i = 1; $i -le 20; $i++) { + try { + Add-Content -Path $LogPath -Value $line -ErrorAction Stop + return + } + catch { + Start-Sleep -Milliseconds 250 + } + } +} + +function Write-Status { + param([string]$Message) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + for ($i = 1; $i -le 20; $i++) { + try { + Set-Content -Path $StatusPath -Value ("{0:s} {1}" -f (Get-Date), $Message) -Force -ErrorAction Stop + break + } + catch { + Start-Sleep -Milliseconds 250 + } + } + Write-Log "STATUS: $Message" +} + +function Enter-BootstrapMutex { + $script:BootstrapMutex = [Threading.Mutex]::new($false, $BootstrapMutexName) + $script:BootstrapMutexAcquired = $script:BootstrapMutex.WaitOne(0) + + if (-not $script:BootstrapMutexAcquired) { + $skipPath = Join-Path $SetupDir "duplicate-bootstrap-skipped.log" + Add-Content -Path $skipPath -Value ("{0:s} Another SQL node bootstrap instance is already running; exiting duplicate launch." -f (Get-Date)) -ErrorAction SilentlyContinue + exit 0 + } +} + +function Exit-BootstrapMutex { + if ($script:BootstrapMutexAcquired -and $script:BootstrapMutex) { + $script:BootstrapMutex.ReleaseMutex() + $script:BootstrapMutex.Dispose() + } +} + +function Set-StrictAcl { + param([string]$Path) + & icacls.exe $Path /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null +} + +function Get-Stage { + if (Test-Path $StagePath) { + return (Get-Content -Path $StagePath -Raw).Trim() + } + + "rename" +} + +function Set-Stage { + param([string]$Stage) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Set-Content -Path $StagePath -Value $Stage -Force + Write-Status "stage=$Stage" + Write-Log "Stage set to $Stage" +} + +function Wait-ForBootstrapSettle { + param( + [Parameter(Mandatory)] + [string]$Phase, + [Parameter(Mandatory)] + [int]$Seconds + ) + + Write-Status "settling-$Phase seconds=$Seconds" + Write-Log "Waiting $Seconds seconds for $Phase services and network state to settle." + Start-Sleep -Seconds $Seconds +} + +function Write-CommandOutput { + param( + [string]$Label, + [object[]]$Output + ) + + foreach ($line in $Output) { + if ($null -ne $line -and "$line" -ne "") { + Write-Log "$Label $line" + } + } +} + +function Invoke-NetCommand { + param( + [Parameter(Mandatory)] + [string[]]$Arguments + ) + + $previousErrorActionPreference = $ErrorActionPreference + $ErrorActionPreference = "Continue" + try { + $output = & net.exe @Arguments 2>&1 + $exitCode = $LASTEXITCODE + } + finally { + $ErrorActionPreference = $previousErrorActionPreference + } + + [pscustomobject]@{ + ExitCode = $exitCode + Output = $output + } +} + +function Convert-SecureStringToPlainText { + param([securestring]$SecureString) + + $bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString) + try { + [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr) + } + finally { + [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr) + } +} + +function Write-ErrorDetails { + param( + [string]$Context, + [object]$ErrorRecord + ) + + Write-Log "$($Context): $($ErrorRecord.Exception.Message)" + $details = $ErrorRecord | Out-String + foreach ($line in ($details -split "`r?`n")) { + if ($line.Trim()) { + Write-Log "$($Context) detail: $line" + } + } +} + +function Add-LocalGroupMemberByNet { + param( + [string]$Group, + [string]$Member + ) + + $groupResult = Invoke-NetCommand -Arguments @("localgroup", $Group, $Member, "/add") + Write-CommandOutput -Label "net localgroup $($Group):" -Output $groupResult.Output + + $groupOutput = ($groupResult.Output -join "`n") + $alreadyMember = ($groupResult.ExitCode -eq 1378) -or + ($groupOutput -match "System error 1378") -or + ($groupOutput -match "already a member of the group") + + if ($alreadyMember) { + Write-Log "$Member is already a member of $Group; continuing." + } + elseif ($groupResult.ExitCode -ne 0) { + throw "Failed to add $Member to $Group. net.exe exit code $($groupResult.ExitCode)." + } +} + +function Set-LocalAdminPassword { + if ([string]::IsNullOrWhiteSpace($LocalAdminPassword)) { + throw "LocalAdminPassword was not supplied. Set windows_admin_password or provide LocalAdminPassword." + } + + $adminResult = Invoke-NetCommand -Arguments @("user", "Administrator", $LocalAdminPassword, "/logonpasswordchg:no", "/active:yes") + Write-CommandOutput -Label "net user Administrator:" -Output $adminResult.Output + if ($adminResult.ExitCode -ne 0) { + throw "Failed to configure local Administrator account. net.exe exit code $($adminResult.ExitCode)." + } + + if ($LocalAdminUser -and $LocalAdminUser -ne "Administrator") { + $userResult = Invoke-NetCommand -Arguments @("user", $LocalAdminUser, $LocalAdminPassword, "/logonpasswordchg:no", "/active:yes") + Write-CommandOutput -Label "net user $($LocalAdminUser):" -Output $userResult.Output + + if ($userResult.ExitCode -ne 0) { + $addUserResult = Invoke-NetCommand -Arguments @("user", $LocalAdminUser, $LocalAdminPassword, "/add", "/logonpasswordchg:no", "/active:yes") + Write-CommandOutput -Label "net user $LocalAdminUser /add:" -Output $addUserResult.Output + if ($addUserResult.ExitCode -ne 0) { + throw "Failed to create local $LocalAdminUser account. net.exe exit code $($addUserResult.ExitCode)." + } + } + + Add-LocalGroupMemberByNet -Group "Administrators" -Member $LocalAdminUser + Add-LocalGroupMemberByNet -Group "Remote Desktop Users" -Member $LocalAdminUser + } +} + +function Enable-LabRdp { + Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0 + Enable-NetFirewallRule -DisplayGroup "Remote Desktop" -ErrorAction SilentlyContinue | Out-Null + Write-Log "Enabled Remote Desktop firewall rules" +} + +function Enable-LabWinRm { + Set-Service -Name WinRM -StartupType Automatic + Start-Service -Name WinRM -ErrorAction SilentlyContinue + Enable-PSRemoting -Force -SkipNetworkProfileCheck | Out-Null + foreach ($displayGroup in @("Windows Remote Management", "Remote Service Management")) { + Enable-NetFirewallRule -DisplayGroup $displayGroup -ErrorAction SilentlyContinue | Out-Null + } + Write-Log "Enabled WinRM and PowerShell remoting" +} + +function Set-DomainDns { + Get-NetAdapter | Where-Object { $_.Status -eq "Up" } | ForEach-Object { + try { + Set-DnsClientServerAddress -InterfaceIndex $_.ifIndex -ServerAddresses @($DcPrivateIp) + Set-DnsClient -InterfaceIndex $_.ifIndex -ConnectionSpecificSuffix $DomainName -RegisterThisConnectionsAddress $true -ErrorAction SilentlyContinue + Write-Log "Set DNS server on adapter $($_.Name) to $DcPrivateIp" + } + catch { + Write-Log "DNS update warning on adapter $($_.Name): $($_.Exception.Message)" + } + } + + try { + Set-DnsClientGlobalSetting -SuffixSearchList @($DomainName) -ErrorAction SilentlyContinue + Clear-DnsClientCache -ErrorAction SilentlyContinue + Write-Log "Set DNS suffix search list to $DomainName and cleared DNS cache" + } + catch { + Write-Log "DNS suffix/cache warning: $($_.Exception.Message)" + } +} + +function Register-ResumeTask { + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + + if ($PSCommandPath -and (Test-Path -LiteralPath $PSCommandPath) -and ($PSCommandPath -ne $InstalledScriptPath)) { + Copy-Item -LiteralPath $PSCommandPath -Destination $InstalledScriptPath -Force + Set-StrictAcl -Path $InstalledScriptPath + Write-Log "Persisted Windows node automation script to $InstalledScriptPath" + } + + $scriptPath = if (Test-Path -LiteralPath $InstalledScriptPath) { $InstalledScriptPath } else { $PSCommandPath } + if ([string]::IsNullOrWhiteSpace($scriptPath)) { + throw "Unable to determine Windows node automation script path for resume task." + } + + $args = @( + "-NoProfile", + "-ExecutionPolicy Bypass", + "-File `"$scriptPath`"", + "-DomainName `"$DomainName`"", + "-DomainNetbiosName `"$DomainNetbiosName`"", + "-DomainAdminUser `"$DomainAdminUser`"", + "-DomainAdminPassword `"$DomainAdminPassword`"", + "-SqlServiceAccountUser `"$SqlServiceAccountUser`"", + "-SqlServiceAccountPassword `"$SqlServiceAccountPassword`"", + "-AutoInstallSqlServer `"$AutoInstallSqlServer`"", + "-InstallSsms `"$InstallSsms`"", + "-SqlServerDownloadUrl `"$SqlServerDownloadUrl`"", + "-SsmsDownloadUrl `"$SsmsDownloadUrl`"", + "-AutoConfigureWsfc `"$AutoConfigureWsfc`"", + "-WsfcClusterName `"$WsfcClusterName`"", + "-WsfcPrimaryNode `"$WsfcPrimaryNode`"", + "-WsfcClusterNodes `"$WsfcClusterNodes`"", + "-WsfcClusterStaticAddresses `"$WsfcClusterStaticAddresses`"", + "-WsfcWitnessShare `"$WsfcWitnessShare`"", + "-SkipClusterValidation `"$SkipClusterValidation`"", + "-AoagDatabaseName `"$AoagDatabaseName`"", + "-AoagAvailabilityGroupName `"$AoagAvailabilityGroupName`"", + "-AoagListenerName `"$AoagListenerName`"", + "-AoagListenerPort `"$AoagListenerPort`"", + "-AoagListenerIps `"$AoagListenerIps`"", + "-HadrEndpointName `"$HadrEndpointName`"", + "-HadrEndpointPort `"$HadrEndpointPort`"", + "-SampleDatabaseDownloadUrl `"$SampleDatabaseDownloadUrl`"", + "-WsfcScriptPath `"$WsfcScriptPath`"", + "-SampleScriptPath `"$SampleScriptPath`"", + "-AgScriptPath `"$AgScriptPath`"", + "-ReconcileScriptPath `"$ReconcileScriptPath`"", + "-LocalAdminUser `"$LocalAdminUser`"", + "-LocalAdminPassword `"$LocalAdminPassword`"", + "-TargetComputerName `"$TargetComputerName`"", + "-DcHostName `"$DcHostName`"", + "-DcPrivateIp `"$DcPrivateIp`"", + "-SqlDataDriveLetter `"$SqlDataDriveLetter`"", + "-SetupDir `"$SetupDir`"" + ) -join " " + + $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument $args + $trigger = New-ScheduledTaskTrigger -AtStartup + Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger -User "SYSTEM" -RunLevel Highest -Force | Out-Null + Write-Log "Registered resume task $TaskName" +} + +function Remove-ResumeTask { + Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false -ErrorAction SilentlyContinue +} + +function Get-DomainCredentials { + if ([string]::IsNullOrWhiteSpace($DomainAdminPassword)) { + throw "DomainAdminPassword was not supplied. Set domain_admin_password before enabling SQL node automation." + } + + $securePassword = ConvertTo-SecureString $DomainAdminPassword -AsPlainText -Force + $userNames = @( + "$DomainAdminUser@$DomainName", + "$DomainNetbiosName\$DomainAdminUser" + ) | Select-Object -Unique + + foreach ($userName in $userNames) { + [pscredential]::new($userName, $securePassword) + } +} + +function Get-DomainDistinguishedName { + ($DomainName -split "\." | ForEach-Object { "DC=$_" }) -join "," +} + +function Remove-StaleComputerAccount { + param([pscredential]$Credential) + + try { + Add-Type -AssemblyName System.DirectoryServices + $plainPassword = Convert-SecureStringToPlainText -SecureString $Credential.Password + $domainDn = Get-DomainDistinguishedName + $root = [System.DirectoryServices.DirectoryEntry]::new( + "LDAP://$DomainName/$domainDn", + $Credential.UserName, + $plainPassword, + [System.DirectoryServices.AuthenticationTypes]::Secure + ) + $searcher = [System.DirectoryServices.DirectorySearcher]::new($root) + $searcher.Filter = "(&(objectCategory=computer)(sAMAccountName=$TargetComputerName`$))" + $searcher.SearchScope = [System.DirectoryServices.SearchScope]::Subtree + $result = $searcher.FindOne() + + if ($result) { + $entry = $result.GetDirectoryEntry() + if ($entry -and $entry.Parent) { + $parent = $entry.Parent + Write-Log "Removing stale domain computer account $TargetComputerName`$ before domain join retry" + $parent.Children.Remove($entry) + $parent.CommitChanges() + } + else { + Write-Log "Stale domain computer account $TargetComputerName`$ was found, but its parent container was not available; continuing without cleanup." + } + } + else { + Write-Log "No stale domain computer account found for $TargetComputerName`$" + } + } + catch { + Write-ErrorDetails -Context "Stale computer account cleanup warning" -ErrorRecord $_ + } +} + +function Test-DomainReachable { + Set-DomainDns + + try { + $dns = Test-NetConnection -ComputerName $DcPrivateIp -Port 53 -WarningAction SilentlyContinue + if (-not $dns.TcpTestSucceeded) { + Write-Log "DNS TCP 53 to $DcPrivateIp is not reachable yet." + return $false + } + + $ldap = Test-NetConnection -ComputerName $DcPrivateIp -Port 389 -WarningAction SilentlyContinue + if (-not $ldap.TcpTestSucceeded) { + Write-Log "LDAP TCP 389 to $DcPrivateIp is not reachable yet." + return $false + } + } + catch { + Write-Log "Domain port reachability check failed: $($_.Exception.Message)" + return $false + } + + $srvName = "_ldap._tcp.dc._msdcs.$DomainName" + try { + Resolve-DnsName -Name $srvName -Type SRV -Server $DcPrivateIp -ErrorAction Stop | Out-Null + Write-Log "Resolved AD DC locator SRV record $srvName" + return $true + } + catch { + Write-Log "AD DC locator SRV record $srvName is not resolvable yet: $($_.Exception.Message)" + } + + $previousErrorActionPreference = $ErrorActionPreference + $ErrorActionPreference = "Continue" + try { + $nltestOutput = & nltest.exe "/dsgetdc:$DomainName" "/server:$DcPrivateIp" 2>&1 + $nltestExitCode = $LASTEXITCODE + } + finally { + $ErrorActionPreference = $previousErrorActionPreference + } + + Write-CommandOutput -Label "nltest:" -Output $nltestOutput + if ($nltestExitCode -eq 0) { + Write-Log "nltest found a domain controller for $DomainName" + return $true + } + + Write-Log "nltest could not find a domain controller for $DomainName. Exit code $nltestExitCode." + return $false +} + +function Wait-ForDomain { + for ($i = 1; $i -le 120; $i++) { + if (Test-DomainReachable) { + Write-Log "Domain $DomainName is reachable through DC $DcPrivateIp" + return + } + + Write-Status "waiting-for-domain attempt=$i" + Write-Log "Waiting for domain $DomainName attempt $($i)" + Start-Sleep -Seconds 15 + } + + throw "Domain $DomainName did not become reachable through $DcPrivateIp in time." +} + +function Test-DomainAdminCredential { + param([pscredential]$Credential) + + try { + Add-Type -AssemblyName System.DirectoryServices.AccountManagement -ErrorAction Stop + $context = [System.DirectoryServices.AccountManagement.PrincipalContext]::new( + [System.DirectoryServices.AccountManagement.ContextType]::Domain, + $DomainName + ) + try { + $plainPassword = Convert-SecureStringToPlainText -SecureString $Credential.Password + foreach ($userName in @($DomainAdminUser, $Credential.UserName)) { + try { + if ($context.ValidateCredentials( + $userName, + $plainPassword, + [System.DirectoryServices.AccountManagement.ContextOptions]::Negotiate + )) { + return $true + } + } + catch { + Write-Log "Credential validation warning for $($userName): $($_.Exception.Message)" + } + } + } + finally { + $context.Dispose() + } + } + catch { + Write-Log "Domain credential validation could not run yet: $($_.Exception.Message)" + } + + return $false +} + +function Test-JoinedToDomain { + $computerSystem = Get-CimInstance -ClassName Win32_ComputerSystem + $computerSystem.PartOfDomain -and ($computerSystem.Domain -ieq $DomainName) +} + +function Add-DomainAdminToLocalGroups { + $domainMember = "$DomainNetbiosName\$DomainAdminUser" + Add-LocalGroupMemberByNet -Group "Administrators" -Member $domainMember + Add-LocalGroupMemberByNet -Group "Remote Desktop Users" -Member $domainMember +} + +function Join-DomainWithRetry { + $credentials = @(Get-DomainCredentials) + $maxAttempts = 18 + + for ($attempt = 1; $attempt -le $maxAttempts; $attempt++) { + Wait-ForDomain + + $validCredential = $false + foreach ($credential in $credentials) { + if (Test-DomainAdminCredential -Credential $credential) { + $validCredential = $true + break + } + } + if (-not $validCredential) { + # PrincipalContext can reject a credential from a workgroup host even + # when the same credential is valid for Add-Computer. Do not make this + # advisory check a gate; Add-Computer provides the definitive result. + Write-Log "Credential pre-check did not validate $DomainAdminUser; proceeding with Add-Computer so the domain join can provide the authoritative error." + } + + if (Test-JoinedToDomain) { + Write-Log "$TargetComputerName is already joined to $DomainName" + return + } + + foreach ($credential in $credentials) { + Remove-StaleComputerAccount -Credential $credential + + try { + Write-Status "joining-domain attempt=$attempt credential=$($credential.UserName)" + Write-Log "Joining $TargetComputerName to domain $DomainName through $($DcHostName).$DomainName as $($credential.UserName). Attempt $attempt of $maxAttempts." + & w32tm.exe /resync /force 2>&1 | ForEach-Object { Write-Log "w32tm: $_" } + Add-Computer ` + -DomainName $DomainName ` + -Server "$DcHostName.$DomainName" ` + -Credential $credential ` + -Force ` + -ErrorAction Stop + Write-Log "Domain join command succeeded for $TargetComputerName as $($credential.UserName)" + return + } + catch { + Write-ErrorDetails -Context "Domain join through $($DcHostName).$DomainName attempt $attempt with $($credential.UserName) failed" -ErrorRecord $_ + try { + Write-Log "Retrying domain join without an explicit domain controller." + Add-Computer -DomainName $DomainName -Credential $credential -Force -ErrorAction Stop + Write-Log "Domain join command succeeded without explicit domain controller for $TargetComputerName as $($credential.UserName)" + return + } + catch { + Write-ErrorDetails -Context "Domain join fallback attempt $attempt with $($credential.UserName) failed" -ErrorRecord $_ + } + } + } + + if ($attempt -eq $maxAttempts) { + throw "All domain join attempts failed for $TargetComputerName. Check that $DomainNetbiosName\$DomainAdminUser can log in with the password used by Terraform." + } + + Set-DomainDns + Clear-DnsClientCache -ErrorAction SilentlyContinue + Write-Log "Waiting 60 seconds before retrying domain join" + Start-Sleep -Seconds 60 + } +} + +function Invoke-FileDownload { + param( + [string]$Url, + [string]$Destination + ) + + if (Test-Path $Destination) { + Write-Log "Installer already exists: $Destination" + return + } + + New-Item -ItemType Directory -Path (Split-Path -Path $Destination -Parent) -Force | Out-Null + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + Write-Log "Downloading $Url to $Destination" + try { + Invoke-WebRequest -Uri $Url -OutFile $Destination -UseBasicParsing -ErrorAction Stop + } + catch { + Write-Log "Download failed with domain DNS; temporarily using OCI/public DNS: $($_.Exception.Message)" + $adapters = @(Get-NetAdapter | Where-Object { $_.Status -eq "Up" }) + try { + foreach ($adapter in $adapters) { + Set-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex -ServerAddresses @("169.254.169.254", "1.1.1.1") + } + Clear-DnsClientCache -ErrorAction SilentlyContinue + Invoke-WebRequest -Uri $Url -OutFile $Destination -UseBasicParsing -ErrorAction Stop + } + finally { + Set-DomainDns + } + } +} + +function Invoke-InstallerProcess { + param( + [string]$FilePath, + [string[]]$ArgumentList, + [string]$Label, + [int[]]$SuccessExitCodes = @(0, 3010, 1641) + ) + + Write-Log "Starting $Label" + $process = Start-Process -FilePath $FilePath -ArgumentList $ArgumentList -Wait -PassThru + Write-Log "$Label finished with exit code $($process.ExitCode)" + + if ($SuccessExitCodes -notcontains $process.ExitCode) { + throw "$Label failed with exit code $($process.ExitCode)" + } + + return $process.ExitCode +} + +function Test-SqlServerInstalled { + $service = Get-Service -Name "MSSQLSERVER" -ErrorAction SilentlyContinue + return $null -ne $service +} + +function Enable-SqlFirewallRules { + $rules = @( + @{ Name = "SQL Server TCP 1433"; Port = 1433 }, + @{ Name = "SQL AlwaysOn Endpoint TCP 5022"; Port = 5022 } + ) + + foreach ($rule in $rules) { + if (-not (Get-NetFirewallRule -DisplayName $rule.Name -ErrorAction SilentlyContinue)) { + New-NetFirewallRule -DisplayName $rule.Name -Direction Inbound -Protocol TCP -LocalPort $rule.Port -Action Allow -Profile Any | Out-Null + Write-Log "Created firewall rule $($rule.Name)" + } + else { + Enable-NetFirewallRule -DisplayName $rule.Name -ErrorAction SilentlyContinue | Out-Null + Write-Log "Confirmed firewall rule $($rule.Name)" + } + } +} + +function Enable-WsfcFirewallRules { + foreach ($displayGroup in @("Failover Clusters", "Remote Service Management", "Windows Remote Management")) { + Enable-NetFirewallRule -DisplayGroup $displayGroup -ErrorAction SilentlyContinue | Out-Null + } +} + +function Install-WsfcPrerequisites { + Write-Log "Installing or confirming Failover Clustering features" + Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools | Out-Null + Install-WindowsFeature -Name RSAT-Clustering-PowerShell -IncludeAllSubFeature | Out-Null + Enable-WsfcFirewallRules + Write-Log "Failover Clustering features confirmed" +} + +function Enable-SqlTcpStaticPort { + $instanceNamesPath = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" + if (-not (Test-Path $instanceNamesPath)) { + Write-Log "SQL instance registry path was not found yet; skipping TCP static port registry configuration." + return + } + + $instanceId = (Get-ItemProperty -Path $instanceNamesPath).MSSQLSERVER + if (-not $instanceId) { + Write-Log "Default SQL instance name was not found yet; skipping TCP static port registry configuration." + return + } + + $tcpPath = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instanceId\MSSQLServer\SuperSocketNetLib\Tcp" + $ipAllPath = "$tcpPath\IPAll" + if (Test-Path $tcpPath) { + Set-ItemProperty -Path $tcpPath -Name Enabled -Value 1 -ErrorAction SilentlyContinue + } + if (Test-Path $ipAllPath) { + Set-ItemProperty -Path $ipAllPath -Name TcpDynamicPorts -Value "" -ErrorAction SilentlyContinue + Set-ItemProperty -Path $ipAllPath -Name TcpPort -Value "1433" -ErrorAction SilentlyContinue + Write-Log "Configured SQL Server default instance TCP port 1433" + } +} + +function Initialize-SqlDataVolume { + $drive = $SqlDataDriveLetter.TrimEnd(":").ToUpperInvariant() + if ($drive -notmatch "^[A-Z]$") { + throw "SqlDataDriveLetter must be one alphabetic drive letter. Received '$SqlDataDriveLetter'." + } + + $driveRoot = "${drive}:\" + for ($attempt = 1; $attempt -le 60; $attempt++) { + if (($attempt -eq 1) -or (($attempt % 6) -eq 0)) { + $storageCacheCommand = Get-Command Update-HostStorageCache -ErrorAction SilentlyContinue + if ($storageCacheCommand) { + Update-HostStorageCache -ErrorAction SilentlyContinue + } + } + + $volume = Get-Volume -DriveLetter $drive -ErrorAction SilentlyContinue + if ($volume) { + if ($volume.FileSystem -and $volume.FileSystem -ne "NTFS") { + throw "SQL data drive $drive`: is already formatted as $($volume.FileSystem); refusing to reformat it." + } + + $script:SqlDataRoot = $driveRoot + $script:SqlDataDir = Join-Path $script:SqlDataRoot "SQLData" + $script:SqlBackupDir = Join-Path $script:SqlDataRoot "SQLBackups" + $script:SqlLogDir = Join-Path $script:SqlDataRoot "SQLLogs" + Write-Log "SQL data volume is available at $driveRoot." + New-Item -ItemType Directory -Path $SqlDataDir, $SqlBackupDir, $SqlLogDir -Force | Out-Null + $sqlServiceAccount = "${DomainNetbiosName}\${SqlServiceAccountUser}" + foreach ($path in @($SqlDataDir, $SqlBackupDir, $SqlLogDir)) { + & icacls.exe $path /grant "${sqlServiceAccount}:(OI)(CI)(M)" /T /C | Out-Null + if ($LASTEXITCODE -ne 0) { + throw "Could not grant $sqlServiceAccount modify access to $path. icacls exit code=$LASTEXITCODE" + } + } + return + } + + # A persistent volume may already be NTFS-formatted but have no drive + # letter after being attached to a replacement instance. Reuse it and + # assign the configured letter instead of waiting for a RAW disk. + $formattedDataPartition = Get-Disk -ErrorAction SilentlyContinue | + Where-Object { + $_.Size -ge 60GB -and + -not $_.IsBoot -and + -not $_.IsSystem + } | + ForEach-Object { + Get-Partition -DiskNumber $_.Number -ErrorAction SilentlyContinue | + Where-Object { $_.Size -ge 60GB } | + ForEach-Object { + $partition = $_ + $partitionVolume = Get-Volume -Partition $partition -ErrorAction SilentlyContinue + if ($partitionVolume -and $partitionVolume.FileSystem -eq "NTFS") { + [pscustomobject]@{ + DiskNumber = $partition.DiskNumber + PartitionNumber = $partition.PartitionNumber + DriveLetter = $partition.DriveLetter + Volume = $partitionVolume + } + } + } + } | + Sort-Object { $_.Volume.Size } -Descending | + Select-Object -First 1 + + if ($formattedDataPartition) { + if ($formattedDataPartition.DriveLetter -and + $formattedDataPartition.DriveLetter.ToString().ToUpperInvariant() -ne $drive) { + $occupiedVolume = Get-Volume -DriveLetter $drive -ErrorAction SilentlyContinue + if ($occupiedVolume) { + throw "SQL data drive letter $drive`: is occupied by an existing volume; refusing to move the formatted data volume." + } + } + + if (-not $formattedDataPartition.DriveLetter -or + $formattedDataPartition.DriveLetter.ToString().ToUpperInvariant() -ne $drive) { + Write-Log "Reusing formatted SQL data disk $($formattedDataPartition.DiskNumber), partition $($formattedDataPartition.PartitionNumber) as drive $drive." + Set-Partition ` + -DiskNumber $formattedDataPartition.DiskNumber ` + -PartitionNumber $formattedDataPartition.PartitionNumber ` + -NewDriveLetter $drive ` + -ErrorAction Stop + } + + continue + } + + $rawDisk = Get-Disk -ErrorAction SilentlyContinue | + Where-Object { + $_.PartitionStyle -eq "RAW" -and + $_.Size -ge 60GB + } | + Sort-Object Size -Descending | + Select-Object -First 1 + + if ($rawDisk) { + Write-Log "Initializing raw SQL data disk number $($rawDisk.Number) as drive $drive." + if ($rawDisk.IsOffline) { + Set-Disk -Number $rawDisk.Number -IsOffline $false -ErrorAction Stop + } + if ($rawDisk.IsReadOnly) { + Set-Disk -Number $rawDisk.Number -IsReadOnly $false -ErrorAction Stop + } + Initialize-Disk -Number $rawDisk.Number -PartitionStyle GPT -ErrorAction Stop | Out-Null + $partition = New-Partition -DiskNumber $rawDisk.Number -UseMaximumSize -DriveLetter $drive -ErrorAction Stop + Format-Volume -Partition $partition -FileSystem NTFS -NewFileSystemLabel "SQLData" -AllocationUnitSize 65536 -Confirm:$false -ErrorAction Stop | Out-Null + continue + } + + Write-Status "waiting-for-sql-data-volume attempt=$attempt" + Start-Sleep -Seconds 10 + } + + throw "The ${drive}: SQL data volume was not attached and initialized within 10 minutes." +} + +function Install-SqlServerEngine { + if ([string]::IsNullOrWhiteSpace($SqlServiceAccountPassword)) { + throw "SqlServiceAccountPassword was not supplied. Set sql_service_account_password or reuse domain_admin_password through Terraform." + } + + Initialize-SqlDataVolume + + if (Test-SqlServerInstalled) { + Write-Status "sql-server-already-installed" + Write-Log "SQL Server default instance is already installed." + Enable-SqlFirewallRules + Enable-SqlTcpStaticPort + return + } + + New-Item -ItemType Directory -Path $InstallerDir, $SqlMediaDir, $SqlDataDir, $SqlBackupDir, $SqlLogDir -Force | Out-Null + + $sqlBootstrapper = Join-Path $InstallerDir "SQL2025-SSEI-StdDev.exe" + Write-Status "downloading-sql-server-bootstrapper" + Invoke-FileDownload -Url $SqlServerDownloadUrl -Destination $sqlBootstrapper + + $downloadArgs = @( + "/ACTION=Download", + "/MEDIATYPE=ISO", + "/MEDIAPATH=$SqlMediaDir", + "/QUIET" + ) + Write-Status "downloading-sql-server-media" + Invoke-InstallerProcess -FilePath $sqlBootstrapper -ArgumentList $downloadArgs -Label "SQL Server 2025 media download" -SuccessExitCodes @(0) + + $mountedImage = $null + $setupExe = $null + $sqlIso = Get-ChildItem -Path $SqlMediaDir -Filter "*.iso" -Recurse -ErrorAction SilentlyContinue | Sort-Object LastWriteTime -Descending | Select-Object -First 1 + + if ($sqlIso) { + Write-Log "Mounting SQL Server ISO $($sqlIso.FullName)" + $mountedImage = Mount-DiskImage -ImagePath $sqlIso.FullName -PassThru + Start-Sleep -Seconds 5 + $volume = $mountedImage | Get-Volume + $setupExe = "$($volume.DriveLetter):\setup.exe" + } + else { + $setupExe = (Get-ChildItem -Path $SqlMediaDir -Filter "setup.exe" -Recurse -ErrorAction SilentlyContinue | Sort-Object LastWriteTime -Descending | Select-Object -First 1).FullName + } + + if (-not $setupExe -or -not (Test-Path $setupExe)) { + throw "Could not locate SQL Server setup.exe under $SqlMediaDir" + } + + $sqlServiceAccount = "$DomainNetbiosName\$SqlServiceAccountUser" + $sqlSysAdminAccounts = "`"$DomainNetbiosName\$DomainAdminUser`" `"BUILTIN\Administrators`"" + + try { + $setupArgs = @( + "/Q", + "/IACCEPTSQLSERVERLICENSETERMS", + "/SUPPRESSPRIVACYSTATEMENTNOTICE", + "/ACTION=Install", + "/FEATURES=SQLENGINE", + "/INSTANCENAME=MSSQLSERVER", + "/SQLSVCACCOUNT=`"$sqlServiceAccount`"", + "/SQLSVCPASSWORD=`"$SqlServiceAccountPassword`"", + "/SQLSVCSTARTUPTYPE=Automatic", + "/AGTSVCACCOUNT=`"$sqlServiceAccount`"", + "/AGTSVCPASSWORD=`"$SqlServiceAccountPassword`"", + "/AGTSVCSTARTUPTYPE=Automatic", + "/SQLSYSADMINACCOUNTS=$sqlSysAdminAccounts", + "/TCPENABLED=1", + "/NPENABLED=0", + "/BROWSERSVCSTARTUPTYPE=Disabled", + "/SQLBACKUPDIR=$SqlBackupDir", + "/SQLUSERDBDIR=$SqlDataDir", + "/SQLUSERDBLOGDIR=$SqlLogDir", + "/UpdateEnabled=False" + ) + + Write-Status "installing-sql-server-engine" + Invoke-InstallerProcess -FilePath $setupExe -ArgumentList $setupArgs -Label "SQL Server 2025 Database Engine install" + } + finally { + if ($mountedImage) { + Dismount-DiskImage -ImagePath $sqlIso.FullName -ErrorAction SilentlyContinue + Write-Log "Dismounted SQL Server ISO" + } + } + + Enable-SqlFirewallRules + Enable-SqlTcpStaticPort + + foreach ($serviceName in @("MSSQLSERVER", "SQLSERVERAGENT")) { + $service = Get-Service -Name $serviceName -ErrorAction SilentlyContinue + if ($service) { + Set-Service -Name $serviceName -StartupType Automatic + Restart-Service -Name $serviceName -Force -ErrorAction SilentlyContinue + Write-Log "Confirmed SQL service $serviceName is automatic and restarted" + } + } +} + +function Test-SsmsInstalled { + $paths = @( + "C:\Program Files\Microsoft SQL Server Management Studio 22\Release\Common7\IDE\Ssms.exe", + "C:\Program Files (x86)\Microsoft SQL Server Management Studio 22\Release\Common7\IDE\Ssms.exe" + ) + + foreach ($path in $paths) { + if (Test-Path $path) { + return $true + } + } + + return $false +} + +function Install-Ssms { + if (-not $InstallSsmsEnabled) { + Write-Status "ssms-install-disabled" + Write-Log "SSMS install disabled by variable." + return + } + + if (Test-SsmsInstalled) { + Write-Status "ssms-already-installed" + Write-Log "SSMS is already installed." + return + } + + New-Item -ItemType Directory -Path $InstallerDir -Force | Out-Null + $ssmsBootstrapper = Join-Path $InstallerDir "vs_SSMS.exe" + + try { + if (-not (Test-Path -LiteralPath $ssmsBootstrapper)) { + Write-Status "downloading-ssms" + Invoke-FileDownload -Url $SsmsDownloadUrl -Destination $ssmsBootstrapper + } + else { + Write-Log "SSMS installer already exists: $ssmsBootstrapper" + } + + $ssmsArgs = @( + "--quiet", + "--wait", + "--norestart", + "--addProductLang", "en-US" + ) + + Write-Status "installing-ssms" + Invoke-InstallerProcess -FilePath $ssmsBootstrapper -ArgumentList $ssmsArgs -Label "SQL Server Management Studio install" + + if (-not (Test-SsmsInstalled)) { + throw "SSMS installer returned success, but Ssms.exe was not found afterward." + } + } + catch { + # SSMS is a management client and is not required by SQL Server, + # WSFC, Always On, or the database restore. Keep those stages running. + $warningPath = Join-Path $SetupDir "SSMS_INSTALL_WARNING.txt" + $warning = "SSMS installation did not complete on ${TargetComputerName}: $($_.Exception.Message)" + Set-Content -Path $warningPath -Value $warning -Force + Write-Status "ssms-install-warning-continue" + Write-ErrorDetails -Context "SSMS installation warning; continuing bootstrap" -ErrorRecord $_ + } +} + +function Test-PendingReboot { + $rebootPaths = @( + "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending", + "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired", + "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations" + ) + + foreach ($path in $rebootPaths) { + if (Test-Path $path) { + Write-Log "Pending reboot detected from $path" + return $true + } + } + + try { + $sessionManager = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -ErrorAction SilentlyContinue + if ($sessionManager.PendingFileRenameOperations) { + Write-Log "Pending reboot detected from Session Manager PendingFileRenameOperations" + return $true + } + } + catch { + Write-Log "Pending reboot check warning: $($_.Exception.Message)" + } + + return $false +} + +function Invoke-WsfcAutomationIfNeeded { + if (-not $AutoConfigureWsfcEnabled) { + Write-Status "wsfc-automation-disabled" + Write-Log "WSFC automation disabled by variable." + return + } + + if ($TargetComputerName -ine $WsfcPrimaryNode) { + Write-Status "wsfc-orchestrated-by-$WsfcPrimaryNode" + Write-Log "WSFC automation will be orchestrated by $WsfcPrimaryNode; current node is $TargetComputerName." + return + } + + if (-not (Test-Path $WsfcScriptPath)) { + throw "WSFC script was not found at $WsfcScriptPath" + } + + $wsfcArgs = @( + "-NoProfile", + "-ExecutionPolicy", "Bypass", + "-File", $WsfcScriptPath, + "-DomainName", $DomainName, + "-DomainNetbiosName", $DomainNetbiosName, + "-DomainAdminUser", $DomainAdminUser, + "-DomainAdminPassword", $DomainAdminPassword, + "-ClusterName", $WsfcClusterName, + "-ClusterNodes", $WsfcClusterNodes, + "-ClusterStaticAddresses", $WsfcClusterStaticAddresses, + "-WitnessShare", $WsfcWitnessShare, + "-SqlInstanceName", "MSSQLSERVER", + "-SqlServiceAccountUser", $SqlServiceAccountUser, + "-AoagDatabaseName", $AoagDatabaseName, + "-AoagAvailabilityGroupName", $AoagAvailabilityGroupName, + "-AoagListenerName", $AoagListenerName, + "-AoagListenerPort", $AoagListenerPort, + "-AoagListenerIps", $AoagListenerIps, + "-HadrEndpointName", $HadrEndpointName, + "-HadrEndpointPort", $HadrEndpointPort, + "-SampleDatabaseDownloadUrl", $SampleDatabaseDownloadUrl, + "-SampleScriptPath", $SampleScriptPath, + "-AgScriptPath", $AgScriptPath, + "-SetupDir", "C:\AOAGAutomation\WSFC" + ) + + if ($SkipClusterValidationEnabled) { + $wsfcArgs += "-SkipClusterValidation" + } + + Write-Status "starting-wsfc-automation" + Write-Log "Starting WSFC automation from $WsfcScriptPath" + $process = Start-Process -FilePath "PowerShell.exe" -ArgumentList $wsfcArgs -Wait -PassThru + Write-Log "WSFC automation finished with exit code $($process.ExitCode)" + + if ($process.ExitCode -ne 0) { + foreach ($wsfcLog in @("C:\AOAGAutomation\WSFC\configure-wsfc.log")) { + if (Test-Path $wsfcLog) { + Write-Log "Last lines from $wsfcLog" + Get-Content -Path $wsfcLog -Tail 80 -ErrorAction SilentlyContinue | ForEach-Object { + Write-Log "WSFC: $_" + } + } + else { + Write-Log "WSFC log not found: $wsfcLog" + } + } + throw "WSFC automation failed with exit code $($process.ExitCode). Check C:\AOAGAutomation\WSFC\configure-wsfc.log." + } +} + +function Install-AvailabilityGroupReconciliationTask { + if (-not (Test-Path -LiteralPath $ReconcileScriptPath)) { + throw "Availability group reconciliation script was not found at $ReconcileScriptPath" + } + + $taskName = "AOAG-Reconcile-AvailabilityGroup" + $taskArgs = @( + "-NoProfile", + "-ExecutionPolicy", "Bypass", + "-File", "`"$ReconcileScriptPath`"", + "-AvailabilityGroupName", "`"$AoagAvailabilityGroupName`"", + "-DatabaseName", "`"$AoagDatabaseName`"", + "-ClusterName", "`"$WsfcClusterName`"", + "-ListenerName", "`"$AoagListenerName`"", + "-ListenerPort", "$AoagListenerPort", + "-ListenerIps", "`"$AoagListenerIps`"", + "-ReadinessTimeoutMinutes", "60" + ) -join " " + + $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument $taskArgs + $trigger = New-ScheduledTaskTrigger -AtStartup + $settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -ExecutionTimeLimit (New-TimeSpan -Hours 2) + Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Settings $settings -User "$DomainAdminUser@$DomainName" -Password $DomainAdminPassword -RunLevel Highest -Force | Out-Null + Write-Log "Registered $taskName as $DomainAdminUser@$DomainName to reconcile the local SQL/WSFC/AG/listener state after every reboot." + try { + Start-ScheduledTask -TaskName $taskName -ErrorAction Stop + Write-Log "Started $taskName immediately so it can repair the AG/listener during the initial deployment." + } + catch { + Write-Log "Warning: could not start $taskName immediately; it will run at the next startup. $($_.Exception.Message)" + } +} + +try { + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Enter-BootstrapMutex + Write-Status "starting target=$TargetComputerName" + Write-Log "Starting Windows/domain bootstrap for $TargetComputerName" + + Register-ResumeTask + if (-not (Test-Path $StagePath)) { + Set-Stage -Stage "rename" + } + Set-LocalAdminPassword + Enable-LabRdp + Enable-LabWinRm + Set-DomainDns + + $stage = Get-Stage + Write-Log "Current stage: $stage" + + if ($stage -eq "rename") { + Set-Stage -Stage "join-domain" + if ($env:COMPUTERNAME -ne $TargetComputerName) { + Write-Log "Renaming computer from $env:COMPUTERNAME to $TargetComputerName" + Rename-Computer -NewName $TargetComputerName -Force + Restart-Computer -Force + exit 0 + } + } + + if ((Get-Stage) -eq "join-domain") { + if (-not (Test-JoinedToDomain)) { + Join-DomainWithRetry + Set-Stage -Stage "post-join" + Restart-Computer -Force + exit 0 + } + + Write-Log "$TargetComputerName is already joined to $DomainName" + Set-Stage -Stage "post-join" + } + + if ((Get-Stage) -eq "post-join") { + Wait-ForDomain + Add-DomainAdminToLocalGroups + Wait-ForBootstrapSettle -Phase "after-domain-join" -Seconds $DomainJoinSettleSeconds + if ($AutoInstallSqlServerEnabled) { + Set-Stage -Stage "install-sql" + } + else { + Set-Content -Path $ReadyPath -Value "Windows/domain bootstrap completed for $TargetComputerName. Domain login: $DomainAdminUser@$DomainName" -Force + Set-Stage -Stage "complete" + Remove-ResumeTask + Write-Log "Windows/domain bootstrap completed for $TargetComputerName" + } + } + + if ((Get-Stage) -eq "install-sql") { + Wait-ForDomain + Add-DomainAdminToLocalGroups + Write-Status "installing-sql-server" + Install-SqlServerEngine + Write-Status "installing-wsfc-prerequisites" + Install-WsfcPrerequisites + # SSMS is optional tooling. Keep it after the cluster prerequisites so + # a management-client installer issue cannot delay WSFC/Always On. + Write-Status "installing-ssms" + Install-Ssms + Wait-ForBootstrapSettle -Phase "after-sql-install" -Seconds $PostInstallSettleSeconds + Set-Stage -Stage "configure-wsfc" + + if (Test-PendingReboot) { + Write-Status "pending-reboot-before-wsfc" + Write-Log "Rebooting $TargetComputerName before WSFC automation because Windows reports a pending reboot." + Restart-Computer -Force + exit 0 + } + } + + if ((Get-Stage) -eq "configure-wsfc") { + Wait-ForDomain + Add-DomainAdminToLocalGroups + Wait-ForBootstrapSettle -Phase "before-wsfc" -Seconds $PreWsfcSettleSeconds + Install-AvailabilityGroupReconciliationTask + Invoke-WsfcAutomationIfNeeded + Set-Content -Path $ReadyPath -Value "Windows/domain/SQL/WSFC bootstrap completed for $TargetComputerName. Domain login: $DomainAdminUser@$DomainName. SQL service account: $DomainNetbiosName\$SqlServiceAccountUser" -Force + Write-Status "complete" + Set-Stage -Stage "complete" + Remove-ResumeTask + Write-Log "Windows/domain/SQL/WSFC bootstrap completed for $TargetComputerName" + } +} +catch { + Write-Status "failed: $($_.Exception.Message)" + Write-Log "ERROR: $($_.Exception.Message)" + throw +} +finally { + Exit-BootstrapMutex +} diff --git a/automation-mssql-server-aoag-sample/scripts/wsfc/03-configure-wsfc.ps1 b/automation-mssql-server-aoag-sample/scripts/wsfc/03-configure-wsfc.ps1 new file mode 100644 index 0000000..61fdc35 --- /dev/null +++ b/automation-mssql-server-aoag-sample/scripts/wsfc/03-configure-wsfc.ps1 @@ -0,0 +1,740 @@ +[CmdletBinding()] +param( + [string]$DomainName = "mssqlaoag.demo", + [string]$DomainNetbiosName = "MSSQLAOAG", + [string]$DomainAdminUser = "domainadmin", + [string]$DomainAdminPassword, + [string]$ClusterName = "SQLAGCLUSTER", + [string]$ClusterNodes = "SQL1,SQL2", + [string]$ClusterStaticAddresses = "10.0.20.20,10.0.30.20", + [string]$WitnessShare = "\\DC-VM.mssqlaoag.demo\ClusterWitness", + [string]$SqlInstanceName = "MSSQLSERVER", + [string]$SqlServiceAccountUser = "sqlsa", + [string]$AoagDatabaseName = "AdventureWorks2025", + [string]$AoagAvailabilityGroupName = "TestAOAG", + [string]$AoagListenerName = "AOAG-LSN", + [int]$AoagListenerPort = 1433, + [string]$AoagListenerIps = "10.0.20.30,10.0.30.30", + [string]$HadrEndpointName = "Hadr_endpoint", + [int]$HadrEndpointPort = 5022, + [string]$SampleDatabaseDownloadUrl = "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2025.bak", + [string]$SetupDir = "C:\AOAGAutomation\WSFC", + [switch]$SkipClusterValidation, + [string]$SampleScriptPath = "C:\AOAGAutomation\WSFC\04-prepare-sample-database.ps1", + [string]$AgScriptPath = "C:\AOAGAutomation\WSFC\05-configure-availability-group.ps1", + [string]$SqlDataDriveLetter = "F", + [switch]$RunAsDomainAdminChild +) + +$ErrorActionPreference = "Stop" + +$TaskName = "AOAG-Configure-WSFC" +$InstalledScriptPath = Join-Path $SetupDir "03-configure-wsfc.ps1" +$LogPath = Join-Path $SetupDir "configure-wsfc.log" +$ReadyPath = Join-Path $SetupDir "WSFC_READY.txt" +$AdPermissionReadyPath = Join-Path $SetupDir "TASK_5_1_AD_PERMISSION_READY.txt" +$StatusPath = Join-Path $SetupDir "WSFC_STATUS.txt" +$VerifyPath = Join-Path $SetupDir "WSFC_VERIFY.json" +$SecretPath = Join-Path $SetupDir "domainadmin-password.dpapi" +$SecretEntropy = "mssql-aoag-wsfc-bootstrap-v1" +$ClusterSettleSeconds = 30 +$AlwaysOnSettleSeconds = 30 +$AlwaysOnReadyTimeoutAttempts = 60 +$FinalReadySettleSeconds = 30 + +$ClusterNodeList = @( + $ClusterNodes -split "," | + ForEach-Object { "$($_)".Trim() } | + Where-Object { -not [string]::IsNullOrWhiteSpace($_) } +) +$ClusterAddressList = @( + $ClusterStaticAddresses -split "," | + ForEach-Object { "$($_)".Trim() } | + Where-Object { -not [string]::IsNullOrWhiteSpace($_) } +) + +if ($ClusterNodeList.Count -lt 2) { + throw "ClusterNodes must contain at least two non-empty node names. Received: '$ClusterNodes'." +} + +function Write-Log { + param([string]$Message) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + $line = "{0:s} {1}" -f (Get-Date), $Message + for ($i = 1; $i -le 20; $i++) { + try { + Add-Content -Path $LogPath -Value $line -ErrorAction Stop + return + } + catch { + Start-Sleep -Milliseconds 250 + } + } +} + +function Write-Status { + param([string]$Message) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + for ($i = 1; $i -le 20; $i++) { + try { + Set-Content -Path $StatusPath -Value ("{0:s} {1}" -f (Get-Date), $Message) -Force -ErrorAction Stop + break + } + catch { + Start-Sleep -Milliseconds 250 + } + } + Write-Log "STATUS: $Message" +} + +function Wait-ForWsfcSettle { + param( + [Parameter(Mandatory)] + [string]$Phase, + [Parameter(Mandatory)] + [int]$Seconds + ) + + Write-Status "settling-$Phase seconds=$Seconds" + Write-Log "Waiting $Seconds seconds for $Phase cluster state to settle." + Start-Sleep -Seconds $Seconds +} + +function Set-StrictAcl { + param([string]$Path) + & icacls.exe $Path /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null +} + +function Protect-PlainText { + param([string]$PlainText) + Add-Type -AssemblyName System.Security + $bytes = [Text.Encoding]::UTF8.GetBytes($PlainText) + $entropy = [Text.Encoding]::UTF8.GetBytes($SecretEntropy) + $protected = [Security.Cryptography.ProtectedData]::Protect( + $bytes, + $entropy, + [Security.Cryptography.DataProtectionScope]::LocalMachine + ) + [Convert]::ToBase64String($protected) +} + +function Unprotect-PlainText { + param([string]$ProtectedText) + Add-Type -AssemblyName System.Security + $bytes = [Convert]::FromBase64String($ProtectedText) + $entropy = [Text.Encoding]::UTF8.GetBytes($SecretEntropy) + $plainBytes = [Security.Cryptography.ProtectedData]::Unprotect( + $bytes, + $entropy, + [Security.Cryptography.DataProtectionScope]::LocalMachine + ) + [Text.Encoding]::UTF8.GetString($plainBytes) +} + +function Save-Secret { + param([string]$PlainText) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Set-Content -Path $SecretPath -Value (Protect-PlainText -PlainText $PlainText) -Force + Set-StrictAcl -Path $SecretPath +} + +function Get-PlainPassword { + if ($DomainAdminPassword) { + Save-Secret -PlainText $DomainAdminPassword + return $DomainAdminPassword + } + + if (Test-Path $SecretPath) { + return Unprotect-PlainText -ProtectedText (Get-Content -Path $SecretPath -Raw) + } + + throw "DomainAdminPassword was not supplied and no stored domain-admin secret exists." +} + +function Get-DomainCredential { + $plain = Get-PlainPassword + $secure = ConvertTo-SecureString $plain -AsPlainText -Force + [pscredential]::new("$DomainAdminUser@$DomainName", $secure) +} + +function Test-RunningAsDomainAdmin { + $identity = [Security.Principal.WindowsIdentity]::GetCurrent() + $domainSam = "$DomainNetbiosName\$DomainAdminUser" + $domainUpn = "$DomainAdminUser@$DomainName" + Write-Log "Running as $($identity.Name)" + ($identity.Name -ieq $domainSam) -or ($identity.Name -ieq $domainUpn) +} + +function Ensure-InstalledCopy { + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + if ($PSCommandPath -and (Test-Path -LiteralPath $PSCommandPath) -and ($PSCommandPath -ne $InstalledScriptPath)) { + Copy-Item -LiteralPath $PSCommandPath -Destination $InstalledScriptPath -Force + } + Set-StrictAcl -Path $InstalledScriptPath +} + +function Start-AsDomainAdminIfNeeded { + if ($RunAsDomainAdminChild -or (Test-RunningAsDomainAdmin)) { + Write-Status "running-as-domain-admin" + return + } + + Write-Status "scheduling-domain-admin-child-task" + $plain = Get-PlainPassword + Ensure-InstalledCopy + + $args = @( + "-NoProfile", + "-ExecutionPolicy Bypass", + "-File `"$InstalledScriptPath`"", + "-DomainName `"$DomainName`"", + "-DomainNetbiosName `"$DomainNetbiosName`"", + "-DomainAdminUser `"$DomainAdminUser`"", + "-ClusterName `"$ClusterName`"", + "-ClusterNodes `"$ClusterNodes`"", + "-ClusterStaticAddresses `"$ClusterStaticAddresses`"", + "-WitnessShare `"$WitnessShare`"", + "-SqlInstanceName `"$SqlInstanceName`"", + "-SqlServiceAccountUser `"$SqlServiceAccountUser`"", + "-AoagDatabaseName `"$AoagDatabaseName`"", + "-AoagAvailabilityGroupName `"$AoagAvailabilityGroupName`"", + "-AoagListenerName `"$AoagListenerName`"", + "-AoagListenerPort $AoagListenerPort", + "-AoagListenerIps `"$AoagListenerIps`"", + "-HadrEndpointName `"$HadrEndpointName`"", + "-HadrEndpointPort $HadrEndpointPort", + "-SampleDatabaseDownloadUrl `"$SampleDatabaseDownloadUrl`"", + "-SetupDir `"$SetupDir`"", + "-SampleScriptPath `"$SampleScriptPath`"", + "-AgScriptPath `"$AgScriptPath`"", + "-SqlDataDriveLetter `"$SqlDataDriveLetter`"", + "-RunAsDomainAdminChild" + ) + + if ($SkipClusterValidation) { + $args += "-SkipClusterValidation" + } + + $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument ($args -join " ") + $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1) + $registeredAs = $null + foreach ($runUser in @("$DomainAdminUser@$DomainName", "$DomainNetbiosName\$DomainAdminUser")) { + try { + Register-ScheduledTask ` + -TaskName $TaskName ` + -Action $action ` + -Trigger $trigger ` + -User $runUser ` + -Password $plain ` + -RunLevel Highest ` + -Force ` + -ErrorAction Stop | Out-Null + $registeredAs = $runUser + break + } + catch { + Write-Log "Registering $TaskName as $runUser failed: $($_.Exception.Message)" + } + } + + if (-not $registeredAs) { + throw "Could not register $TaskName as $DomainAdminUser. Check the domain admin password and account logon rights." + } + + Write-Log "Registered $TaskName to run as $registeredAs" + Start-ScheduledTask -TaskName $TaskName + + for ($i = 1; $i -le 240; $i++) { + Start-Sleep -Seconds 30 + $task = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue + $info = Get-ScheduledTaskInfo -TaskName $TaskName -ErrorAction SilentlyContinue + + if ($task -and $task.State -ne "Running" -and $info.LastTaskResult -ne 267009) { + if ($info.LastTaskResult -eq 0) { + Write-Status "domain-admin-child-task-complete" + Write-Log "$TaskName completed successfully" + Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false -ErrorAction SilentlyContinue + exit 0 + } + + Write-Status "domain-admin-child-task-failed result=$($info.LastTaskResult)" + throw "$TaskName failed. LastTaskResult=$($info.LastTaskResult). See $LogPath." + } + + Write-Status "waiting-for-domain-admin-child-task attempt=$i" + Write-Log "Waiting for $TaskName to finish. Attempt $i." + } + + throw "$TaskName did not finish in time." +} + +function Invoke-NodeCommand { + param( + [string]$Node, + [scriptblock]$ScriptBlock, + [object[]]$ArgumentList = @() + ) + + $localNames = @($env:COMPUTERNAME, "localhost", "$env:COMPUTERNAME.$DomainName") + if ($localNames -contains $Node) { + & $ScriptBlock @ArgumentList + return + } + + $credential = Get-DomainCredential + Invoke-Command -ComputerName $Node -Credential $credential -ScriptBlock $ScriptBlock -ArgumentList $ArgumentList +} + +function Wait-ForNodeWinRm { + param([string]$Node) + + $localNames = @($env:COMPUTERNAME, "localhost", "$env:COMPUTERNAME.$DomainName") + if ($localNames -contains $Node) { + return + } + + $credential = Get-DomainCredential + for ($i = 1; $i -le 120; $i++) { + try { + Test-WSMan -ComputerName $Node -Credential $credential -Authentication Kerberos -ErrorAction Stop | Out-Null + Write-Log "WinRM is reachable on $Node" + return + } + catch { + Write-Status "waiting-for-winrm node=$Node attempt=$i" + Write-Log "Waiting for WinRM on $Node. Attempt ${i}: $($_.Exception.Message)" + Start-Sleep -Seconds 30 + } + } + + throw "WinRM did not become reachable on $Node." +} + +function Wait-ForSqlService { + param([string]$Node) + + for ($i = 1; $i -le 180; $i++) { + try { + Invoke-NodeCommand -Node $Node -ScriptBlock { + param($InstanceName) + $serviceName = if ($InstanceName -eq "MSSQLSERVER") { "MSSQLSERVER" } else { "MSSQL`$$InstanceName" } + $service = Get-Service -Name $serviceName -ErrorAction Stop + if ($service.Status -ne "Running") { + Start-Service -Name $serviceName -ErrorAction Stop + } + } -ArgumentList @($SqlInstanceName) + + Write-Log "SQL Server service is available on $Node" + return + } + catch { + Write-Status "waiting-for-sql-service node=$Node attempt=$i" + Write-Log "Waiting for SQL Server service on $Node. Attempt ${i}: $($_.Exception.Message)" + Start-Sleep -Seconds 30 + } + } + + throw "SQL Server service did not become available on $Node." +} + +function Enable-NodePrerequisites { + param([string]$Node) + + Write-Status "enabling-node-prerequisites node=$Node" + Invoke-NodeCommand -Node $Node -ScriptBlock { + Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools | Out-Null + Install-WindowsFeature -Name RSAT-Clustering-PowerShell -IncludeAllSubFeature | Out-Null + + Set-Service -Name WinRM -StartupType Automatic + Start-Service -Name WinRM -ErrorAction SilentlyContinue + Enable-PSRemoting -Force -SkipNetworkProfileCheck | Out-Null + + foreach ($displayGroup in @("Failover Clusters", "Remote Service Management", "Windows Remote Management")) { + Enable-NetFirewallRule -DisplayGroup $displayGroup -ErrorAction SilentlyContinue | Out-Null + } + + foreach ($rule in @( + @{ Name = "SQL Server TCP 1433"; Port = 1433 }, + @{ Name = "SQL AlwaysOn Endpoint TCP 5022"; Port = 5022 } + )) { + if (-not (Get-NetFirewallRule -DisplayName $rule.Name -ErrorAction SilentlyContinue)) { + New-NetFirewallRule -DisplayName $rule.Name -Direction Inbound -Protocol TCP -LocalPort $rule.Port -Action Allow -Profile Any | Out-Null + } + else { + Enable-NetFirewallRule -DisplayName $rule.Name -ErrorAction SilentlyContinue | Out-Null + } + } + } + + Write-Log "WSFC prerequisites confirmed on $Node" +} + +function Enable-SqlAlwaysOn { + param( + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string]$ComputerName + ) + + Write-Status "enabling-sql-always-on node=$ComputerName" + Invoke-NodeCommand -Node $ComputerName -ScriptBlock { + param($InstanceName, $ExpectedAccount, $ReadyTimeoutAttempts) + + $alwaysOnMarkerPath = "C:\AOAGAutomation\WSFC\TASK_5_2_ALWAYS_ON_READY.txt" + Remove-Item -LiteralPath $alwaysOnMarkerPath -Force -ErrorAction SilentlyContinue + + $serviceName = if ($InstanceName -eq "MSSQLSERVER") { "MSSQLSERVER" } else { "MSSQL`$$InstanceName" } + $actualAccount = (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\$serviceName").ObjectName + if ($actualAccount -ine $ExpectedAccount) { + throw "SQL Server service account is $actualAccount; expected $ExpectedAccount" + } + + # Use the SQL Server WMI configuration provider, which is the API used + # by SQL Server Configuration Manager. The registry key is not a + # supported substitute on every SQL Server build. + $enableSucceeded = $false + $wmiFailure = $null + try { + $wmiAssembly = [Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") + if (-not $wmiAssembly) { + throw "Microsoft.SqlServer.SqlWmiManagement.dll was not found." + } + + $managedComputer = New-Object -TypeName "Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer" + $sqlService = @($managedComputer.Services | Where-Object { $_.Name -ieq $serviceName } | Select-Object -First 1) + if (-not $sqlService) { + throw "SQL Server WMI service $serviceName was not found." + } + + if (-not [bool]$sqlService[0].IsHadrEnabled) { + Write-Output "Enabling Always On through SQL Server WMI on $env:COMPUTERNAME." + $sqlService[0].ChangeHadrServiceSetting($true) + $sqlService[0].Refresh() + } + $enableSucceeded = [bool]$sqlService[0].IsHadrEnabled + } + catch { + $wmiFailure = $_ + } + + if (-not $enableSucceeded) { + # SQL Server PowerShell is the supported fallback when the WMI + # assembly is not available in the installed shared tools. + Import-Module SqlServer -Force -ErrorAction SilentlyContinue + Import-Module SQLPS -Force -ErrorAction SilentlyContinue + $enableCommand = Get-Command Enable-SqlAlwaysOn -ErrorAction SilentlyContinue + if ($enableCommand -and $enableCommand.Parameters.ContainsKey("ServerInstance") -and $enableCommand.Parameters.ContainsKey("Force")) { + $serverInstance = if ($InstanceName -eq "MSSQLSERVER") { $env:COMPUTERNAME } else { "$env:COMPUTERNAME\$InstanceName" } + Write-Output "Enabling Always On through Enable-SqlAlwaysOn on $serverInstance." + & $enableCommand.Name -ServerInstance $serverInstance -Force -ErrorAction Stop + $enableSucceeded = $true + } + } + + if (-not $enableSucceeded) { + $wmiMessage = if ($wmiFailure) { $wmiFailure.Exception.Message } else { "not available" } + throw "Could not enable Always On on $env:COMPUTERNAME. SQL Server WMI failure: $wmiMessage. Enable-SqlAlwaysOn was also unavailable or did not complete." + } + + Restart-Service -Name $serviceName -Force + + $agent = Get-Service -Name SQLSERVERAGENT -ErrorAction SilentlyContinue + if ($agent) { + Set-Service -Name SQLSERVERAGENT -StartupType Automatic + Start-Service -Name SQLSERVERAGENT -ErrorAction SilentlyContinue + } + if ((Get-Service -Name $serviceName).Status -ne "Running") { + throw "SQL Server service did not restart successfully" + } + + $hadrValue = $null + $hadrOutput = @() + for ($attempt = 1; $attempt -le $ReadyTimeoutAttempts; $attempt++) { + $hadrOutput = & sqlcmd.exe -E -C -S localhost -h -1 -W -Q "SET NOCOUNT ON; SELECT CONVERT(int, SERVERPROPERTY('IsHadrEnabled'));" 2>&1 + $hadrExitCode = $LASTEXITCODE + $hadrValue = @( + $hadrOutput | + ForEach-Object { [string]$_ } | + Where-Object { $_ -match '^\s*[01]\s*$' } | + Select-Object -First 1 + ) + if ($hadrExitCode -eq 0 -and $hadrValue.Count -eq 1 -and $hadrValue[0].Trim() -eq "1") { + break + } + + Write-Output "Always On is not ready on $env:COMPUTERNAME after SQL restart; waiting attempt $attempt of $ReadyTimeoutAttempts." + Start-Sleep -Seconds 10 + } + + if ($hadrValue.Count -ne 1 -or $hadrValue[0].Trim() -ne "1") { + throw "SQL Server Always On verification failed on $env:COMPUTERNAME after waiting $ReadyTimeoutAttempts attempts. Expected an exact IsHadrEnabled value of 1; output: $($hadrOutput -join ' | ')" + } + + Set-Content -Path $alwaysOnMarkerPath -Value "Task 5.2 complete: Always On enabled; service account $actualAccount" -Force + } -ArgumentList @($SqlInstanceName, "$DomainNetbiosName\$SqlServiceAccountUser", $AlwaysOnReadyTimeoutAttempts) + + Write-Log "Always On availability groups enabled for $SqlInstanceName on $ComputerName" +} + +function Prepare-SampleDatabase { + if (-not (Test-Path -LiteralPath $SampleScriptPath)) { + throw "Task 5.3 script was not injected at $SampleScriptPath; sample database preparation cannot continue." + } + + Write-Status "preparing-sample-database" + $backupShare = Join-Path -Path $WitnessShare -ChildPath "SampleBackups" + & $SampleScriptPath ` + -SecondaryNode $ClusterNodeList[1] ` + -DatabaseName $AoagDatabaseName ` + -DownloadUrl $SampleDatabaseDownloadUrl ` + -BackupShare $backupShare ` + -SqlServiceAccount "$DomainNetbiosName\$SqlServiceAccountUser" ` + -SqlDataDriveLetter $SqlDataDriveLetter ` + -SetupDir $SetupDir + + $primaryMarker = Join-Path $SetupDir "TASK_5_3_PRIMARY_READY.txt" + $secondaryMarker = Invoke-Command ` + -ComputerName $ClusterNodeList[1] ` + -Authentication Kerberos ` + -ErrorAction Stop ` + -ScriptBlock { Test-Path -LiteralPath "C:\AOAGAutomation\WSFC\TASK_5_3_SECONDARY_READY.txt" } + + if (-not (Test-Path -LiteralPath $primaryMarker)) { + throw "Task 5.3 did not create $primaryMarker" + } + if (-not $secondaryMarker) { + throw "Task 5.3 did not create the secondary NORECOVERY marker on $($ClusterNodeList[1])" + } + + Write-Log "Task 5.3 sample database script completed." +} + +function Configure-AvailabilityGroup { + if (-not (Test-Path -LiteralPath $AgScriptPath)) { + throw "Task 5.4/5.5 script was not injected at $AgScriptPath; availability group and listener configuration cannot continue." + } + + Write-Status "creating-availability-group-and-listener" + & $AgScriptPath ` + -PrimaryNode $ClusterNodeList[0] ` + -SecondaryNode $ClusterNodeList[1] ` + -DomainName $DomainName ` + -AvailabilityGroupName $AoagAvailabilityGroupName ` + -DatabaseName $AoagDatabaseName ` + -EndpointName $HadrEndpointName ` + -EndpointPort $HadrEndpointPort ` + -ListenerName $AoagListenerName ` + -ListenerPort $AoagListenerPort ` + -ListenerIps $AoagListenerIps ` + -SqlServiceAccount "$DomainNetbiosName\$SqlServiceAccountUser" ` + -SetupDir $SetupDir + + if ($LASTEXITCODE -and $LASTEXITCODE -ne 0) { + throw "Task 5.4/5.5 availability group and listener script failed with exit code $LASTEXITCODE. See $SetupDir\configure-availability-group.log." + } + + Write-Log "Task 5.4/5.5 availability group and listener script completed." +} + +function Get-DomainDistinguishedName { + ($DomainName -split "\." | ForEach-Object { "DC=$_" }) -join "," +} + +function Get-WitnessServerName { + $match = [regex]::Match($WitnessShare, '^\\\\([^\\]+)\\') + if (-not $match.Success) { + throw "WitnessShare must be a UNC path such as \\DC-VM.$DomainName\ClusterWitness" + } + + $match.Groups[1].Value +} + +function Remove-StaleClusterComputerAccount { + $credential = Get-DomainCredential + $dcHost = Get-WitnessServerName + + try { + Write-Log "Checking DC $dcHost for stale cluster computer account $ClusterName`$" + $result = Invoke-Command ` + -ComputerName $dcHost ` + -Credential $credential ` + -Authentication Kerberos ` + -ErrorAction Stop ` + -ScriptBlock { + param([string]$Name) + + Import-Module ActiveDirectory -ErrorAction Stop + $ldapFilter = "(sAMAccountName=$Name`$)" + $computer = Get-ADComputer -LDAPFilter $ldapFilter -ErrorAction SilentlyContinue + + if (-not $computer) { + return [pscustomobject]@{ + Found = $false + Removed = $false + Name = $Name + } + } + + $distinguishedName = $computer.DistinguishedName + Disable-ADAccount -Identity $computer -ErrorAction SilentlyContinue + Remove-ADComputer -Identity $computer -Confirm:$false -ErrorAction Stop + + for ($attempt = 1; $attempt -le 6; $attempt++) { + if (-not (Get-ADComputer -LDAPFilter $ldapFilter -ErrorAction SilentlyContinue)) { + return [pscustomobject]@{ + Found = $true + Removed = $true + Name = $Name + DistinguishedName = $distinguishedName + } + } + Start-Sleep -Seconds 2 + } + + throw "AD computer account $Name`$ still exists after removal" + } ` + -ArgumentList $ClusterName + + if ($result.Removed) { + Write-Log "Removed stale cluster computer account $ClusterName`$ from $dcHost" + } + elseif ($result.Found) { + throw "Stale cluster computer account $ClusterName`$ was found but was not removed" + } + else { + Write-Log "No stale cluster computer account found for $ClusterName`$" + } + } + catch { + throw "Stale cluster computer account cleanup failed on $($dcHost): $($_.Exception.Message)" + } +} + +function Grant-ClusterCreateComputerPermission { + Write-Status "granting-cluster-ad-permission" + Add-Type -AssemblyName System.DirectoryServices + $domainDn = Get-DomainDistinguishedName + for ($attempt = 1; $attempt -le 18; $attempt++) { + try { + $container = [DirectoryServices.DirectoryEntry]::new("LDAP://CN=Computers,$domainDn") + $identity = [Security.Principal.NTAccount]::new("$DomainNetbiosName\$ClusterName`$") + $rule = [DirectoryServices.ActiveDirectoryAccessRule]::new( + $identity, + [DirectoryServices.ActiveDirectoryRights]::CreateChild, + [Security.AccessControl.AccessControlType]::Allow, + [Guid]"bf967a86-0de6-11d0-a285-00aa003049e2" + ) + $acl = $container.ObjectSecurity + $acl.AddAccessRule($rule) + $acl.AddAccessRule([DirectoryServices.ActiveDirectoryAccessRule]::new( + $identity, + [DirectoryServices.ActiveDirectoryRights]::ReadProperty, + [Security.AccessControl.AccessControlType]::Allow, + [DirectoryServices.ActiveDirectorySecurityInheritance]::All + )) + $container.ObjectSecurity = $acl + $container.CommitChanges() + Set-Content -Path $AdPermissionReadyPath -Value "Task 5.1 complete: Create Computer objects and Read all properties" -Force + Write-Log "Granted $ClusterName`$ Create Computer objects and Read all properties in CN=Computers" + return + } + catch { + if ($attempt -eq 18) { throw } + Write-Log "Waiting to grant cluster AD permission. Attempt $attempt. $($_.Exception.Message)" + Start-Sleep -Seconds 10 + } + } +} + +function Ensure-Cluster { + Import-Module FailoverClusters -ErrorAction Stop + + $existing = Get-Cluster -Name $ClusterName -ErrorAction SilentlyContinue + if (-not $existing) { + Remove-StaleClusterComputerAccount + + if (-not $SkipClusterValidation) { + Write-Status "running-cluster-validation" + Write-Log "Running cluster validation for $($ClusterNodeList -join ', ')" + Test-Cluster -Node $ClusterNodeList -WarningAction SilentlyContinue | Out-Null + } + else { + Write-Log "Skipping cluster validation by request" + } + + Write-Status "creating-cluster name=$ClusterName" + Write-Log "Creating cluster $ClusterName with nodes $($ClusterNodeList -join ', ') and IPs $($ClusterAddressList -join ', ')" + New-Cluster -Name $ClusterName -Node $ClusterNodeList -StaticAddress $ClusterAddressList -NoStorage | Out-Null + } + else { + Write-Status "cluster-already-exists name=$ClusterName" + Write-Log "Cluster $ClusterName already exists" + } + + Write-Status "configuring-file-share-witness" + Write-Log "Configuring file share witness $WitnessShare" + for ($attempt = 1; $attempt -le 18; $attempt++) { + try { + Set-ClusterQuorum -FileShareWitness $WitnessShare -ErrorAction Stop | Out-Null + break + } + catch { + if ($attempt -eq 18) { throw } + Write-Status "waiting-for-cluster-quorum attempt=$attempt" + Write-Log "Cluster is not ready for quorum configuration. Attempt $attempt. $($_.Exception.Message)" + Start-Sleep -Seconds 10 + } + } +} + +try { + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Write-Log "WSFC automation started" + Write-Status "starting" + + Start-AsDomainAdminIfNeeded + + foreach ($node in $ClusterNodeList) { + Write-Status "processing-node node=$node" + Wait-ForNodeWinRm -Node $node + Wait-ForSqlService -Node $node + Enable-NodePrerequisites -Node $node + } + + Ensure-Cluster + Grant-ClusterCreateComputerPermission + Wait-ForWsfcSettle -Phase "after-cluster-and-witness" -Seconds $ClusterSettleSeconds + + Write-Log "Always On target nodes: $($ClusterNodeList -join ', ')" + foreach ($clusterNode in $ClusterNodeList) { + $targetNode = "$clusterNode".Trim() + if ([string]::IsNullOrWhiteSpace($targetNode)) { + throw "A blank node name was found while enabling Always On. ClusterNodes='$ClusterNodes'." + } + Enable-SqlAlwaysOn -ComputerName $targetNode + } + + Wait-ForWsfcSettle -Phase "after-always-on" -Seconds $AlwaysOnSettleSeconds + Prepare-SampleDatabase + Configure-AvailabilityGroup + + $verify = [ordered]@{ + cluster_name = $ClusterName + cluster_nodes = $ClusterNodeList + cluster_static_addresses = $ClusterAddressList + witness_share = $WitnessShare + sql_instance_name = $SqlInstanceName + completed_utc = (Get-Date).ToUniversalTime().ToString("o") + } + Wait-ForWsfcSettle -Phase "before-ready-marker" -Seconds $FinalReadySettleSeconds + $verify | ConvertTo-Json | Set-Content -Path $VerifyPath -Force + Set-Content -Path $ReadyPath -Value "WSFC $ClusterName ready. Witness: $WitnessShare" -Force + Write-Status "complete" + Remove-Item -Path $SecretPath -Force -ErrorAction SilentlyContinue + Write-Log "WSFC automation complete" +} +catch { + Write-Status "failed: $($_.Exception.Message)" + Write-Log "ERROR: $($_ | Out-String -Width 65535)" + throw +} diff --git a/automation-mssql-server-aoag-sample/sql-rebuild.tfplan b/automation-mssql-server-aoag-sample/sql-rebuild.tfplan new file mode 100644 index 0000000000000000000000000000000000000000..cbd1ff94217d17f3026358d1ed899b449199440c GIT binary patch literal 106346 zcmV)bK&ih_O9KQH00;mG0A!~HT>t<8000000000000saF0CZ+>Y+-IyR0RM5#a44_ z?EPzu^w@bHh>vW|MIAer_TQE>PT=-fiv9Pv`{m)Ky6OdtbypY3Dt3|8JR}c`Tqos2 z9(Iw%!%LB@3+Z^_TjGt37$Yx|jkUY6EK3^A#iNmAU2VsMv4a4C1>}Q*?8JcY1`CqICMq^F2{Iu!iRLk8gc{Ij0kXD?A}Zv5BB!(`9FU@T35tdaV$v-LCE=JR?bLL zc_)4?Z7TkP$cWayYlY-=vGFudWF!3W&Y=3a;`)}#_1!nK` zKi8OTW@`s8s_a~1iz1kuKd7IjRgqB|6x-jkwe=f+^29S9A}k7s_qD7XLe z*7t1MOc#k46wf@d{p{9XI=?r?NwEDlww}JF%U6=JoKu|P=^hD^Z2O0|zBdVytf(hZ zI+=QRw)R)Ie`4zg%Q`%% z8>RpM)(5>Tt0v2gE|OqUMon;cNM!rJ+1g%3DalslBuel!m~6&xJKQ?Cbx@tNK|QT- zI-HAgx5VizD}!BdV`yVG%;UzR`8rQX(9~XqNnNg{UYzffMJd#ABnbIZSS0SA>AW#yTm?-*OvF!bTU=s@1y+xly_Y3-s6itWF?^}$`WLJlOt`tslOnp)VkH&!})pa6$G&VNasLdYj++feV3MVcvXb z>xm+mMp=4ity?9z5yl4Wr4{{5pTMQ`>BqNzfcTfHxx4j4Hz?#18uUY3AJ|mC+x&Uz z={G*m{mHz@mJtbx|N5DY2+FFc_o|>M@JUuAdr@{RE3i+4YndNC^S6~xJ+=Lbr?!6U zsc$~^1E2TmEXtRyjSMCp&HT80?hCh;k)Xm6EuVYwW{sD?g>*pcrCVXZ@a*o)+G_+x@Wi=we^+ z>g7osS^PVENNx4RaNcNbpDl#Zp*-56dUcLQF$uepFQjN zqI^?)@2)F;O3Qt(_6dpnc`(IX7|m)wiZg+%R-q6tg>asi`}5Uo;WcxCZSCWiNpKRS z0hv^ITK>`(N2ltvYvO6ScUT0t3P`v9gL8P-aEyyG#Cy?CpQ+tu)bDo7DE$h{u&rID zy~_wD)4tBMuJha;$20EBBr0=?>rR(sDwv7tl|abGr1?-#saUV58!v zuzvCR<06{{e)Yn}Voa-`tUeKuH|#UnEdBH@B1z6fa#CY5t0SD|`zg5qXO$D1YHoWreHYg#&aj7#?(o;>%T(1QY*E zm~Z^ZOI?n-tc~u&VtliICof0kqzEvXWGSs*e=$zVNgULZh`jchB&hJlBlv|+Zsz14+^>}vHZ{r| z`@ze%_Wi}o+dRi4SO#fTUa-mQe{fz*qm#g|H?)&yH1g}oMq;mhp$Kvs-A+KSf3^s! zAU!QA7BncId%3K#V&lASX2NGKT((P45GSC9h(z1q7ZGUb-kui0~C3G6FR1 zV*yNAr{DI`d><^QKlM{DUsT$V=8ILZuCC=2N9otj|f_v*8#uB?6>y;!*Tr1vy8woI|IY~{Q0V5 zQA9VK>vO|?I8u*?qAB+7KG)tncQz*BLmmF4(;*Dl1^Wc-@*T$C?F1*SUD68n+wFbe zvn>AXDl6hi5zH6Csl)j3hdp|MtIp|JJ{F|F1m^3;FO2 znXt!k{O!)~R|aVn6lqZHOmP*gaJ_r(4L^TQ)qi{`FW5g1FPt}a-qyXnm8@EDbeiHd zp+Zz-B+uBauKBEqPRN1^9Ph_8ok#nnk4e+Q%l)9huiU;IdhN>os<6kk_`4a4PjCFy zchQ%B_|xHU-f(pxWUNR&z{)+pP$(J*H3)&u^;-<*-CG*q55UMC?|PPOs3vzpWBpgiqG8UC@7!% z!d-%VUxEiHyKWh~#(}1c3~?9i9`ts>s~+~_MSkION946Hp2h_(;(q7eclq2uyKC{} zR6d(&_%)v{$|@)(ImLc(YVc0Ik4=-`S!R&i3O@k`{hq+83{hQ zx%y_q_eq%1;4|f%p5FM0n``wm8Q;Z*c+F}-XN4DsVUx#EI4jG{U-3myt^%PcxMDh; zhKqSsw5mMJ5*jVJmCx2*w8Xy`m6IC^bYmU$QdCaDniQL7{o^m6uKmiOSmLu->j37LO;P{Yn$1ITv`-h8Jp1AE2{fBvIaWQI>av;8~IY<>Kh@37@3zsGZT z?7h6$JDeDYlVMa=Uks*2P?k4$pH2gVAN_A%BEgwk8)fOoH$SQ47vF3wj#d=wO3P-Nx9kkxo2 zsqvNMbQ9l0pCI={dmF$%xB>9usLYNZZmK;Dfqwmc|LRov-uJJrB-DFje&|BJ?-Sex z`ZL4c!STZp>fbwq^!KhL)H8hF0s-C!?QH;G*Z_PeHt_4;^>c&(17Qp-mr!fD)gJ6E)0%jSMWt624WAOj< z*G{qh+Lea>_hIkc8u~N}(rPC^Ju|X1I9~D(0({fieJgOk{=GkSs;l4oQ&$4~Wq5qJ z6Qm^1qO{scaGnRnLy_*Uo=W#uuLSmaL+w5ca9@AlAD(g1A6^OGSM4Z;>Q3J@Px*Z( zO3R1@8^7pX2mC>N3iyNgN`Sw16R`2n5qoEdy(=Mp)jm7byJJS*3cmWe4d$PF5L9_ZOAf-=w2GAMU&N_Nh+19q}JD9+-% z?>4J^hXsNj1uQN%hK~Xkj{+8t0v7ib;AI0AkKzHBhWVWq5BS>6c)-OuEwXdgz=QBU z3I{w0>>JOV#{+gwvSR1-Jm^w8&}Ot@{z~4fA#ULUwN-2!}{d@KEHokVv=?e3J&YCYjmxyqIlu1 zZSZyylc2Yen54B^;*(%Er#MXmvU`Ffnk|FkD)~v?_|SQK*Y4Na{qmF;cV@r3Pdj&} zE8(sS{2t%|!?Zh~^)99>VS&(UwNL!rHep-4JV(6UHsHA34%qMbK4EyieexbiSMs;+ znXY6b(#eG=pZ?P)uQ;v#;S<{*d1C8VpZLgkR^+?2$F=Wx1^H{|Z(*Efm)beaE_IOu z>rw&dD`e&6Rsp*x*}RUp)_x)+-g@RmS;7i_IVai4l8b5T301vXRr|qg$}N37f9Wji z)ma4o@86Oq`QvXh8vnU8s7@6)NUIG8Kcp;PFP>-ds`KFESGJO^J)U9zqFKpX(w^;| z>FU$J{Fkmco&VEQPd%~y|Gt0g|9Q`3@Z$N7(7w%3b{L$Od@mVj`8sH>70q})%@5wX zp)}rxp=57KomI~1ZkmzcN>=hmZdl2CHFZA|Il5^g%Q?Mw8+T@f+`kU^Jr;Brro%Ds zW;QP#VBY7L&aMy;W|!yNtzGYg2fNJ4e!IQzpRi1udy{$G{*T|i^&h_bJ)(f$c>H0gc0(&(dpES=8;?Eq*7ZWz0iElByUw@w04FdE!?wU>^kO5ATNPsS zly_5wZ#?$co#XtC#~y=Udf(4IGf9KhBv@Ako|IvfY^d?9yJxOHbIIp;=I4L%;nJ?V zwe{526K61g_Pb|)$Ji8hdP z?oeKuGs6=KZ#};KKR&+oo9~rr^+}=4-W~#QdBs;+)AD4@p-vQmc{E*2-$n@F?WDur z-z@?^OZ|wxgXypz+~}3kVL!OJJL3ZUbs+444#zU>7I!HF_ZBBvhb3)}zvdWU6*ggG`CGT-bZ3yS%S8G4NhBCo9&gID!<&9Z&KsKC$_tMQ6nz`yr{x+zTLyqr~l8Zreb~Z$?fN# z-1_8`mtnS#Udyj>bZiJkk}HQ!zpJ+cGA%T4l1n&F4|>_jL|P?H+VOj0=S26^)owZT zM1P(vNBt8SS>5SdpRaez>HW@d*}r~=xa_?pn+B=>yxJ`M}nvKJd-Q zK6tmR&ad4P?0@-m=bB~qm}@NmowX&izsGj=-OoPkk1XD{2lNLwc64^jIR(3CVfNi} z;iW-!^SgjAZZ4h`UTSOTJm>S-9ruQx#$l9rHJb(`o`+n+k?H<^9WT#w}^Pf@;=O|Q@0`3cJMqgQ*exT^g z=%xbf-R+x(59Gc5J&xc1R%~E>?oF!j!Ud&(&);z^!T#sYho?=<{ek{wr^DOJPD&pm3ostUk^RkYM>0D@5bH0kQIbSrM zu=cWec|wzEYt>967MG7$_MLxy?vgCazCD(0ogNN)&#)}_?ZvX}(_gr1Z1CSdx&6&2 zxBl!>E9if6Ex#rwCw6zzUXX>XO5I&&I6dH+vKY-3UzqQ=`+a-89}kcDNwu1e$MSd@ z$R}|YyR~yD_u57N)>n!5Ic@gNETsS4JG78~Pl{+mxc|e|8qTkc)*oi2R)v>UoF{Cs zFu=kr#ObEc38htGXwO#9cKkf!-M$(Pn2f-V+NveP=#Ph}>!#Csbp3M27*ChhU%cz( zcj8>*ZK1zQ-Epzv4o2&1Zx+F|s|(=1y*-c`g}wIvw@t8b?|}>N+fO-u<*KappPt>@PBslhQN7)!@!9W`*AHtxw7OZaKd*y!Fj@h_~LOLfSCbZ(gnG{2J;P(y9=pXZgBJye_PY zC5_5eY>vvr^PHS}Hnso{$?t8;({V$%}`jbmh*FUh{d8xI>fBS4{eCWZvG^bDhhpUp(KYnWazk6!yxl5lAaYyEX-*d|# zs?{p-WP}a})x0zs&mf1yuMbDK?hk_Q!s&RfwD#pid=kmoNf8~ABPv&KebPPnh|xPk zPw&(Tk@vEs-qHz?mfEUEQ&gqzVXI6k+&kGYj+XR zWjcKz!3le<_WrjE!TrPo3GU`WxIeqFY-Z2i{dw-ms4=9a>@e&hCQH@6gs zf3FRN&k+Be-%f~yvTk{N;N>y(;>ycrb;z<=6o)7K`cotO`z@+E3xKPW{(zw|D15@=L!Tl@l5* zgGmxi&(d0MtnEoq6ajhtvl~mh42t^PJ$@C6hB<=bWS|-5fp#cf;gj~SY?hiAAF97e zX`9jqeOaBa_PvuPUIn$VVyBCQ&4ZKuVilBp5U~+APtuc=D`>+B)7Ekkg+y53FZ(#h z{%MZSn;%b~MC4okMf}hEXG%4>z!8zxzHl~&Pr3i%WrvUc`tRbhjHc;iV_Bm7^{<}) z%!_Ebsk||goAD{g>#ts1x-cZ4tcpeO(EJI3-2`E>78LtaVB zjor@hbdLl{c8_oHf9_13cF*7Tp+WJoeU@3w2yqd-@!_BOnbSV@Zg1^p4$tIzUiXzS zE2|BlGl$|+#NS;eZ~XX1rkIe^Y_OZZ&u!1CMbB|m+<4{W`LvvF4B~SyUdTPlU%Wx) z%olE0PFz(*UC1q#loWtPKa~gTjoV_;w}7T7Q{v4&rjy_ zPeloy25&g$eQbW*M^o4^j~kEX>pUSrQ+pLAb-9{)alTI$rBKI_AmmG7vEZjCi)xVv zC-|!uxF;8Zvl}e=>WxbmX_S8Pjb}F2n+8+t*OMqA<>Vr5-Ys_gr6^wqle4w!YoCwG ziC<)8IY}1@o}?KGUVr09qjHijCqe2Lb$-@eI;jermQghc($i*Mdx_#j>W7mgBf+P& z19O1HSI&zr@cjK(Z#5`Yod=&iK7a>k08Q&)IB><@XHKFbS>Ymh-V&w3q{W~1?PqCu znvm|sy(vyMzQuXpmqYma%NIE~?$+~{iy+B16pbr%pZp=*i+~;WI z2Whzhb~ZTWb2r}Z`^6U)Wl)^9{%`-Q|6{;)8x?h$V5}{iG0aI~9VsHJ{iIXtw#Hz) zv#|OKbrV#(wlH&zgU;YkF^Sw+4W`+VB59QL(F)469`u;$AXZyrQ99Nw(j{ZK^la(0 zjj;%OgJ~99tXAW3m$77t!G{N(ftW9`%~$8YV~a%$8FxiI9!v+bgZ0qXmR{oKE{AH@ z0I|n{a8uu5I}6fRmY%$(ek82?MvM+4s5)b`aM+Ogv>Ot6Iz2YJM;=QTLv;50HoS*} zm3j!uvwNnMD|af#ri;@)Q&@ZKx^%~b%1Js)($^S2kygXB+o;CiNRdeGjJqp$tf(GK zbY~2+&GQ>cC-)+7_WKZ;?id1Jgt;FbL}aW{KLW8chT+gwmL3Ni(pN(NP$)gt-{4og zgfiHcN+e4SW`xkQt?99G5b0K@3v1BxSRuhS0e)gt@Eosxn=HVMHU`st_2!q4B;;mrPsU6muo*Z_M$yl$<6qVjVcI2jL;czhbSbmB) zB`2~~>9@$plsoC5Umgt(52k~DH}n&!I+Ci*v*unxh#~^&b6V)KR(=>AOb3VEt}E-+ z>2t_vK@JaY=mX-E(C>GtAFr1#I2*$uazn3==-_Y~1@jebl7n$SsD3pxzuLPQXgwa z{#Y477Oew&&}b|I{tO*?T(|IhKIg?cQ00ml*~qbDWoV;N^5o9Yu%tuFg1|K;eb|t` z%2C6x(A)sp%IXao%jhhKsgype)sV)V-uSi75%#DdAxThZ$--Q-p*@mOYB z2aQgp5K8&T>iLCkgT6jPhYpo0FP1W7Yb!MYvJQ}@vuzNJbJb-fO`X96M&-o!@eGCM<|w#5QC6Cqs7QVD?Q2Q z7?ISZWTtVjYl>~&P8Hse6xAH(*h+H6HKB|8#L<~>;3H&OKq|Bz>S81Z#n2Ly1eLjor7Fo(zv% z87Rgqv^+Z;YB7O<>628o zr6NeG1?fq19gtA7$pX(Hwj`w(AvYOG-L5?gTSn4xFw;32A!X^>{u*=Ha%4`MBXF=J zv9_>!I_Gmv0a-H8WLg*&fDRY4YOF211|>*VMtbAokr}Tn%U`MtQA{=m!Hg;zqA4~t z9&$)RoXbNIt&CV;aKGyqoQsLb2tFq*{9d;*W3{$yI16kEqM5tY7>cdF#ky&{b~!0> zQ$@leJvMD2(>O|9ke3dl@WxmxNRKLxNgWbZlGB8)m(W=2k%5^gT^DGfW5p{HXS{Fc zj@?rRK|i0vIImG(0|Ct)R|K({(t#@Z!jKIM6r;)k`3jC9on6>)I3S_wO<%~61_t0QKiJJok+5FP#`77L4Vwvw`5s`EuB(wP7g+VKv<_CDR|fp`RXX z+8J1~(^#So0+HsX(ZPCBIc859TQiBZQZn~gDa8pqG+E`?jwQ}(bk6OCJ(tziCd~(0 zEV-H`iLR)DBL<}wEP+yk`lj6+pJ(j3zqI!IcMY?>K$RUS3r zkta(nVpJ_35X%x3h%IFl#1Ls*%wcgo*C=ctI$+7nWi=)o=?s`bn;_gsJ&*BMzNGaW zOG{MAMYyN)K1+pwYC{X;Yu_ZH%F;t5yFHDD>PYI&G_isP>Mpe&Iu2wc>9)HFW=Jv^ zhs7y@1c|&g4pqnuSS-^lIPCPS7-TL37)?U99+#{MXrUVwf&kUTMmlEKwi9bZ6w_L> zHRy>sXN)bukkyrDcc2$nGfbz9%LsimQyHHNdxQ>HOPVq|tI2+!h@K=J2QxCzIJC56 zcWy9)VkCykQU9RPO>O8Sb>&#Jwo+&~tVV-A?Avi?Xj<#iXWSGXR;m{(GtaKNc3%|? z88jFueN~hMTc$^@EfgeK_bsNgCV=Qfv}$t(Ej6xGPlii}8#LOCRDM5XNUHFv?W#r( zQ9r2^Z>%i+1dZKfo5Qi8vabIU3(qcC|{6SSHm1Zm<6#RX$x=Wj!3MHR8cz$#I>czz;#$R zvgEKb?GA6vkc@kZgZt#z<3fny&hd}|-BFLKj!9Q`+N~iAfD6KfPNzUm5Kn9(9@QO| z0Elf{(HwSd__J_r$->M=U6Dv|am40OPqY-+nHp17OQ51MK+{Z`>WwxwEhSfDX=wG_BZ%l4k97e_>dI#| zjG~e=d)*NRG@n_8W6Q?3#M(}j78C*F*;Fta=pbv| zH{vj}Y^eEc$8_0TbSz@~l#YE{vv6N>pe&`9giM#lYn6jcAg@_CmNLY3MJHa*wNybw zc6;VbL5LHVM~n(EBk71*oY|+j%jCSu<)JTGD>D{YzaJhsNy+LaYB^NuseP+~Y=zL+ z?dy!&w`{Z?GSZ=j+_8_~LYooCMBQ1097`_h9|*QQRsp$giuJnyl6u2)oGcM4l`GU(^`brz4Y!YnScF?pQOmSPFd$ ztqe{QARstMV9#I)JCd~$QpvO>%Bg*=aK~}2+LEG5)bT6|hzOTPU*v-g_9P6U=q@dw zHYx}ET0(lNtn!`|wjd*MCZpJpiu|aLYL5jg%T!lZBe5gVZQ(`-mZglmjXy0)Odv`T zl3;DvXrabR3KKy#V>HlBa*UXc>Y*G!cAXIFFr&V7tjgesAi72jsj;lcxQ7ZqY8P(2 z?qhMiGJ8|rG^Ld{mLeFtD+|!jo4LT2$dR3Nn9(@2J=X2JeQiBLlJ1LcY?~p_EY)YnqO4*P+%sts0=3{w$;!^+vLNsNRJoTLp5Yn?z@)BL`_G=P-bcG%O$ z-6MyRQl}1Y^tz(Up+cL57$!pHFbMg*?lCf|$RAVHp~M~ar4`|nt}S&l-3|>a0U=}v z6(u}KP%F@~XMbS#f`Ba?+ZGAdS0l?08mwRhO& zN3y;`EKTfGVO7%wBN4?o2II{-(~L=^G42A|oeah~@?4e^qotwi_eF-V!U&r2(u}IHDNQ*76vc@13MRSiaZ)-2Xh^^T z8`z<#NnHwK#1f-Z7%^hKG#1>kRrpluxtz4nxe()i$oXtFhO%4OcAJI$+|p6Ez-D*p zSfT96pi+BM0Yzex9-R*XWHFdB4p0(}O0Gdk-$-&z6{{t*(b%&}&Q8$+Gfd&fRp>WT zsmYR!xB-tFtI^|pjI9ztxk?-gB^ho z4mJ8Nt8(tzrYcKpcc3#&L2P7cHmWh0*6w(~x>DHKu`g&n4S96B^ud(X#whc|^~#7f z)0Ak-;9Om!#I<{r*FpCP1D76guhtN#PtOj^F~V=WyE0Nb|0N6rlDY7}+#5`%>+sG_zwk9GR|Ri7rLJ zUAc(_y@X~#j5K5s)wDXjqq=jf_UQ_9(C}?Wz!uD0R^kj6H9mrUpK5MEbDP9c52jk- zB!~?Vth62}vE9*3wpyM(2NBBUTw}3165ESrFFMof!&;EHr{K;@u=1y5_-Z zV>dAh8J7Wu)h8;pq=6lGx^_ZE7irkG^O2i$3=)U7(TA!Y3#P`n;Ybt#0z?hQxoGu> z<}yOhHj!qr+Su=lh0b)4HM3S^tUxF2atNXINQ7&*4^5NlWICtBj@8N4u~d7eHXO+U zWA>=!NeZxgQl&HE+8XCbk16yU?Z}n^tFmF{+V0q8{01dpC6m(w2MIHj+rq=9jmSV?Da#3(=?!x|+a>ov%Q zoZ{%Q;COvBMr^rMQO-fR6RY;7KUaX9*f_DY_90`p!~)ew43R5`iq6twC)Grf z2quw3+mP3e$B{K`G{Is^UbVj1WYSC>yNW7?G3GQ5+2QfX%1tt}mbzV~=J#CS3mp(UOM~HBStgX?kJM_l1rN>(1Aj%_7Ep$^`9|3|?Sz4K_n_0BmSa!)l zqrD<=9wMLuofR_E0&$QkM=+@%WGbvmuz>6UkOU%!4wgO*0Yv$+9j_5$l$knqBOfUe zi9rTM0s5@gcs7&>8%D+$rY6dl8l_=CsqM*vZE+#AQn>V!-0&IN(qfB;bti=lOtI)% z!@9$HJtPwoDZy;YxSY0BB{#&WTNvYf<%ykz7b}u)LtBk24)>JsbbZNE$z=w$l`1h| z@>S65c2xv{ci6$+*mW&RDpgb*WNNx466i3BM*1jqEWXh<>u|XgoRkcG6xs%rSQxKY z7Ar-N?TipptqoJH4YO;x4Y5=U9IMws58Xs1Dgr;jNYOmA=WojI+RjT!UNeOMU+af)2Ck~Cx~)fk@D zIdbURurfebM&ocz#*lNYY^}=5Ks#&~cC2*$RD!CkHLA@N8@o;V%960{!T=VJ`mTn| zt`qd9jh`N@M~J#ef=5^+V^yNI)+3nA)ItMV>i4C{Nu(o_g|gd&wQsK-VupP;ri_tx z7j{n?_(*Y(aK43X#JP+XD+#g?gZk>mhcx`Y(i{O~kXRUz^nkM{U27>>*!?L3 zxg5A+o3oS7$U|`MSk=NX+Vzl?hIkgQG?DU0U{K?}#;B}jYAAO+K$egNvcu(;7Zbrv zG*08-KyQ2wj^QzBT-)q-*Mx}+Z)UNGg@q;Nl=Qp2#~rLZN@Sc^wV%RcEe^+evQ~+R zj!ddE$VQ0BB8$f;Gy7JJQlE27afLy~5nG#C$vQEuj*ZPOLSlIA_29AE*GgyHjeP_w zhat!I7{*4=HI4v1wwTT#lDe#&tWykffX8m>07MZrwOl__S0 zI?gknrAd%DjHcRF=g_b^$2vf3O+>bhGzKSYgcI1nz7``^Dm6|r zA%Yf6gjD0)2*rG1vLG2U<(kY68nvI#(70>j#Nr`?YKQ6^j#a^$L5NMwCO~2ARFMs~ zGq7i3?E+1P>2!&a%Be}b4n(KXddf_rdEv!cZS^UOXAq(>(CTtk)yDCr2)x-LA?a#_Xdmib@_^Xkm*I!mf99v?8o>V!U7P~TB8X!C}B-rQxwMJq%L=u@{qsqKSU0IwmGey+XsgmgS zszH(uY%v!M8|Z;ec&!N?+m<4C?1m02nQqVLAyR>B3$@;8j-6C}EF#rU_(G>jY_jW? z$2lttzzU{$_o#u2$MD5bgG$IrvXda_j@_Y#x{B4)9F@YJ(IbgR4;r1z9h1{JVrqF1 zcedt+MdPL{yQ)A*%wmNsz;?2SL&)bknaP6&u*o)&|3HsDZ#XDhUBJ zAht5lK)AN0P}X9U88eab7*{~EE>JDnLQJ*L>UM39sf`m?G7%l90LEwr*ZPcN$dpT$ zrQJZz=g-gI+#s=2cnN~G96Euesh%acD#%O3 zW({fL!UIa^jcH1lvep>NjckFlC5`n=jj<6d-NViRjwxgJXc+Wi>{~+LYe*HyZN`X& zh?u0&00AWJI%bcqM)rV#KpDYtcNFv$9mRQTBvW2v*6EPZj+{ncno^#7b-UR3LwFXB zJfs2G55rL}T*4mZokSXqM4q?$&dQdiyxP|if2{Q_6H2HjjWkwW;=Wj0MyDoHzH|^Z ze0!}qHdq@mv`srK4Y|E?r7rMk%=kTWbj0wS$trUKpk&$k%t_+4+UpLDsG4aBT8$*N zF@ZMl?W#FyG!7*`P+5f`Y>trVngpo8v(?75py5+knNqw$@_IDtOH@rtfsEa9vqm7? zfFqX6VrFftVko0NY^i4V7;>)R(0s15ZlxxjX4q&8V$%hR74`^(6pPhJYm~m52!o@h z+YC9E^SSOJO5JfF>4M3qYmEgXO=R@o_SD{*wsDBDb!S(n=xb&g3v|bktzy@BdgQWWF+dqP5pGRR%2ZtX!FE$ zX2>Y>Oo_TP4H+hlRX{5e15M=)8i$eUkuAuOZLhFM7+(}bWWt#mw;9KxEmzhSuAD75 z^75rn!gXhWjk5NsvT$v|@EYk*OWZXwrOKjtWXEn}0&;9Hh}u1ps{M?ICON{kptuc$ z4$_w>78n9n!5FPgAk{|#pRC0X+Q;`N}{qcM94ZcbZn!7R!WeM zAg9Wx`(fFYG%E zO*D4BwCSM1EHpJcTnA}5wg7a39uOnNXgD%;)@0jjOqIrrk*YF^X{B1JCR%FPXsJ=1)wu4$kA<0&LQ`d_WQke`Eh+@E zHV^Dvbyy@DtWfx4gdNU3#$zdV8?vxyJ~WdyYcx>u(r#>+;Yd$&D~N@`Xe?!hs7Y3% zE-m15LsoIsRHMEKIM3{|zU&^mR<%-7WpTu=p*!mq>e$VPY-i@NA+Tq3u3A#8#ciP3 z$ZkRkF+~{XZb)1Jfg)5x=f9(DH zk0V)j;D@tH+WwYuC9P1auWS!wBR8eBMp9RHJV<7-cMXV)WCSCUj4TG@tr_LSD;dGK z@kmDS5gary8VQp9gYA}fZD?0myFD7sLp{?oT8%Us%^0d}$^U?nKe%N>3kWcecDsV9b$NzXg1p_JWl{xkomt0uXQxQ@b6qKINJyV-T@p_^iW9_L z9>t!rKC7~`F5X5u35(mbL@@&e3wu0o;G7S}9g3Ssq^hz+jpQ)Y>0n`nI|j1lnTbiU zu8y%m2bj-v&`d;<;d+?(OegC@9x;yvV9TAPHqvG0naQg{2Vn%0w`C)V5MfrYa5y~^ zg;42uD4eT|PEdBxMVTRsu;Wvioag{}CaH?1S8-1zbH)+zsMD)8)D|c312E|&v7^jX ztve79O%j1F+b5b(NlqnWC=N`%hd}$2xj4Z|Q2=b)Y8eUF3|*rM;x;bM#AEi9lg(L2 zR(YNhWl>VA9L15kM9y@NWO+}S8OIG<7ba6q1d`AcqYg5SPG${JlGOo=kQ2+bFHVJ; z#EA_~0F9Q&GYwHtF9cB)O*D)+ms2}U?wI9;=?P*s6psTe&y6|1fl5uzQzel#W_DGl zgsH--3FpN^hhm7XThVliJe6b>2yO@M$f2U~!c-IOF)Nw_5$z_59AFa9+N{iVxIqIG z0gI>}z>OB`bbQm*WoBfcWGrH6RqDm#4mFjHrhVLXW0yt9rXkq_UJUJ?&-s?z@D!;M zvx6qq^GMecRD^Gt9xDUQM3AvgO%V3jbUV!mGbLttO2loWrM6AiE*sc%CSXig6lnZZ zs01f?fOdVMq7THtJO-z_%k*@Qba;v!2x5R)lu+qV05b>n*z(PYcR9hJrfn5tSw(J~ z_IR?Q$~3Bpov|p9LuJrNOqUgfRu@xTbk-9)NRR9!lGmIWEfqJhr%6vRTO#gGB$1hR zuu8;Bp=iN*9&SoJRg)xF!34QE?09xV63P{+ zVo5+S2CCbhu@&yP(K7@UX=5U1isGqw+$>w9>YU&WQO8__#lki}aEGjGmQ`euD84yX zl4#OvngNSV!}d%qo02$FJ)|soWRFGJ)6RgE4Oxv;fgW1NW|x&jyX&(FE87Yyva_B5 zq+XNrCD19WErzptwRRU3P|2-KMJ%jzjvJaepv$^jQw1TuFnloU%-Bh%Nn@QBGZsk} zhtqiu7?>spWm6W$MzaEROc`pZf}hF&n82n^kJXtt%Z1} z&WH11GI?%E@+52J$|TpFNw*%1M$Q)Ci%;k0&D1I^9<^u7m^LXM@x|o$n$Pg6vbar4 zl~7veORJ@GH*V_0FWcHbq%!!5TZu+I%Z+pc{p@I1nTF!#Ko$ny z6l5rB6SfzRv2$(P9ltth$?%m;&50!)n2*%sk7U>JG&$Z@R&6RTe%=45_Iv0jf;tkR zrpY>XD-A>DMJ2O*U3q@FU3beH%`#7}wtRoDnq4H#i}!X&S{v#b)^!WpVs%sf1j^q+ z6(Q07?b;+!Jl3U_-CA@7?#%pW2@HOKLZ0Iv9~a*pW3ZLQw|&1=rbbk^E?RN?ik09a z%#T|)NqD%$j~W1CP?O=pY(rY~nZtT?78Cr)=v6r!FP*XoW_Amw^XQg8;7gB71XhNY zafb~AsBZ_@RAR&d%#r%PvRe3<7t+IuPJ#0kEve?Zd@b)8xiJ>rd%tT+Q$M}#O>*8i z_)2^zsD{`?k$`lx-=2z z%F8!w!LEbb_VkOSFFjxL>)7kqa!PPgG1JixbBD+nY(Ry~Kk0zyF2(ni7||+qz55hW zLK57{I4<`Q#(0u16a=I(*N=^oa@Fv!pITjNmxJdjIHsM$c-h{|^??+xq<+e&YU9Ka z*pnJ`^lR+kXZf#L(^A;>pl{lU&%W5*J#-v~Rb2BQSWMT2p!X;URN}(E=xravsj-ij zmXox!T6p|J({K7fp|i#+<+r>{uU2x`T`&$7&h#Y(70r_Lje3gfn;24O*ZRF7>DuVp zV04uja;7wOzRY|5UnEA*wzJcOPe`UtF-K*VS`1>XYHfuTO6G-wWzT&1TO&?xE~^q^ z$yhkl4mfn4l@Y{(-x%Es3M^%FP;K(J$aB#X^jztA4UKo8YdETDJ2U)6Ly`r3?~bX| zbu)lDu7Xo%;JVGP$Vo_+6ufvknjxD#7q*>uNMrF>q2g~d`JV4cRX8Cf=1Uv6-)B=~ zq#^1e5B&{`Dtjrs)Sn z=VlV?vuS=#!Fjs&wXXhCpOif>-!6F2qz!fq{G=&7hB;%p#k5+PM<0@%KE>O*-`+dN zPphr~DlT2BKx?26p^L zN}M$y@fOxi(oO*MM*5BJd5o%3HGvNh*OS4@&RMbz0g#Xj@p&z6EIn(RVhxMJ)34V0 zWA6uyxMNH4mcjy)=+o}HKn7^a)+*&cgq_F2kNg8}I+*76QyAPUxcIraxZtOKGggH| z{J9SvCd-C<^xPWf*vf4|n&T(dL==~%RgOM zV#4|85w(9J02>q~f!qF>Xf%9*HYVSkLYqlN73xO{_|U z2a$U9q)_n5UiBxal!Zp^8x--bg5RpxD!R}nQczd|I>3Pf(8q;bVX`}XCTl{I^gNWKmmpJUbCxOhTm>@Syl9>i0Un&7_hdDj)K!}Qe#c_;`SZ;W8t_J; zz_*Y$M8u|8>&_Sgb54iKYki>2Xz>O#9dH6l9F}&p)JL(R8)?nNOD~k^@FrR!<|%D; zE3dTcV?SZk3QBoTaaWzhI85bFO~*@jdg)dlVTsBPhJ*c1oZNJ8*Hhad+BjoH+PQe~ zuJ#q`72+S71(&|Fd>qW^`eXJv1DFII+^PEZS^ zk?<0Dt&hh0OSW7(LAhm3fQx%FkAfHD9&^%ryYPb{0Y;qe5}K^gvYiSg{MLXE2yd3C z)OTL%lvB4{7Lx6{>DdZ+Kv#$|wEkE*XPdIkh>>--suvDPZuf@MJ9KV>XfKJMvNq{J zgo21=*}N%Vybi_!+A-^Wks5Y|Fa7n7_-iLzT0GiDD-&cgNiqnM>vY=KugErCZ+_AT z&N&wDx(Qejg2&l1{YD1))m?ElHrr`j&~OROHA1EE8D~D1vKM(-mS=o^!=tO^Z*?8y z=bTY4lisJhN3X@TaSNK+^-?NObID9;dT5Z!;bdcOZUUF5ZEUs$mlTZ24pf>d){WRl5(@SAN z?)Qi(^+bQZIEjOfi$yHD&d7@hE$`9U^{o+hgHZVg3e9@*|S2Sj!fPDT$l9o=Nt&zC75>PR$$Hm``g)LSdPI{rX_(iM%oCrlFTG1|gQ7mlnGqWXGMsgNMbmadDGYENP9#~_!w~CSvl9pw_}(~ik6h>R zLM8dv?(`tKj{0sQSmgRt;{Z~EOBRZ(pfK4lY*!nmU%#_zu6rlJ_SUSgZhLnh zHW`^=xGyoWGQp~Us#gQOul=>}IXs>PW5e{3Z9zO?jsA1<1ycf|fb;FjrARW|jzbldf{61TeoIV9^+E`MAcceI;UM8Za0T z{VvISH@Z*3&Uzs^jvXqaYHpBTWQygxyUG}C!O}YuutP6wf+E7IH^d^m+C050HhOM3 ztd?PJR|IrSsPxv|Yjv?jXs)Mj*lBn}dsg7{a^2tb%lxYg!}q2v1CA)ZRn#?ve;Q9& zE|zlO-=XcgU*=ET1it?x{pabwP5=KDwvo~0{lBTZ4a2wcKXxZcR+?YtH7}MRLGCUt zr;|wd-=PJG!9Ff7zg`LbxM7D@;D`sh?ieNUIFjNt)(?2KhY3i)<_^)`6z3eu310MZ z^B$we7|t@Njpv95hJHI|t|pU{U6jOLd%SwDI~OKUM{9Mxeu!3#!g}k`^8Lm`H-Sa1 z>w0bjg4`>_6S}FGLXqANdD^EEb!w-?4y&^?>@^ep6hj{qIrz~DE0R<@B2x8Cwx7|D zmNPRG;%)V0E};cojVyDnKbCpo}_w8T%f1pa-C$5>oa3 zloj?Qn7Prpt#|hF3UExr$!dF`7wJcriTR3PmF4|p-ff2b_Ne>aYZ-^biMnxUE5M0@ z=7z;PG%Ap(6+!K>yP?{(Tb#-S;mB0q{g%aikYsjYrkC-2RG-C6I$Gq&Oxq?Y*8S)O z(e|ctjq-IjMGkU}S=PuscCicUgr0;o&7MQDK4&XwzNMoIju##49WjJ+Pl$e%73VQ<%U+vJ4-{+f0^> zIsqqjuY`RcK%S;eiEv1QXB@JS;Ii`d!m@M!5K?}zt1zyu7)pn|meh2E@I<+(K zm^-a*_rOAK@do|vswk{c#Vl2xf{b2KSJ&tp8E9#k+C4^YY-SBFXkOin@${$P8Xcb2 zyVp#3_y+`%m6Qi$rdWJY*23*HWuKIYiX79Jc?24BoXih4UM=8+S!;+P&c#;w6XxQT zqD{}b@!?z@7GaZ{wjw;x>~8?Th_wN)P|Z6QZPHz)CJXKDnpX6Gf$Ny&n*r(Tnv{p< z7SjPLZ{`t$V=o3GkY%pIRy5a*>4JA9ILFxtnRkQ zEbRA`{^>hf`mBa3YtF>s4f7FF<0Vi8~LM7D#`=rHB&PA;V2bHf>K*%Wgwz5;M+6ok8*%NwYq}Be@ zbu`xY%$g|T-@*OyWf$z z1}GB@zTga$dJ_^dE^uv_^>Xg>l4D$+s=NSoX1^q8XgHp_XSkXe2JTcLu7TSFu~zFP*(u_EpJo@I z-||@;7mk`JlS!x?FOxb?W{n%0QPC;3@0Wj)jF0iJlbCNry2RYHQ_~$sA z0$mFp?%XG&v6@!(p?Y0RX~#K!DO@TuQ!4b+_~ohZ#`Y}lcfs#H08;5LU)vW5QnCjq zE?>$`y%5&)zaAVM+T`p|9#ZvO*_*C*aGWA2l}1h#IGt!r?uZ}d*-h_EZf?nxU8>PZ zBu}eSE$%I?d<V% zr%_%~c%mp9{W%PO#^d@^j{`m(*F7Mbyi9s^{=EN_!a>~$dLZhed~cUwjWR~UmaT1F0SG!0dw#LxQR9F2!%f zE_&zGkG=St`t8YP`t!UfyF883$9%c$pZHU%Y!J*vBy96|IBQGfSuI8c2J7AI7Hcfo z8u1UsRfvb(1oW~EJF~~zn#p!Ql9jr9i;dsi7w3xde>wrF9=!XS;K-*9ZNmnQBcnVN z+4a^vhi~lg2hz@D$-=@pdC=bC6x#Qm56Q_bR_RJP8o@dI40n(W~|>tecQqzMtE10Y5Dy zgU@7!zV5%`EcmwW@t|0P%kf7Yl5E|UW3xq%I$FG^YHyp#$bgMI#(2%N@dONZN$o z>t~IsWxbS#?s+oN=R;1HzzW*h6cNtk`6+xZqB?dS%soy8j=%gc;!pF_ms-PmdalfV zJh`|whnEkWwMSrJ5GON1IafrQe?zLGV-vZ5nOn@)1R!J0>TYwTwBpw=g36nvkO)Gz zb)r9e0QwZSlgU{0*@mziivn#AVVW4C27Goq0h@$9(8ng&s3oJGc#? zT$Q}u*0&S#$FsIsTQ8SBMkz$sO&(yYeT}~Zp41K=dy;w^txEEy-uccAZ&#&MLuS*Q zR{gbV1bPOp9Hbf}hss~rUu%C4z-ykpx?-O@Ju5~#=q5jDDQnOXEqSySYXe`geFW$3n4y!!~qDnBj2YGtuK zDdY;-mpF8jE30;R3$qSN1nI1m-B-^0~2rYix@F{KcLbspsUUn+41oX(b)*E71L4KH`>t%kA|x(7fzvo;Pm;HD14e0irr zMW@28{N>)iDY81gx>fZ%wP?szrd+_IDDx|5j?jfANx9MxWbCiv(qD+T$CAo5*o zRo9dH+lOffKzwU+|5xKafTMk%NtgIP`-NMTR42Ty+zv|ne%`GDzut*p@6RD87I!10 zF3WRg>>u<@@uSL;(tTL0116%Bh_AX>+T_a&C<{;BBxWLA5B-ZZ zRAy`X$4^&r#SV`8MLimPYO>nK-+Cv@`uK$?eM0+cZ9>OXiCp@^s8k<$Dh+$O_2MhQv)tl1+4V%9?u-a)htVm zHN#TH4)FW!!(Yi_U+FSrps_6k1t4eYuFLK1(}tO-+IG&)fij!@q#NFikwVnE~f{tf6?!okxWksujSA42N;{~EO;f2HVWSY>7LiG zJM|p*zcPFGOn+x`V~otzo`0{C%}qujnn~geSh^H0?IGJXoldQ?^cYA2O7{yH%K$!0 z0n7-M)p{MI2GJadxH3xEY}~s7)k54)%fvkMwf?*u(^}GG=CGW`Pil#4Ps@fl^*Qm` zl#ET+iJM6XxMI(x)Z8$af^vCe%8mB~F_r>6UOeQ7s)U59K#FH5nDp74x30M&^RlBj zcT3nN`B0L!jfGRg%htCS%R_j^G2fEcy5ma#mKvg^=w!D7{JS@Qt6xhhL1v`! z^_wGAjCNo{Q&|DqX?-T66&W>4*){f}Lwp3`)0oPbY=|tY7bpbOX|@gtF}lJ7<@v*@RpTnsN|xB#QNdA~0_AMsAsS>kM$_=JY78wB^X6 z6Ux-r_(Rl|yI+kJs2;N~e|vG#ATrRt zz2-ti*3rLZa%0ga989@aC+4XN9ap?RI6P-P);mp=e-Ymwe?P}v>&NrU9%wO&zo32gL zWZQV9rgAVR9ESaqk_G+HNdZU7wgpBsc}8#lGx$?%j_%)-QX(yD!)%ol-0b zGMMO}1;>3C<*@NMq5!5&D_IDO8|#^siOVevC~t}iP3WO=Is!puF9Fye>qQqAkdNJ? zm091;`Wr0gTb0xstnXhc{rHBFLu5PLkdUFVgAvs0UzWZ30p+a;5S!~W3``$qAIYe; zge=^auzOZ#5I95P6p~o9wSdIge_<$0S#s<=FpB9ucfD$QaQLHpRx!rug#+u z(52>1jN^^YSiZ3*joOS|UUI3FxAE{bm6wNPV#d+C5zkx~k09Vy(2=ew2t#;Vx5(nJ zxu`~9>$>asOl~$O2s6Nsz99Qo!INTKgFUmFWL0d+zCra_q{6cIqA4GAWy?oAftl}j zs09momS?#1ruPTq7fA)#9lID&25`3xya0ttEO_5sHGlDy8kRm7t2Qq+Em@4sZg-p% zcjn5^yZ!<#Im9(;tIgu^96zHj2^A-?0WubY_I(tDYt7asN&;1OkhJpa@94hH(>Bh~ z^X>Qnd~Gmqg4N=*qceNDY98HMIpd4S)4=3$-h;BsmQDZ<DweA~w z5m)ufk+N@w_0JqElQM$@(@LgG&FUuEvxTk!XN$h#7aMJkj|ARf=$E#F?uT<8RG(0^ zlkE!kB{Q^&!VmmfJ;$KC&J$gazVvj>%}JMB-5;sU!mw`+?s#Q+2a#@PV?SEK+pG>8=^M`2xP3*%XyYALE`_WP6-< zMiRH_bX#~d9_Pyy-I!EIHDt|Km}YduXFN11`Lsd!x*aK0Px9;pp{IBLtaO9rW z)oYe{Yz@rkr=1Nk!`+Qzv*8~9hW;M^t4%>430>E-ldLc(%}lP5`&p`84!65!7kNA6 z`GQJf;lbtk9LjM6KyJTTweB+s3v6ReG0j}@GGIOqtuRSdqOMMi?3TpErz5nD1UsQ&E(&6~G2GH>eX|7-Ab*X{Gol zMR&dyMQiqZGWl#&_0iHiW9Li@UJ2=^S2tfB5&mY`aJ8r&20J=BD7gWeOGl9T$NQF` za9TB1sp;(8Qk}qytH=Fm1|O1|->q&|$yip`oBzY6`q4j|>LrxeK{TA1Jha5s4Z|Nj z5o;4+Ns;mMy&pNflpSwl(bS2g&pCzSsy5Zbm=7k<*Iq`XBUTC^^$Oj-yX2r0^}D@A zyP*^fejG*fU-vmXTz;)y6FzzMS@~pr?33^*`-80P*y7Y=SK8A~+PFlcz%A24TI8^B z%e|+rK=Ao-o9BD6ySx%e%aF$T}I|_OyuBl?+6`b-dYn6JIe-Ps>T1 zJ_h2t3RFAXiq`1C?ESfNz>Apef=VP+;$pIqXa5R~5m-b;OQC@4y^(mKmJ)%6iqLrwWrW zb$fj$goZ02T^G~ZLn38{`r+tu5=GJ_(a+x>5&l8Gj5z+;9%zI1=NQ&TyB09-B`Vev zFzm_U6cCXCD=6rrxI?C$8P@XH!?F!D_84_={i9M@7r4oa>vHOZ(k>PZ9F3uv8@f%k zS?z-a+F(&aDGi909+S4FRkLhz+C`aeGcAM8qFY9rh-U4rR}18J_Ax=ZiC(XfJtP%-}s^3La!J85gjp>=XY)7Lel7|r6%8LQA6`j*q< zsul6y8a>A>KLSyjYc_6Hv+ML+A52%g%QkL0w4Kf1BEpr<&}DBuXQTgE!9@VQp5x^o zubkI0&ZfRsY}`}@mu%dO*67hkqBOgl@2<@K-zEOz4z)Oj7yHWDtmoJtaR*+XKR7cn zbQ$VS;!%^f?5)O1@yogub#FxbU0)+f*roQU)~|la%^n3KPT!6@UR-JCDH-(-y(4w| zEI(AyOWEH>V;}W7q1K^xmoY}(*yA*cAlD79b10$N|7CaOi7`u>e7nbOD4M++OGH{f z@GqsrsNQ0+940h|_&2(}sLmKgRzU!fl>W-6+;O6Ao@~#JDLuL~{t2 z&&3)7Jfl8t_rCIrqDc|jJ!kRt8rHoXcV62f@(bvgbY4TgJkP4=gLrGMZLu$HiTKWK zVHHA-Ga+)`d7|P&#EJ9xloAUN?DN2KzU3P41Zc)M!S9-&YmWy$RJPOL%p_GRc1hNv5b&qbDz1q0P{SJ$=q>GNY162|Q$1j#g2kwf(c4x3&*P&iN}QU~Fr z-n>ERgyWe&=;j3yPsuI->pRId0Pv90PXD9IaSL_0wE+KXpNzHUB!vS;cAHekf z7hu{6!vRy(`!8TpuUeNShv@TQ;e57cSU&!)?f1TQIcIy{8D8p}&Sf|fuml+@elg`* z`-_*WfAMniFJ6i-{l&|vS04=D%d@<+M|oRCT?og^|0hov-Vpjlm*d|WI9`5Og5%|s z=_lnB6O^|AI9|R5{0lGb|Am+TtLI<5{G$7}^rgRe`C;iFyqx+6FAD>|4Vtd&XpTVD z#omNB=*ikMzqE%sY!Upe(Ce^M@AcG)<;p)zI_|V8qb^+C4XB|m{8xMatHJ+gVH@}h zd|hDzk%te!3Fs?4U$yslZIT%U&mL3%JfhEocPv!$JzQVyJ^}BU4P0n!cd;bB+i)&HFwgZk`FL4>uY)?*7Vrz3Y9?z5ctH_h0v9rrk^-(ApD6Q)L$ zc{lfGB)wninDslw>BguUmD5`}3Ythgdv!Dy%D!F@@a+G546REg?t?G#LH8MstA^d7 z65m)HC2W6nUR)Wu1RiW|Fu<|z?;&&>xhxR^Y(c_z!AFc7)e_PW(dB~xd{2Or)Vn~6 z%~zU_owX5fUP{va?_=oa-#rD9iNWTlJ(rO6fLdrgT306)?u{a`soB7vr(?_?S0~?H ztgMRIC}6SsE(v#!TK-`2f~canb4pYVV~q4_dS(X8d=mUp55$ zy9vb*!ezDlrxuqQW=iU+PC_xT`?v@-j^qqW*V@D4%y!A+A_W!m$>y;^-RUZYSbXl6awK2*;4O` zJZYW={fZuI$BoKTk3HUPM)K^yStl_}_kD9qt?*2^xHJ(eupSu`RJ}xG*(s!G5ViQ@ z`RR1m1LUyc9TW@>sjt*2XqKQt?Y;Fa26bug-U&}SP@3UHR(2RvlT+$Aun7K9ybH1? zFtAmZ&k6R8MmDD2`cBov8=B4cAs}SSlIX|M_9f+y>&2AmAOi>=5{0F}<2XH&(6m9!tK{eNc@rZ5TT0TNb{zm#Aa_QH=9_Ne>))yZ@9bH*TQEIU6jS@ZDS)G?u zG=8IHO;=WN z;(5G_T{VB4)A7XJ=gN1SEX$@s*Uvsh-)~!n$|)%~qgvN&wQ9HUt6U6C%@6kQ^|KD` z2F8s;M2nFZ8R}!w#w#*in>#9X+BZQ(Ci**8g(L~MioB_#?k# zH5$nyw}W2a5_Ro{+j>mcMjZ8RKAXA!tZ(^xa%~p_pnNuU*cZv>S6&MiI36gQbP<2X za~)$__|~}+Fz4WvZrlM|<0SqyXHZ$BrEGV*p0aDNZK;J*&?jJ76@W{3QX8xRR$(8i z!#7TjCu@}Imo$W19v|i@?P8}j{wg8|Sxa>R?=|9PqAQMg( zLBL;ee@JrsB}kfBdFiGjK%ZKy(t*x@h|D4cffxcKsIr#t|2+Oa-=#c(?c#V}g;ddY zH)2j14b0I01_}|cOx*0_59_L-CF-wcCn_2(;S>@N$?8l zJM_+emn}y9renJI(`fH!!6ERi*K_LxNq>?nfpWstcUxcnD6Y}EA$@C3N+bTW-x~1v zdO2&$RCCzV#!v50ohC&2>lLkM_SgP~M9xWNZ3iD3CO&&le%7x`aN80_^@}uEjx>UF zm*k05P=*xL&7q-Yr_BzK{YaYVH=)9IR(rW|JHckzbbuz2&24o2Np_Irt$7Q-C+#fqIDQD&C7XrlOHGd*AD!t3p5+>%5)s2A z{W`xo^_ZOdyq>O(X^Y546ISDu+(%})$d_K8mo)5tHKd$wW5;_dWOk;QG!lxk!qsZ; z(=tVL)~_PgBqd_#H*ZDDQUR9%x_{#c;b^418`uZwD{M)hVh z&TWxd34X3_J%i@5KaM#1KSQC3?5ujurhOe|CW5Zl8g$H-(-SqQHbNvi@jZ-vwH_sS z2G#+>dwM@VT66M_Z2bOhL3)61+s6J_&G9?P$K*$s4$;~!>4}^gp)-D2Tlr55EU0Sv zYnGipfwG?mABzmzyi^0a3@5IglzZcPT0|(a%=!q$JdxBeSSez!%zfNKux$8U>1q8d z<1PKQNlX?pJS>h1I2oSK3|$Y)9SC976+PdC8J=88Yt!&|`8KMBxYEa>ah|Rw*Sc^~ zH3Cu{x(Cn$;EcYz_f9g2!Ml@N-jv6%dbzH<-9+qspS@dHSl4Y&S1-ra@6I<7)Qgd9 zSe3j%-)-%K8iEz!m$f$z?p+6hilX7^r~q`|cJir@)bQal<`M1T>sCh3yCn(l2#rT+ zoKPP#vR@(Jep&J(Nq9Yi2#+0i>-aM5q%K{}rZRoZVxb{LGUwtkqVHKAvbPc~SeEAV zCiEZb2!AE4kK||~_?LSk?=PI8#BD_d~Ei~OEM#Ef*ecq>9SRgn`VBd^W ztVbWQnmthAj9Ct^L%uL9a98Dstq@h^d1N0^<#-+N`uFo4LWVwy#(#`~^x@ZC-gipZ zLrOGHE8YBtpgz@4PB131sAHIEbH^zfeI;|59NwWC9CUeEP|Z%WGIhq7Z2_$ifkk@n z)si=aTruQbIjLVof>L#ZIgMw=f?y4*6gEPm^UqUngM)E(=VNZ>rJ$YSF5Pw#hiB>g zLQe;fJtS$v)WctDIk(d3W1IKh;_t1v^640Esu+cpV;^K|miwD*?OqE8CBI=%f?g|+ zAw*5(L(Q8hJ0}l;eh>J|7tmcJ;+oS)DV7;?A#W;gNSue?@!n7R_7OT ztVsLqwEQb^2q?BGoIETO0M-jI=tuHZ75+uyXrWZ*XAFRPf9XYg)Z-vUSn`;`0oHF3JXD!i%$dZBJROZKF5hq7sFt;hAWu?`VEMzoHj*d8%2LDH*LC_KxrjA?4hpXVs$lsc-(tgqu;+ka;RYz z%k`R`Xm`PUYJRR9R{X-W@2hdeO$MG1=r|*+E2tJ)AjM-$(Hleg?2SVS>)sk%+mq6R zwe8`$>x=Z^a2+vLl|v^kCf`QDNkw~aW3;EHI`r76^3^7#Dvd>?xgO6K*BDMEHitEt zRF1xD3*S<~Uu3mK2+UIo9~eH?rYoA(cVEa>iXtrr* z?Kd3g(=*8WMW=7$kKl{5a{;Q8z^zS}r@LS;o!QDaBsDhHe7kEul9uxI+*>cD7RGQs z>WN>?F$5oXT#Ig}#?7Caw-6?Ca9k#5Xty_Kmt-QJ-&3&eszSG|v)x6!!g7`$jP|3K zAkRB%Y5_NwWd-AU3=@?v`Fe$UvNkUhVb44G&`n49n^Ec7NYppO(%#raYZ%kQuo-;uKv zAW|=Yt(W?1OU@s@;-k(q7=PMa8|NSkhOzmG5RN^@+M}?Zj_h?X3^!9uUu<3JKfGx> z;}jvp`5fG~DOhm~8;Rde;1xVvVZ4I>JJXNO$+~OVXK!!b``I_;P8C}$LbLZ|Esvi& z*izaxx;+k^KDxRDY%)M8%?JV0`ZmFOY?ZD3?7&b{(BXQ(S=ZCKNg`M9b|RJdeF)_F zzM1L>cI_f@JB)XcGQtH&V7Z-@n2VSLqjnp-lnsO=jwv$?JrX|;M30G%&fn{{IyF4` zZ-}^k5l&$X4t6>Jd^G($Xxrsr2;ylNaXR0PRcV3~*ApdhK3|DQZ+tFTSSr~qTHTd> z636w)-pQEnxIK<15*e;EhOW(v41YbE|A=A?JwuaFK^l&M9)5gDPHXfy(1F9yl> zu69{Qy?NH1&wQm8{d1f`(^DLQS&lciTGhU?^=j#gj@bO;zCzd6;(sl!Os{DZzlTbK$`IzNNrR(DJ zmbT=Yks12^@A{7jDVyJ>KW{9={2uo}tnDN)`NRPK8LT%KTn`?Fd@LH#3!Z+JK8}C| zAOwEEM%xO_GK-?_HKkqrW!w+4UtwOz-A$JvojcK@`(s+$d;P2 zeiva6R;Sb7SzHhan??A%t;5d}nroDP4Xv_wx+}KMX8S~$bElZTVvO7_H}{$U`JEAY zU}z^V)9p&E;MqEg^q2QKrZhdm4>R*@U@5HJjpjW z^$1N4`YSKOX!{ISGXnZxr1i8jaS`ehztM2r;xaniuqjB<0ek4?VwDIb875`$dr-pg zecmQ)+u;b>G@JCXoWphGQL>SX8TnkykjbgS#no;&m9h}0KWFjjAUc{^2bE;;%V7Qx zGz>ptL}MxuB!28w?yhLeH&2s4P)Kq>DZqcOs@UHZavSuSUd=388=?wCQW;!UTDqtI z{ABpM^HV9rQ)1!G>Pc$&!|LQEcg*wLo^dnnDE?mGSzq+m6uyF#8+C7m5fczhARlLy z{nR^#JEd`+Ps7kz;iyZ+ia2d<%nrX8p9^BcEdYbQcL|C&c3cf;CWAy zglCyP@T6S84>dO>&fQp9I9m-!Zq2OBPfp+oi!WXMhn{_s`-EatfaxTi-^O0<HOt zPSp-X9^&KM$6%i?V&WXiw}Yzf6^7U)*Ty;5$R9~Uet{Mbx*uE543J$AP)^5|-Kv7j z{YRG$LHoXhH)V0USqygk1aT;+Yl~6gb#zOX3EereLGY-6MqoZ@Uhl5Gn#Qa$|J_y2 zb(6G0T1l2{MH@hybz$D^&AeOxYLs1POlv#`;{st{DdQ&77;Kzy`2O1|jxzHsL#4q*%dnW%ubRV?ocs3y&==zJr-+D_`5bh11A z9-nW)%W~BWR&3rBe4x|MtD%J6RLr2wrjR)axft}7~ zN^a{{K9cXpk^)RDX6_y-?E$NLq^_GB5&@iqb?cVwuE_)@7z@h%)gAz>bVnAobfpM5#yb(~GTG|oO78muQNO)w8Fl9Z>`o)D4x#7*BzS41Ds~UcP zQ`B{1fLM;Vi@;bfzxwuxU-sp-%6nfYgjHIKEWA}GAGqb*mS{ zxlITeMIc!YkAK1#|4qC82{RN2P%I(i>21<+>56h?)q6!hCG1Y~J8kz5`G(^X?BOMS zt!!~(pR_Gyy(d!1wQ^u-`Qu)xvO82Y$Y*c$Eo!m*EIcho4p?ZULAB)Tap8%%jn_mc zH9C!kB@$n|@jsKUHT3o#^=cfgnlZM&9NbJtrB=!2-%NzaMkBL@+^Ck+j32IcA8{uA zY8A;zq1?86Y6;j&&lDOvOZ zYd%eLJN;p6OZLo0lr3&xYWpwVwTk}w(+2^U`R3SGmoLpR#&vXNqUYhO_kZ)Q&q&}Q=8O%~J9o78Zl+PbYSMx@ z@5-H)g!zuaQv^3j#q{;~Su`xMb#|08FaAcYGuQWeKDs%R9gWNn7ea9ZxbNQTDpfl6Ai2~Gbc6$XP1u!`s!G08k5y&3T^kl(v8hsOZn1p>eP`_ z-4-o>P2dXRa-@&t;)$16xLTbtO`1>;mJ@TPd{2hHMBw+PLlho#Vz4V1>P2j!Y2nn+ z+M8r$8I+~Je02qMG-#g1lC}ir*mfAN8SeWT#~Vl=ccgpa$0^tFYx|d0D!O9J=9iDy z;4X53)UEin)zh#uiX{?Jk7Kz1FXrAcIFl!S`^{!!+t}E)Z6|kZ+qP}nzGEA|*tW5; zHs0h8o<0A1>YS&}i}U)-R9!Va)7{fEFS@$BzWuq-mmuJt<**o1vl;~M8m~Crtr<(W zjNzGQM|mxEvmz)dC}Y_5Yw0Qj9cnf0R{O4ORbwXrZ-UKfbV_b5ZDhU(FL;p9fxzu6u5#d<+je`z58zH7v?z4n?TCzikEQXD6L%O+*LSdhkwY3-??Y zs+!p5-+1*U2Ab6i<;XT`mvkp9lFhD?21I3Gw;0LrUgPOMzSJ zRdt54ftfp&<|#h)foEQqdWH-Y7dKf5D3wG=`uL?&JQ@FP&W?%r7G=k?2fT*6QHGM7 z)#KW`6S9=Kbv0f3l4FFK<$rc0O~J`zvo*6TM6C9{ZQ{ur(&-!0;}RV=O{RUCxvea# znIDV}U1~jKv1<9E7B+GcJo~?Wtb*=E>q@}zPN1PokS?PWvJ@~kl1Vn%)J;z6SCqt! z@h(~M;e+rCAB5F*D@}K+!)@s3a}D(V!EJ11$F!Vn+7prkbak#uo2J%TR<9_h2464= z?zc9U?@RXaCYNQ#MILSKnu1eRbY<6j&QNczx;~5BV7zom>j%22uhwf}rz4t+ExhPqIZ6I-D$}qXLYG;xtLqNaA|?R6Sxb((2@(`3+9&S^ z(a9q?(A~z=5ULN%?7BI0+!bUnaJ~b`9`5%3-(kyG6rOF^-R=AQYh|)UQ;mHS$sw@n z!_|rE|K>Xby0cOTyzX|FWm1){mCx=97VVv$AQ(L-#-W=DbbnE=E|!P(E0C?NQb*&} z0ry>(KPAh9Z{{{>AY-YtLA+Uq>Hl9NoIk&tJlk37O)Uxci%a_A;Pm5x)8-;pKI%>S zIu`bpF7C@%#l0H|{^;`?(ff)b$v3GA{7r<8d1gmJ!T^b0`Z^7L;VPIW`W=1uj@|Ix z_EsIM2HK*}W;9H|37j$w3~h0`4ns{zJ<2a)zG!qRHrL3mY1usFMYE$!)56ERGyb!@ z@3;Kws=@B0Q1^x79#(ifd+&*wdeA z?}7jdRZ?krVG28yyg0cTF3e(}Gz{SVpQ#(DfzS=5r8&ekd&h zVEzZ`kBd;+K))t;rNrw!NW_N?vuu?WrRwSlgE1@1^9{+lv$JZ(A2sC{!T$bsl*eZp ziZKsUKjZnW!+!%bACYr;{;TG=Pyt}O+Z_FabRej+?6vV~63Ag(&_aAKh^SwP;KHdU z;sYN>&~t}4=*Ee4nghwL+-`$zU1aN1*`lJUnIXYdl{Kxae#%yZdvbG13pGrMssr7` zYV>ecsVmoCy3>-cl(y={LmG|NsV!=2)||TT;FrarIqDSV z%Ss$-%AzIU*4?Deqto10GQ!35 zT{|OyX~j#^R|)g&+Qo3I#kLbp2>g54G}RVMNu65X7Kn8#^(U31Sk=7UDvzCA0S-F? zpNOhlTz9t#m*x4p*6)ofv=8H-dk@_12CaIdka&0EcOj?g`P3P-r23cI&;4w>O0}~B z+NnJyREV}VHgP>7iVV+QI9EZcc=MQqm&T=5v18JCgeN#Jx5JMoC0$!s=W zqs8hcgt6ueY!@~w6;n+XfRi39iuvcd61e%&QVPvI5P!E(h9MiOa7$lb~mImb}i1+ale+J|UcV=+8#ST1Piiqs;cP zQ(LQeG7-A_#gM5_hb@5eMzM-}Vb$-jKmA+8g+F^9-CZF|6o?YSitS`h9iwgxS6Pm- zFe>v|RnTQH#}XXJJ~oG%WXVebdl9|hdKMO~joF>;sU8+RIde8F%S#bgoRj!5DNhzz zAXG{?`y2P6ulE8rtX?r>^l@e>Q?zO-`^=&0jm9i{&@8OFdR0ZIaVoVad2+j=Trq{m zAYjqZIBg;Bk(vVwY@8$W>6t*Ny($Dgbpy(anR(@-h?AjcAc7X_Qp#Pl>b%&fK_-#3 zvic2s)FpB8vHYmEUSyF>ttPQ9kGXZ|%6OMCOgNvro07YYAj_s~!H(9M*jKEe{39h~ zD>C%~{>@bsric4gN>GEH-ynZxt$zM%Eu_$e@PRF*0bL$h{KiVrspNeoy-udDH&Bo7=twDCu$~Z8 z>e<>EAVgaq=!o{7G%NLLg;ymYdE#K*3aF+LuIk$Cu3LQUT|!X6`=KzgRZoh5PzPYC znZjt6t?HCFs!~PUE@g+AR$EKo*U}^rFk~Vx<%B+|u95}(zA7H$gHwlz*AuAK81@&$+^?E`;SY2 z=0vwgU-^U>{L$28&9G5^{*s1FnIRtWcO@K&`13yL6(*yeTD$Xg*U~F}~twh$!2#Gc$qIp^_^u4rVmN+@r1ZM~)Y?-4@5>zZPg8UsF`c&A& zWYluzcpEC=-N#~}v}awszRZ`$z*A9anCe<(fMnjm95Ex0E+KzaEtoNbHBwq@nu9CfnnZs{x=W#nLO{P_qSVD;9&aO z6JEkfr+dkds=2XyIqH1sQ;1qWdmeqp^3RK>B#n5-j*gd?tr^Ij%j}p%2A@WIS%Oz&Y zD^J1_m{nbtw!-MMjUWWAc>hL>AH=G=Fvo*PO0Dfs5MAoIV~MrFKtfaAQ#5;kmyuk3 zy<$a?v*c%vm(Dl1^>LM%zS2?$E#%`@f@87jA`OU{f96av>3$Y;n7V*HeWF8 zpGkDs{L|)=jcER7xi$bLv!g9UomZY7E6XQu0|B1)l5alax;+y{Gh?+!9s}LWxv7gr z6<)9$jx?HLWI!~#b~*NIxTOy8sJ8(UPr`RHa3n`LmoAlJI=rl!l%YpI_0hCzDlzy9 zqRGDYqGqurK*yQ7_)#{QSeGW(A+n_l-%lM55!2`XJp^%Hj&ZJfGTAVlk0YC;(*?T@ zHAyQ1EZ$&6^O8f|5`ts0X=v_u#5osZk>bovfhG1^1;CqF8Ra77;0UA~y^b||R#Gb1 zeN9tJS)=@KcM`kSI9tg^U9WZBjm#sc_b2rV(y!Tn43RZ-CDl8XOC4it3r~-(wE)p=hjM1r4u^fA zZ=O*LnA09;ykWDmLES5F2I4|C2aUgpN@I3SN@be_wug*`x{s#v>ORej^cgl!vqiRl zZ?Mze4NR@P7H|dycn8M0Zzic0l5zPih6~x^i*7aydR99=RBYK>^TTdHe_aU!S3+)Z zhEYHNL=pyK>^$N^eA|lfoih;nTip9P%@>w`StEkPhOHrA*ryIO#u0Ac(ro2fo%-bp z-L@S9Q7EZyzO2E=8~YTe+4;TfhK;!d&!ICNd`vqCcU;+gt`C+fKSlO!phW_c0xGt9 zRty|6>l8g>pQjl8t1`bY#FVbFyj=dR#oKLP;Un)5NM-JWuJcmSU1I~@l$NxTR#Lxz z$e_rLk9|>Fz1@h^m0I)e@QAp9oIityxh!a_<-z`aQGnm-bJJ)( zJT4^IgWem9l4+SD9#OoX5Y2KAm7yfl{L2X(^sXFQ06S!~p~z{>?M?P0>}8WmRadSr zYR(gJ8^2uu01?VLrORz2)DN~dfYWlS>pzemWK-LZjR3vq-to0>x_>J;d6Q7&iUW#h za`ena{-@YygDfvMaT-BQj{kG_{}j$b%E1k;IRD`dt~AcEe&cKWvHtv@#U7C-g&Xw$ zJ8dqA1IlmcQ`mQG1F)& z@%y-SIc_r42x)aD_Z=8VzHh8O%jxprBN=RV`|Q6&n7%sr+u43Et<7z>L>9Z7UtOl( zv`Ljrb5=?hB$0aGtu5<1D*b~s-j&1MQNaB9&@lIXb?l$$z3XZ43;ZMY+p;`g3Rmav zD%ZgA?)vRF;n9?D!DsAQp- zP@Ja&jvMO!4FQTmcQZXLYKxfmwSc{}>?w?t%kMX0PtUtK?R9L0&)YlC*a7{*$l9wE zB?V0Ze|zuB0Oe=ou^xQkLU#$${m)NDwYJ0#M>7@6Ns=D$y+BoL;!Hh%M?d-1*I4K0mRRqfqnhW&K}>)yod_fh?45U6bEWS3O_GdrQVqc zCT2|!bnk8z*__{hzHAF$vt7PrtS-itqF*i~51|C*ZxFkQyGsOnd;CA|0(~jG6ydVV z!s#O}WZ2bJS3Y&i1OuHtUlsq*u|5gs3>+W${{h?eH|o>e7pmQ_F^n>Bf1+RAk68JF zc)1q5x8{UoQ*{{CslUr)jo-KdipV zadmFXED_{iolWYip7uPneC(Fn(opp5t=7rbm-XBPB_w1ccAwmB>BV@2y)O+tyl2}K+Tdu&p?bjJ0bi6FCQqm60^uueu zO>sLKCRB(yWW>ES%Xk{j2li^l_W-Mu#Mbu9H!CZqZzF1nW8VLWwpQPz^eE}Coq3Yl znzN~E3+zy+a%T3B%-^on^t9UoPs5K!%ssf+Jqu&H&mXb-Z@)TDmy=dKa~=#pqE~_6 zPEyVFf7y5IUiXHf1WB%p2?KG)4rQJDe3W_zb{7%#?yUcq-M$*5lthl-6)#y#+<^yr zYH}R`Y4L(qUr~Yw)C@;ph(m5t@6GscI7O^P;6HJJ^D*4d68@bs(QAoZ&s@8fH#-9V z;v$fl@&anU)e7B}NO4nY-i0tD)iR$w)%S&_YlZ_*v{yfF+`&LS*p+hP>MMo=*M;VV zy-uHRHGv<;#NVAN?|%d;0zXVCls=Q(TX8OH?}T>9zcL5+tsNiT>|(kHWS&Id9hoX9 z%>z>fC%RqNKIKrn{@bOPzwD`1RLzba*lp8aqtsNXm;K6w_Liyma`;AE*UT$~%kH~- zEStV%WJ377sh@r??(*4mCtzV^kG{Ks;2J~(Wt?(C$#C!6~Rt@r=?Oe5LZ zxzI(qp$$W4cu*hP^?%|26C(nNXUa2Otun7 zzOrxlr?&wQZVtbzrwZWi`7&Hb_y34i5gT;-TXnu4t_<9zzHdBj`aX-L%w?wXdst_m zx$0uQHQnI{XuD|#PR4aD_Y5B<6&6I^23S2-q>O40IN8g_x;|tWei5}DYOl|i)29k4 z&d0VBN+mb-I)jQ#2jOUEwn zb@LIUX%H%3RC>K2mD^UWI7#9hr&({Upng;e{3yo96~aDi6(SF%+`f2A_2?xCAOL@U ztzI=Z09=%Xis`mc>1CJI$N0EoSF86_9hcl{PpRd=`o0h!l%LfC<<2j6jc1H|H6 zFKP@CX7@Wv=AK@hr_+xn)H!DoT$N*4oF{LowMeg-Z^~9Og&*V4AK$S>0jJMuBzv_y z2L8e8j_2h*i_?`fsN>brmoJGvO%sVw4bV-0$*1Y(N3@X7EY`5RU6Nyc&_0srRgd2a z$r-px%*SIPZ_Tfsf)BTN`Y)0yiIZ8g_>JLZNNSb{*v8o(3Y7DzqWZbWo%p+|l zzfM59>Xgm5TQ6^q17F8bYskA#hjMM-#a3VC7if$vf!1F4iJsptnB$o?*F7ZPd!^n5 z>XTe_P*a{{*$85qWtDffL-Y2Inup)-ge$wqeGUQ*<)%xB>mk?XzYU?^bMG8~ey#rf zrXCY1!`4T4x5T+A;eC-(LA;<6#I-kZlVO^xjJ=ogu!)~0HuYI59AKN&9NI?%Wqe}a z4pe$Gwoa4Z_8i|YSEj1WM*@Th3bDlm8E&VA-iJr2mp&3N&7S7RDyt`Mp~<{sPtSgQ zJ-Ua?3w?j>J`VUN-VKO5-w9&6bZ#2^r#wWqV^eZARDAu3mtALqYEq0K@8nqog}1M? zo~W)4q`&PCAQNcsVz0xUU+@is*6*JF+{Rjd+Vut!*?fh(_J@tyLS_*(S6<<~*blW7 ze!g5aj|Nihe=@O@VT*!tEkdzphvsAamlXrfzuhsu0wg#S&s;Ptoq0dL$BTevib&aB z+ZA5R=1PU*&z5p%9|Nh76p=MIz4Xi<1}jScW;MwV)#;UDDz8c<=Z?1QcV7XoG|B!i z8ojrL2JAj;EBn_AE29f~m5=)uf3mX;;apxTm^=DOuVNX||8aFFZU3&xQbEN#s9(6T!8HRv7V6=G;%<6kUqCPZW*`Rn zSBqVzua&O$pUmeAM{fA$TfINm12G-xc8W)Hf)x3kr3#u;l&GGG`fO$&oD_YdYfAf{ z+uwiLqKI9S$_j11JUIX8Oa9dq6BS zR4HrQq7>+sS!-w(u5muE{#m`o$8$Ay_~l3IVw@K+!?Ax~rtmlYp7E;X_M>DBpUg21 zBT(Bv(8heoFyyM(R`I6c@SE-d@(V4sK#&b2cj^#(t8~_VphSwFBKl=PnDXTBTvZtJ z;%C?zXkyjiRJcwcu`8r+-vDAe{@6Kt1m3D!ig`}$(V~jKR9CUxvy(>_T5f4(ecGo4 z5>rNg4PTyc@7qzn&`n=d_kKNSBRFnkEU+UUg<+!JjZ!0oQEdc8|eyu%~| z2!82zefJdmD`&!ic;b3dxA&q;9L-q;{1X&9UIiVaLDkdE+rF1Vsh*#spZ$TZPwmo) z`mVZTe?j*5Bs>V(LcNI5cyB58yMG4G6a?Jj)3jeX|6YNre<^kAcI^8XKl{>7=LU2F zuVg5#DGgHwU(Y%sZgy9t(Mh^%?;N2(-9cmUivn#ji~hE6-!GEi-9o+f?R}dc?gF2? z4SRil!8dFHmkxCJ`zMi(up5~Ypr_`j2lD0suOsiVX(8uarmK*<0AKTKq0Y+08h?U34?&sO7eez@-}H(f0dar({{F!>84gs{`>P@}fQ{U*JNB-3 z(sxMwEa!6HEjl${7{gPye74N4@wt+(>b(@-d~(rs15~<*F3hdHw)pzEcspC_^Vy|* zl6`vrOGQ+DV$W0AOt>v;_Lzngo%KFV!muqgQq5J-%pCV(m!}vzT)FII)1o9)&Q^Hx z{(uCUN6%q8Q1A^0?Lrhy7npfS|9t`gN&=^B7C9vZKJ@aw%7c_!O#ZUUowkMU z>n}i+?*Iy==jo&W@Ja6BHVO)xb3D~Rq=BF8ZZf;r!^>A#ksUM>zX6XQ7mwW#elT1k z?<(UB!htg8`xRY<*jz-!3qLoDP=u~IuV+h6b}LJ27#sRS7#h914SRW}cWLjx+7S=o zvw5rQS3fkpzsugg5$!*Lp81HG6?ES*0DTRP^{_v=>oEhDpP2~f?nVYGl*37XK5|S4 zIQ;*0HuINXz+!AoZ}ju+st;3oQ1kTZ)T<sZRpf5o zLkV=+5|onhWbi~8x#{?DzTTSzId$+w7)V{ebQN>kTsG47{LO-;h~d@5&+}BBhEcVx z`gqtW)(+CdD?;px$ZH}`#%$(c^${B8Db}J$Ntb0yW{q9_a6B;zmSfuFsnFq9SXWm* z;D~LfQ=N8PZ4y(k$HM0|nrM@-rG8`BcKu$O3HRsbhdSk4{cSB}P%v=p+1BMn*A{r; zij&nxU_z_JmBW#vYJaWWihE?^jfDj8f@JL3%Ih;~aSzTqn&@qucve;T>l~I-^C8k^ zw=C-KZBU#fA$@{n<9)9j1tV)vWlm7+C$;MeEY;?AnA4OjwE37C$kkAlp+1jBJQZho zNIM!f{iFQX%eq8HzcNRK0#MaE^wZ~L{aX?H5}P1btj7|SI0R;r-OKB(@K@;eU#Ij! zm8!CCTRRQM2fiX3o>4qOKb`DE(uc@KO8@r-J8cEUri3kkEA z*(-MtmUJCwI?2g4QoxZsQTGT?Vh`99qLW@K$B?ZgO#5OSa>LYpMHZ4sVvF!zew~G+XWkBr_YraI0I)-&S+&D{$dn@l1fT((% zmKPWZ(Z!wP+?G9>H$TF8&u;k)o(IboodK9+d@y zTg5m$0UQRJ_dR(QtMw2H6TIjkE^X~SVC)aQW;@h+hc!W(S;U?;!g4HZ8Qq8xdUY_eeu|Q@7e>Qtf$_`5%(7|% zf=|oTorjeWqt-*jWO6(S4{@d3%w~H$rU!;}Bf8D)Sb3}jN0|SNzRnDG-2`2ueiD#1 z-q{<~tnIWl=62)2TInxo&W8#O%(gSNs5aM{j)(4ST7F1KGmBb%2_Y?OB-4fX&qY#8 zkS*I*S~PnllC1^AvQnG@-d?=r2OmNrwQOXLrI`X`0l%y!0s}eC z9?j^~i&4F*I`L++H!l(d0G*iH%20R7ENBB6z_j{u|$su2D7T9q_6# zHfwPgS#yzM?~+Nh+W-o`(!{CplVj9Sb?RuGcd}&d7I?OBL2e+1L4E#$AW77kyNaYM zKx{w8)$PyGZbl3>KhhKtfSXQBz={(NOJ-~BVN6FDH0Yx z_`;aPsG@^3E>46|frG^31GoOzmV}QO8hT{AaGKDl3P#jYx*?pO*EC!3(|q}+?xWX} z$U-QLPq9}n?j+0>V+1cPJCs0&(UXM8x4sdt4vL9k*HjidmA3$O<1(+R{#bjksC|dk z#;pX8u$Eq`7|u}33oa4H_vE0QlXv{xB0`GAiAq!ahLL}&*GPf90g5Yrhpj<+gjU

>kKaHt0V$1y!PHO|9; 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 z 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�}5B6>&Jck#4ckp;Ok# zmMW|>cc0%&erM{)KX-NOBenFluf_hIF>L^m(EeMkRWbE?XJH|~Ce$T;)Qot>TAN^o zGS-(1f3bYgZeYd=FMe4o6Okl0Z%M_6x0*1o>G0$6`$hX-I43npq#&GxF!p3IpYjvRi_tV|z><#1}gF-<5DI-UHo!@upkF1AqCzju+m=@KfJ8|CSAAIV& zPJa_f@6!E!O0c%^VdiTg5vK!;OYY<%|Bdq3zsh2^ z{+?d%=ECmRg}Lf7>v)mh&0g$t@O&$r)n!%tS^heR_PuUr@%i8Od0PtBAJv-90$N|k zU;DQH=!9jGi+jhtcEe`)shm&Km^rUj9urz`8h33d(}}y9qksd>k~8V~p^xK2o3Io; znFSqN-+yLA3iy_c@W&C(j~ z((OmAJ}7UiCOCmLkpm~tkG}*pF#@alpRAjZH%VpK{C&<}y2^}w-}5p%!?(m?OY25~cTrv{Wfm_w4tIZ0JnD~Le#L)nl8AaPzFnV99e9LcErdH^A+erkZFT?r z&E$SeJS40Cn0Sq10?}O;E&0Dr{<+XhX88dsE|i9(X!NuC4HO(QueOJ!OlG=TZt4-< zJ4J?_cYd`w?R?JH8Eq5lBN}ycf4pWacM;-`zk_X-U#{tSaP*!d?xHj>K0MzYZNHH! zyzeENQPcWU+J3>}I(#1*B`B2iZLz+qm<5-AEMS*>+^PQ3mwg+QeS!@9VuZOD!2G-5 z0sIy3(D4=7@0T7YqWzE}pnisAu)4h4HPls&WT2}4KyVdgU@)WMZ=m!|rSRbs_pjsQ zmeP5!kBZT!IzN9B^5)A1_oBSqNB;cql`B?Fz-?3%?>{kL&emP$)Z9%f$!XhDdHH#L z2Avx9oFe*>`UL)zB&jv@C!#GTI(M#lNyNu0{`_QS?}3Egb~G+>HVPYe04_fKaFc9) z-_;qP-_f^smJc_aZ2A4!&mb?&@Pg_5QIAN?XUz4U-x(|2cK5&k`8mCnqX_TBoteyb zcH{f?+kKC9mfa9un4k-+FlIwKlnlWddjFQSS&_Sn{&+f=8+OY_jIXEM-7O>9H<@l4 zjeke^%fDuLpo8BB@=2ZQyMFAqwdDy2fAItbb?w`nYd5I)=?C2WV$n@AvPUIU zQEuwX7X=b456+vizUgjmYQFr1bp*2X$_G2nCIm>;($%L+i9hyR&f?9#sUd%}Pti^| z=m+~j<}|llGvfS)PUQ^jotoG^Zc<2RWbkoN^>x21@(co8`*x_#8oLKLCDo)J*^UqSo9IHJ(0%C8k9GcVCUi!&TP`KU9we+>Y zF&>09eRxE~L8>`?xhS?bj(u2#b{+tpOg-~NuXeVsZ=HuCzerJFan1=f)LRKEJNm<~ z)iznz&rAPLK$xOAgsqle{sR(J+N2rUfUQK1O3^^(ru>Myc0SeRKwt9DXf<-(WHQG@ zY7!*~0rAWCy08?1(kqur8y%IQ83z6~)!>F!Z!F)@7U3!{%=T7<3g!Fj$RCc~yl_y= zPdXr_BCbuVXZ!}J`Us8s^tNSz(DM{tDE9rZcYOhekQBWwvWd%Z*{UNH;szEUe5Gk; z?bE%vQ^3~tmq{wO?erdrO}1(dZx~$$3`ywZJQ=dTz{m zr{R%j(S0<$M}~Q1?6A4p*y8I~TIB+9?(`8wAEBk+t{}J!FBq$Rp?iBLBWRFCSqA&l z-I``A*?>Ww|l(x){x@#K1QlRzK|j~DS;)7-iUcs%v`l;9s0+FK5#r?}e8 ztdzVPXHm08KDLW1H-uT;Q#$Z-$2lGS5cs|G9WdYDp z%1`DTUNjnQth1h>tfp480fJ5Kjs(jiUvdY`;^nEt-csBb4Am*S_ zLxO4+;}f4YE2dap(JSWuGMvoZM;QxTAOPiU28nU-a9%0OTxAY4vgRg&YC;OlUd$Ww z3+hfp#x88FzE;&$a>|H|m5&5(UrNI78&ec+!l&Yvt(BCSo{p>|E?BEM5Y+UeMxxwE z#DPt%ng;>LgV4;;Gm@{I6ADP<9yx}VY;iJ^o~KiLz{>7WG@IPff4YS#4}fK+3KFki;^+>pI32s!MSU6 zCK82X#M)&8GTe)HH{TOF&hn~KHkPO27QR9BgcMucx)MOnMZsFvaCF&|Ir3h>M>-^5 zH+7Lj)(I|~M*Kg6cRI;{0YEa6|NfujqoLKurOtlS-tXVP?0w|y) zio{x%EOg^mUY@eL%4j4e04ZV@L=T#u{zi>n^j7 z`85}**wZfhXSzj))50^+ijM>%RgBK$2Qfd?Y`Rh-l1OyG7re@jj7dUOj6uiwfV8z4 z+NG#9WCN@y9mouw{T@WleR`5dP2tcLsl;FHsey0E-}>02sKro zL2^5*GTN+3Dc9(>U>s0%YEX0pM#-o6mIHwcRkWW-p{zn=h`<*W-zi#@60M}vCREKV zJlJDgIcDZGuNz1>q=dq2ZL0`?m4d=Dh+d)8Ct)yfW3{iWIJ=VL@$zZ=A3#|RiKjJv z{r@xzsk4y|CaZ|F1op-BSVsi4ViyglDo*F44%ZyO)PW3p5tUX_G?y>9wUxnOfzI0t zS}6y}2IC0sNIN5;N`3-WRV@5oEt~DNtkty7N7Y(W%IE;fo^7-=3YlKaix|ld^W(MH z9Aa_k5ZGeLBsJw?5})CxCx)=D92xls2bM$JtKlhxPGsh-kOV8q6=&g+D|tC3+YpCT zp_{z#c}1T=(xMuGpR}0>&gX*OIDnxCn%Lp3!Wh6TNO(cnFoIYaDi=RzqHVaCPC{PC zeYmDsz~oZcqGT+?c4plnUb>|yl@<^gsqrjL6g~6slMBY@6x5@MEu|WS&oB%I6%aXJ zpUAkXQYfEMu&is%7%+sH?(9sJuEJCEOd`%$efKEX~kaxz6*q&pCFd+YqfY4 zd)d-{W5Ec-8@BBdG8AHcDglF332&#&-~o)|O)-yC2f<05OF|qhZ>#Y@?-ge@>JG0$ znzp7~W`H0$q)_R zg7nh$)I|%2h+!5zJK)w#&xM&$7Z}1cJz6sqm{uoy#vGnj5)|$^lGH4@tHz(6AO>hhi2WYHH780C2arhuWGD!gfTrxHUuH@F5t>J7<69qBQIqetrzeXA# zbu3hJ6LClH!%zg{)C0{#nO(5ak^*o2pdOn5JL{M+S~DDKHVJhOFw+h}@V5O{)L{;P z$tAdb=hud0Q{O%ed$b7F$|q==CfTFQ)5zdUHP1iLoIm*89!m_glVC{u;a5lNjaC6NeLLCqbs zYXkhVY@&{-F(NU%lL&7h3Y_9JiGd=01Nh^Qe;gZnNv(BJyb=Op8p-@7+doh(c91pz zj_#@}1wn+=${EZgD1VW5j8J=qVaz;ISZ=iVixqr`>t@-o_Qpgjr3Fu&8pPMI6Z~^MhFa~j1IJ_MLdMdNH`=02yN3G zjJ{c%0-=IRLL*e!Iu-_Q8lt)rIrV_G0)L9W69ER&WSPs3TqBNraS)_3kY1an6;{KJ z)x5|>(Hf??*-rH-3iI!#WQNVEIIAi|jEJ>2N-Of819=t=pv43uPcZO!keYBSv3M!y zKm+Kkx@n?@Lw4N4Gg9&e$_}_%`N6HYz^nS0vL;dAW5dQVz{VPOyRIPzKfxzY3wTDayQH5JF@hLEtFj4>3p+YQS#**^CYK!B z3ZUHOz&Hzip_wcYQjm1F&G^CLlH==qRt~Qs4bM7Ck>e8-Z-2JbuuxMlgvmGgd5mZ7(L&Q}p`Csaq=yL95abpk$ z(3Cl)0f&xoQ!D2ArsVAo>imGg1%#RtWE5RkDu*b_h;6Naq5qf`)t01VXZtj(27YeF z?}NlCiPRjSNExZMx-IsnO6jKv#Z(;2C=eBQk$ILSh$(9YHZ~rDEYxIOYT;l7T6$U9 z(F0(1Ul2KtqDD51OAIO@!NHF3zWpt{J z5`6W#q}&`+==l&t^{<(~J2-rZ+dnaLcV>Cv+ ze#pr}`>U8bTY0KEPGsvBo$(mxD2%Zwymlb|+7L9_qcQ6pRuK8h$aua03iKmv*GZBEo@wz6xD;ygpk<%~tiItS9*qUWQ#- z>TwXmbC5L6y|1PRnHn;;%6TL=*$kViED43_{k0j@GC1NEONp^ukSh!?&6|Be0Wqp( z6d8i8)^(v^NFVw<4;EG9S0b?{6<{OfAF{n(`!CKQGzuO?g@#mYd?T4#4IT?e_OAxn zpyg?jy!p#iJFH^;uoXoykSr%J&MU^xI$+j8%+zgwK&!Q64ZtwZp+e8nnpW)1zWzFNHmneKX8o>@S@z7k~w}? zCNxT0^Vx8L%RmG1a)6tD@$ z&Iw|N6oBqT9+?TvM)*>Imf``w@{9_S;)MBU%%poT{T-0`c8qE71K5c7zNlb}7|G)V zW3!2}acrjI9!YeO))vZUrei@hHH1zK8|LfeLTyXlc;|HNR2+zkbYyp-Ikyw=BbJ#u znKmZw#v$(H)NDFSy(uS@8@tjSlH{aL{S;U}YrI;fq_80{NxmdJtvM`wWt=c=xnLnG zQxn#ooL_(0H6_-#Z^*pXvR_!>yhNDER87J2#KvuYQC9yEUNACVWK#BKr9|H~+H;!% z66wVFqwXZENZ)CAEK#S(NaNV1Qjj0!DO7DM5&Zs8YCpo2TtW6ec5ELr1y7yMQyC(} z906_h(xUy=Jr&^~vP#@)hqT%}KlSsDe_&~s))4fn`!-)4-P^j&J z9TmM@RI`7pUZB*;(AVKDC(A+6cesj_45RnR37e1&8XQT;@&IGS1?l!3&I$9TF-V`cdzj zK#Onv_9Y3P#ltF7x${T}ig2*H7eMUIhT2D{lwP4M3W!S$01tqQvW{@`NjaYV2fpP75RaCPiG^TA0if9l-55kt5Vryd5 z3XGF}T`J+;g5>hCED3osI&C6DJKYDsQT~K63IH@Jhf50>PS!MCC4pJ9+<xLm+O!%zB>^_?ocChOpf540F+aqUSux)*`izVnhvtMDSd?u1u`3g>*Q54w$;` zeKE%&$H`r9=aolN4@}ry8mqb*m+~_@m7X)Id%?wZPrJy_+V!E2p`yXnw`XAc0jb>X z^bdGcEkeTi$Y*M&ySZNL=9=zi3iDY&<7V2tI-2lE(ju2x4Z#!Q$LK?eYdINXrV*Qv z%5hjS@_S)y7HiC2)SPp3L@NC`NS4mzlb=W{!1fA)5p?K5WNG3FSwgCVsMXr}Qu`Pw zmcZp^@D`e*5Mo_cl@vC%cR;*WP6-t-@^wV3VRuKk9HG zZiHJ%0fr%2v+mu^-`J`a)3k`iydv;2p2rYaKE~<=_LzBxZjGg>LV!d*Y-;=UBs7)K zteMkP$yia=B4vmITMQpLlPWmU%6<;zX)#55Hg&81LHeQyTxcz8S-WQ64D1S9IfFl> zls?BST#yqPtn9c4%Z4UCSW12#?iO1BGwx21wJBE?l+$(}yBsUGasYX$565&a30ML~ zRQWwRspGBL_J9$`JyI32^$$nNVd%D+xG=9}C%g*MEK_o=+}?4O18`n_Wzjaw2EjX3 zvL-ZF-;MXCqvF`(;P5=n3JPG4_u6w8gkW!;=Bt{rD-evX+Z!6gx+7|~q9*HGi8r;g z$8smJT}Z=9nn0q^EJdNpg(0Og+U$8u;BU_LqBY4+-^g2ip+PYQV;4YqClYE+t#m3+ z`cd$heB$ODA3wXS$}_qERI~j^(Y4)~#<-GoARqyoREe)Yr9FBjy|i@QJWPdPD6WG! z4cs1RJ~gzh@1gQKIk<8I2(M{N(B>P7(#>q-Uv=HW$mLt$6s=RW;z{^!_z+5?Am(;B zas(&THOm2ZmEwM`QRiZ35E#{1wSY7-1lO3@OX8pWomB{5v~%)7#|W}7L1E1|n{x-V zyMU4-nCwpBs>Zk@^*E6YiKa6o+R4Qr8lCl)fFV0;ENw;XlYUDcPFviv2%6e78+$Iw zRUkDIr@`FNVep-il5KCYtZix4Zbx<|3nCJvq0%#A+4w(j!}5hT2J8+_%fFSp@+wlt zYgSzF26CkO$t^qX=kNa{-$B92LP03&#&XsDg|kyM9=;5;hCmVlqpgLYnRen|i2Lf00AR!F>E0=TlP3SvP9IIbs3UTO9=Z6yq3RKU?`63R2XtF_aN zE=8C(xWf=_Fi`&qu`L_|58*;P=MOWIPWWl#4bIWd`#R^lOP-a=XQQed?!U2$2} zUepDZ_K)z)yo<%$CSp;<(L)-GsQ=VTTm`&+K>d0Sri!sNsEIhpDpIS*NRT$o?D=E*(*HoFv_vB^7Zc1A zjUim8F_5}g$TtqBiAa_WMdC#yNwCB3><1P5Sd_j z5)%NaYO@n?+n|ArJ)D?cvP#b|mODt)NzcK^W?*Ly6xL?JNZdZA644?Y2G@15eGHjF zWLXbXXz)l{YY0tSUFuY%p^pqY19`w)nv zNl$V=M^=xDVVfPxwp+R%6+@G6P$1kD-DZ6=s&2HHYUX=Sqb3nA59&jMqn%Gz2JXQff~GFxk|u5_6~iPLLf8E$1mF@-FbjqU(#&UK zvvp&q0#K{JOL$Ia2hrf9kx-2+O$3OW8{zJB27Uplol6w?KBMsfmYsK||Bgj+?Jp>` zIa3&$tOc((T9w+hHUBu%RV-=-ds$(XXI6oSae|32{XF^IR#tN~)qK?12R;qP*=+k>xRk58^&W?(reeyED4yRVp-&_uk13lwK+y4>3=t$-xT(+Z#yC1@Dzh?52D*93eSZo*XZn zGSvlX9H>5}&P(GZ{1c`=Nt_fmq6g2B`UfH%@L+26Pr9Tt?V!}g1WYo8 z&DB1+@&*Z~G}njmbs$A=zb28Ig71PBlN|*^elqkn;;O|7oLpmuhI48HYmi-=utju1 zKClLnAq;EG=dWdlGi?Rfg(VqShJCHT=ob;++4T_97V3lk$g*+STF$S;S2WT{=)Jd# zsW>tvU^71C#!M4%hyYU)Z42Tgqm;VP#0|b55xj9<`CE3=KxKV49KOBdta1h!Y7f8; z6`)Lm6=_T8DP6D?+vs>)FjPm&4O}I3qh9a~%@4dsEw~(CvlLYk7FZ31icJ(OX;}%L zr?SwQ7({O{&x5hgrFVsp=6WAo4TxT0m^-(P*clZ=L36!`%g<$l69t z%Is9ZJ6{oG5>ZbU)W{Gcq{5l8zrt&ufU+v|u$SD-ZK6XVPnIIi(=$yg=uQUyqf`O| zzA6mn-XSTC^LPDE|J2(rD-9qCl@PHoI7u#??6u?B-tC;NhG{FBJJ_y4G64gW)jbM8sZKR zj7At(!aE(!KgE=?gSD(S|?-MQ@u3y!8j1T z;LimRXj6He$y?AB>tUMm$kerjV6vgDTpbvEsL9F=+F6Q;E*e(s01PATyGWe^S+qGo zkO0|0M#Gt)!5_p(uU&8y1JcCM>lQwW!iRp)DBW=(zA<5rCzPxk_6mFRn2oX8!%6KU zK&sH*xI848<3{)~H*(QF#c=n+#IHS8U3iIAgY%^@DypIN{4l;Ot4nmrC}<3+3_Ft& zIqv};-P`_jhR^bcZZ)|Wu(eW-?1K5UDWpO9VOIU%UvRINVQf%zc*epGh2Ya687|71 zL={DuwNG?HC&Wi%_qOKQ6k(TLhKLv=b4LUp;V@h+QP|8 z>VQ{?1P|2rf2#@sgLnqDGN6L0rx^AhUvf0gVS&2_EeGgMYW*}rlxZE5#OM{SW}LRg zT!JPs&8Yp|{Y{)=M#Tw0rbHnObgtmAMDx-WQxF|G4=m8Rq{-93wDxN z8VKYGvcZWpP>$KJ>@|yu^&~~`1x#ptER$$T)D2$X!pJUCJmf1{AU67);`NUEuJ6kY zCLG&$EILePIf?t8SawUl7P4wL#`I%bO8VgqqJ5Ql{FF1j3^Tz8Vw1EbUFZvMNq9@y zZ-P-s%wu`0fRIApb`WJ_!*IDruAxzzqhWma$@|BiQz}v{2)mLTI#DZQGS^j)Cbkbr z?M+(wP%mTZik^V2oPKMaROW!KBqgvYD_XkRr=Ee)v;E`|vWAGl9}FSK>P`9ph4#8l zivuT-mWmRo&pC5~!q>Uw6VqIw!EujxcXMD=NgQw1@s6ME$ zJz4Djg;yML=UfD*^ejtlAxb?1#lGAI385?bC6>*g=Yoio~ufye<*+527a0 z5p&7i@SM>jFUC~anp9nTTJM6Hkt4c9S2-liLOpst_s=>zN0bdOr7g%)Q%-mgwbL4% zXN3IJoM@4#9-YKFKUz@q)JFYTjK#lxx)ThoxPF_O{sGMdAIqSC(MI<3Mi^3KQ>Hf7 zjFcG=b@>1}T_dpl5f-&_9Ad;j&g4wqW)#)6~ouHNM zIGO&TLewr(sN}gAOW^yK3HQ3SDWP#WLq%?i4Teg<5zWk?`nWk0X#6r!w3TE;Zeq7 zYj1FuhjwNuBLdG5G*0DOIJ-T&Y}KHjM7!JMTGCL00;B3CZOi4jL%dqCnF#qytb`9= z=~y&`$6<3ONOspiYnGUBl(G*ipF^(Mxvi1)cd;-g<*46Qf(aeUnhU4>*5{Ada+}#P zZMXl?GBkxrS z*azQvoD`px_0W7+!li*l%FH1NErx%EhWpL31`mGxNZ3(J&v6NsVnzKITF1UlS{9EV#yU#M5PfCb^mka$-&OO4i+(o`;S(@PbD?^|bzH`sqD zkC8A#?rOa`mHL0)WPE#=ziM~l@>udRg0gB?88pH<3idWnYWukJ1^!N4atrN_H;eqk zqMl@-(C%So4jSHT5P2M;AyW5pjes5_G0X8l*H`@J?Jm!-gon>f(>Z2Vo}-_dxy+Ls`xgi1YR3?}67MCp(|47S)oL4OKxq zw=ZfK6u+fbDqO2EM5>gZwEgFN{rR(pVlu@wAGJ2H$j;BuYrVBvjh9v9E?>h2YagjX z@)(Iiqv@9TePqk8ycb!^v8nd8{Q7!iepK^fyaYPl(t{)uNn*jsB|ezVkv|)sE#Rf` zCq0^R_WS#9??B@EHGrGV%rMhgIq-OPOG%P{dL0kdM$6z<_alUQGOuXX;?_T3;{=y~ z`@%Pt7U8?^qHb{W1*LZd_#G{Oilsb45?;yRp_tCsP2n$�WX!7()APgI3Q+yq!~7 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 literal 0 HcmV?d00001 diff --git a/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl b/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl new file mode 100644 index 0000000..807df1e --- /dev/null +++ b/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl @@ -0,0 +1,111 @@ +#ps1_sysnative +$ErrorActionPreference = "Stop" + +$SetupDir = "C:\AOAGAutomation\DC" +$ScriptPath = Join-Path $SetupDir "01-configure-domain-controller.ps1" +$LauncherPath = Join-Path $SetupDir "00-launch-domain-controller-bootstrap.ps1" +$WrapperLogPath = Join-Path $SetupDir "user-data-bootstrap.log" +$InitialTaskName = "AOAG-Configure-DomainController-Initial" +New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + +function Write-BootstrapLog { + param([string]$Message) + Add-Content -Path $WrapperLogPath -Value ("{0:s} {1}" -f (Get-Date), $Message) +} + +Write-BootstrapLog "Starting DC user_data bootstrap" + +$ScriptBodyGzipBase64 = @' +${script_body_gzip_base64} +'@ + +$compressedBytes = [Convert]::FromBase64String($ScriptBodyGzipBase64.Trim()) +$memoryStream = [IO.MemoryStream]::new($compressedBytes) +$gzipStream = [IO.Compression.GzipStream]::new($memoryStream, [IO.Compression.CompressionMode]::Decompress) +$reader = [IO.StreamReader]::new($gzipStream, [Text.Encoding]::UTF8) +try { + $ScriptBody = $reader.ReadToEnd() +} +finally { + $reader.Close() + $gzipStream.Close() + $memoryStream.Close() +} + +Set-Content -Path $ScriptPath -Value $ScriptBody -Encoding UTF8 -Force +& icacls.exe $ScriptPath /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null +Write-BootstrapLog "Wrote $ScriptPath" + +$LauncherBody = @' +$ErrorActionPreference = "Stop" + +$SetupDir = "C:\AOAGAutomation\DC" +$ScriptPath = Join-Path $SetupDir "01-configure-domain-controller.ps1" +$LauncherLogPath = Join-Path $SetupDir "launcher.log" +$ConsoleLogPath = Join-Path $SetupDir "configure-dc-console.log" +$InitialTaskName = "AOAG-Configure-DomainController-Initial" + +function Write-LauncherLog { + param([string]$Message) + New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null + Add-Content -Path $LauncherLogPath -Value ("{0:s} {1}" -f (Get-Date), $Message) +} + +try { + Write-LauncherLog "Starting DC configuration launcher" + + $powershellPath = Join-Path $env:SystemRoot "System32\WindowsPowerShell\v1.0\powershell.exe" + $scriptArgs = @( + "-NoProfile", + "-ExecutionPolicy", "Bypass", + "-File", $ScriptPath, + "-DomainName", '${domain_name}', + "-NetbiosName", '${domain_netbios_name}', + "-DomainAdminUser", '${domain_admin_user}', + "-SqlServiceAccountUser", '${sql_service_account_user}', + "-LocalAdminUser", '${local_admin_user}', + "-TargetComputerName", '${target_computer_name}', + "-DcPrivateIp", '${dc_private_ip}', + "-WitnessPath", '${witness_path}', + "-WitnessShareName", '${witness_share_name}', + "-DomainAdminPasswordPlain", '${domain_admin_password}', + "-SqlServiceAccountPasswordPlain", '${sql_service_account_password}', + "-LocalAdminPasswordPlain", '${windows_admin_password}', + "-NonInteractive" + ) + + Write-LauncherLog "Invoking $ScriptPath" + & $powershellPath @scriptArgs *> $ConsoleLogPath + $exitCode = $LASTEXITCODE + Write-LauncherLog "DC configuration script exit code: $exitCode" + + if ($exitCode -ne 0) { + throw "DC configuration script failed with exit code $exitCode. See $ConsoleLogPath and C:\AOAGAutomation\DC\configure-dc.log." + } +} +catch { + Write-LauncherLog "ERROR: $($_.Exception.Message)" + throw +} +finally { + try { + Unregister-ScheduledTask -TaskName $InitialTaskName -Confirm:$false -ErrorAction SilentlyContinue + Write-LauncherLog "Removed initial launcher task if it still existed" + } + catch { + Write-LauncherLog "Initial launcher task cleanup warning: $($_.Exception.Message)" + } +} +'@ + +Set-Content -Path $LauncherPath -Value $LauncherBody -Encoding UTF8 -Force +& icacls.exe $LauncherPath /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null +Write-BootstrapLog "Wrote $LauncherPath" + +$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$LauncherPath`"" +$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1) +Register-ScheduledTask -TaskName $InitialTaskName -Action $action -Trigger $trigger -User "SYSTEM" -RunLevel Highest -Force | Out-Null +Write-BootstrapLog "Registered $InitialTaskName as SYSTEM" + +Start-ScheduledTask -TaskName $InitialTaskName +Write-BootstrapLog "Started $InitialTaskName" diff --git a/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl b/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl new file mode 100644 index 0000000..64cf5ad --- /dev/null +++ b/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl @@ -0,0 +1,245 @@ +#ps1_sysnative +$ErrorActionPreference = "Stop" + +$SetupDir = "C:\AOAGAutomation\Windows" +$ScriptPath = Join-Path $SetupDir "02-configure-sql-node.ps1" +$WsfcSetupDir = "C:\AOAGAutomation\WSFC" +$WsfcScriptPath = Join-Path $WsfcSetupDir "03-configure-wsfc.ps1" +$SampleScriptPath = Join-Path $WsfcSetupDir "04-prepare-sample-database.ps1" +$AgScriptPath = Join-Path $WsfcSetupDir "05-configure-availability-group.ps1" +$SafeFailoverScriptPath = Join-Path $WsfcSetupDir "06-safe-planned-failover.ps1" +$ReconcileScriptPath = Join-Path $WsfcSetupDir "07-reconcile-availability-group.ps1" +$LauncherPath = Join-Path $SetupDir "00-launch-sql-node-bootstrap.ps1" +$WrapperLogPath = Join-Path $SetupDir "user-data-bootstrap.log" +$InitialTaskName = "AOAG-Configure-WindowsNode-Initial" +New-Item -ItemType Directory -Path $SetupDir -Force | Out-Null +New-Item -ItemType Directory -Path $WsfcSetupDir -Force | Out-Null + +function Write-BootstrapLog { + param([string]$Message) + Add-Content -Path $WrapperLogPath -Value ("{0:s} {1}" -f (Get-Date), $Message) +} + +trap { + try { + Write-BootstrapLog "ERROR: $($_.Exception.Message)" + } + catch { + # Preserve the original bootstrap error if logging itself is unavailable. + } + throw +} + +Write-BootstrapLog "Starting SQL node user_data bootstrap for ${target_computer_name}" + +# Establish recovery access before downloading any automation artifacts. If a +# PAR, DNS, or Object Storage request fails, the operator can still RDP in with +# the local accounts and inspect the bootstrap logs. +function Set-LocalBootstrapAccess { + Write-BootstrapLog "Configuring local bootstrap accounts" + $password = '${windows_admin_password}' + if ([string]::IsNullOrWhiteSpace($password)) { + throw "windows_admin_password was not rendered into SQL node user_data." + } + + $adminResult = & net.exe user Administrator $password /logonpasswordchg:no /active:yes 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Failed to configure local Administrator before downloading automation artifacts: $($adminResult -join ' ')" + } + Write-BootstrapLog "Reset local Administrator password and enabled account" + + if ('${local_admin_user}' -and '${local_admin_user}' -ne 'Administrator') { + $userResult = & net.exe user '${local_admin_user}' $password /logonpasswordchg:no /active:yes 2>&1 + if ($LASTEXITCODE -ne 0) { + $userResult = & net.exe user '${local_admin_user}' $password /add /logonpasswordchg:no /active:yes 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Failed to create local ${local_admin_user} before downloading automation artifacts: $($userResult -join ' ')" + } + } + Write-BootstrapLog "Reset local ${local_admin_user} password and enabled account" + + foreach ($group in @('Administrators', 'Remote Desktop Users')) { + $memberPattern = "(?i)(^|\\)$([regex]::Escape('${local_admin_user}'))$" + $alreadyMember = $false + try { + $alreadyMember = @( + Get-LocalGroupMember -Group $group -ErrorAction Stop | + Where-Object { $_.Name -match $memberPattern } + ).Count -gt 0 + } + catch { + Write-BootstrapLog "Could not pre-check ${local_admin_user} membership in $group; using net.exe result" + } + + if ($alreadyMember) { + Write-BootstrapLog "${local_admin_user} is already a member of $group; continuing" + continue + } + + $groupResult = & net.exe localgroup $group '${local_admin_user}' /add 2>&1 + $groupExitCode = $LASTEXITCODE + $groupOutput = ($groupResult -join "`n") + + if ($groupExitCode -eq 0) { + Write-BootstrapLog "Added ${local_admin_user} to $group" + } + elseif ($groupOutput -match '(?i)1378|already a member of the group') { + Write-BootstrapLog "${local_admin_user} is already a member of $group; continuing" + } + else { + throw "Failed to add ${local_admin_user} to $group before downloading automation artifacts. net.exe exit code $groupExitCode. Output: $groupOutput" + } + } + } + + Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0 + Enable-NetFirewallRule -DisplayGroup "Remote Desktop" -ErrorAction SilentlyContinue | Out-Null + Write-BootstrapLog "Configured local Administrator and ${local_admin_user} credentials before automation downloads" +} + +Set-LocalBootstrapAccess + +function Download-AutomationScript { + param([string]$Uri, [string]$Path) + if ([string]::IsNullOrWhiteSpace($Uri)) { return } + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + + for ($attempt = 1; $attempt -le 30; $attempt++) { + try { + Write-BootstrapLog "Downloading automation artifact attempt=$attempt path=$Path" + Invoke-WebRequest -UseBasicParsing -Uri $Uri -OutFile $Path -ErrorAction Stop + if (-not (Test-Path -LiteralPath $Path)) { + throw "Automation script download returned without creating $Path" + } + + Write-BootstrapLog "Downloaded automation artifact path=$Path" + return + } + catch { + if ($attempt -ge 30) { + throw "Automation artifact download failed after $attempt attempts for $${Path}: $($_.Exception.Message)" + } + + Write-BootstrapLog "Download warning path=$${Path} attempt=$attempt`: $($_.Exception.Message)" + Start-Sleep -Seconds 10 + } + } +} + +Download-AutomationScript -Uri '${sql_script_url}' -Path $ScriptPath +& icacls.exe $ScriptPath /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null +Write-BootstrapLog "Wrote $ScriptPath" + +Download-AutomationScript -Uri '${wsfc_script_url}' -Path $WsfcScriptPath +& icacls.exe $WsfcScriptPath /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null +Write-BootstrapLog "Wrote $WsfcScriptPath" + +if (-not [string]::IsNullOrWhiteSpace('${sample_script_url}')) { + Download-AutomationScript -Uri '${sample_script_url}' -Path $SampleScriptPath + & icacls.exe $SampleScriptPath /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null + Write-BootstrapLog "Wrote $SampleScriptPath" +} + +if (-not [string]::IsNullOrWhiteSpace('${ag_script_url}')) { + Download-AutomationScript -Uri '${ag_script_url}' -Path $AgScriptPath + & icacls.exe $AgScriptPath /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null + Write-BootstrapLog "Wrote $AgScriptPath" +} + +if (-not [string]::IsNullOrWhiteSpace('${safe_failover_script_url}')) { + Download-AutomationScript -Uri '${safe_failover_script_url}' -Path $SafeFailoverScriptPath + & icacls.exe $SafeFailoverScriptPath /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null + Write-BootstrapLog "Wrote $SafeFailoverScriptPath" +} + +if (-not [string]::IsNullOrWhiteSpace('${reconcile_script_url}')) { + Download-AutomationScript -Uri '${reconcile_script_url}' -Path $ReconcileScriptPath + & icacls.exe $ReconcileScriptPath /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null + Write-BootstrapLog "Wrote $ReconcileScriptPath" +} + +$LauncherBody = @' +$ErrorActionPreference = "Stop" +$SetupDir = "C:\AOAGAutomation\Windows" +$ScriptPath = Join-Path $SetupDir "02-configure-sql-node.ps1" +$WsfcSetupDir = "C:\AOAGAutomation\WSFC" +$SampleScriptPath = Join-Path $WsfcSetupDir "04-prepare-sample-database.ps1" +$AgScriptPath = Join-Path $WsfcSetupDir "05-configure-availability-group.ps1" +$ReconcileScriptPath = Join-Path $WsfcSetupDir "07-reconcile-availability-group.ps1" +$LauncherLogPath = Join-Path $SetupDir "launcher.log" +$ConsoleLogPath = Join-Path $SetupDir "windows-bootstrap-console.log" +$InitialTaskName = "AOAG-Configure-WindowsNode-Initial" +function Write-LauncherLog { + param([string]$Message) + Add-Content -Path $LauncherLogPath -Value ("{0:s} {1}" -f (Get-Date), $Message) +} +try { + Write-LauncherLog "Starting SQL node configuration launcher for ${target_computer_name}" + $scriptArgs = @( + "-NoProfile", + "-ExecutionPolicy", "Bypass", + "-File", $ScriptPath, + "-DomainName", '${domain_name}', + "-DomainNetbiosName", '${domain_netbios_name}', + "-DomainAdminUser", '${domain_admin_user}', + "-DomainAdminPassword", '${domain_admin_password}', + "-SqlServiceAccountUser", '${sql_service_account_user}', + "-SqlServiceAccountPassword", '${sql_service_account_password}', + "-AutoInstallSqlServer", '${auto_install_sql_server}', + "-InstallSsms", '${install_ssms}', + "-SqlServerDownloadUrl", '${sql_server_download_url}', + "-SsmsDownloadUrl", '${ssms_download_url}', + "-AutoConfigureWsfc", '${auto_configure_wsfc}', + "-WsfcClusterName", '${wsfc_cluster_name}', + "-WsfcPrimaryNode", '${wsfc_primary_node}', + "-WsfcClusterNodes", '${wsfc_cluster_nodes}', + "-WsfcClusterStaticAddresses", '${wsfc_cluster_static_addresses}', + "-WsfcWitnessShare", '${wsfc_witness_share}', + "-SkipClusterValidation", '${skip_cluster_validation}', + "-AoagDatabaseName", '${aoag_database_name}', + "-AoagAvailabilityGroupName", '${aoag_availability_group_name}', + "-AoagListenerName", '${aoag_listener_name}', + "-AoagListenerPort", '${aoag_listener_port}', + "-AoagListenerIps", '${aoag_listener_ips}', + "-HadrEndpointName", '${hadr_endpoint_name}', + "-HadrEndpointPort", '${hadr_endpoint_port}', + "-SampleDatabaseDownloadUrl", '${sample_database_download_url}', + "-SampleScriptPath", $SampleScriptPath, + "-AgScriptPath", $AgScriptPath, + "-LocalAdminUser", '${local_admin_user}', + "-LocalAdminPassword", '${windows_admin_password}', + "-TargetComputerName", '${target_computer_name}', + "-DcHostName", "DC-VM", + "-DcPrivateIp", '${dc_private_ip}', + "-SqlDataDriveLetter", '${sql_data_drive_letter}', + "-ReconcileScriptPath", $ReconcileScriptPath + ) + + & "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" @scriptArgs *> $ConsoleLogPath + $exitCode = $LASTEXITCODE + Write-LauncherLog "SQL node configuration script exit code: $exitCode" + if ($exitCode -ne 0) { + throw "SQL node bootstrap failed with exit code $exitCode. See $ConsoleLogPath." + } +} +catch { + Write-LauncherLog "ERROR: $($_.Exception.Message)" + throw +} +finally { + Unregister-ScheduledTask -TaskName $InitialTaskName -Confirm:$false -ErrorAction SilentlyContinue + Write-LauncherLog "Removed initial launcher task if it still existed" +} +'@ + +Set-Content -Path $LauncherPath -Value $LauncherBody -Encoding UTF8 -Force +& icacls.exe $LauncherPath /inheritance:r /grant:r "SYSTEM:(F)" "Administrators:(F)" | Out-Null +Write-BootstrapLog "Wrote $LauncherPath" + +$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$LauncherPath`"" +$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1) +Register-ScheduledTask -TaskName $InitialTaskName -Action $action -Trigger $trigger -User "SYSTEM" -RunLevel Highest -Force | Out-Null +Write-BootstrapLog "Registered $InitialTaskName as SYSTEM" + +Start-ScheduledTask -TaskName $InitialTaskName +Write-BootstrapLog "Started $InitialTaskName" diff --git a/automation-mssql-server-aoag-sample/terraform.tfstate b/automation-mssql-server-aoag-sample/terraform.tfstate new file mode 100644 index 0000000..90daf99 --- /dev/null +++ b/automation-mssql-server-aoag-sample/terraform.tfstate @@ -0,0 +1,3541 @@ +{ + "version": 4, + "terraform_version": "1.13.5", + "serial": 2478, + "lineage": "6f1489c1-58b1-4ed7-debe-29cff2433645", + "outputs": { + "automation_artifact_bucket": { + "value": "aoag-automation-e06fd2b8fa2f", + "type": "string" + }, + "availability_domains": { + "value": { + "dc": "RAVo:US-SANJOSE-1-AD-1", + "sql1": "RAVo:US-SANJOSE-1-AD-1", + "sql2": "RAVo:US-SANJOSE-1-AD-1" + }, + "type": [ + "object", + { + "dc": "string", + "sql1": "string", + "sql2": "string" + } + ] + }, + "post_provisioning_notes": { + "value": "Terraform apply completion means OCI instances, VNICs, and IPs were created; Windows first-boot automation continues afterward. Wait at least 10-15 minutes before testing, and on a fresh deployment allow the DC promotion cycle to finish first (often 20-25 minutes). Verify DOMAIN_READY.txt on DC-VM, WINDOWS_BOOTSTRAP_READY.txt on both SQL nodes, WSFC_READY.txt on SQL1, and TASK_5_5_LISTENER_READY.txt on both SQL nodes before using the RDP IPs or testing AOAG. DC-VM first-boot user_data configures mssqlaoag.demo, creates domainadmin, creates sqlsa, and creates \\\\DC-VM.mssqlaoag.demo\\ClusterWitness. SQL1/SQL2 first-boot user_data joins the domain, installs SQL Server/SSMS when enabled, prepares WSFC/Always On, creates the file-share witness, restores AdventureWorks2025 with NORECOVERY on SQL2, creates TestAOAG, waits for synchronization, and configures the native AOAG-LSN listener on port 1433 with 10.0.20.30 and 10.0.30.30 when auto_configure_wsfc is true. The next manual step is listener connectivity and failover validation.", + "type": "string" + }, + "primary_private_ips": { + "value": { + "dc": "10.0.10.10", + "sql1": "10.0.20.10", + "sql2": "10.0.30.10" + }, + "type": [ + "object", + { + "dc": "string", + "sql1": "string", + "sql2": "string" + } + ] + }, + "rdp_public_ips": { + "value": { + "dc": "163.192.63.56", + "sql1": "155.248.211.55", + "sql2": "170.9.30.132" + }, + "type": [ + "object", + { + "dc": "string", + "sql1": "string", + "sql2": "string" + } + ] + }, + "secondary_private_ips": { + "value": { + "sql1_agdemodb1": "10.0.20.30", + "sql1_agdemodb2": "10.0.20.31", + "sql1_wsfc": "10.0.20.20", + "sql2_agdemodb1": "10.0.30.30", + "sql2_agdemodb2": "10.0.30.31", + "sql2_wsfc": "10.0.30.20" + }, + "type": [ + "object", + { + "sql1_agdemodb1": "string", + "sql1_agdemodb2": "string", + "sql1_wsfc": "string", + "sql2_agdemodb1": "string", + "sql2_agdemodb2": "string", + "sql2_wsfc": "string" + } + ] + }, + "sql_data_volume_ids": { + "value": { + "sql1": "ocid1.volume.oc1.us-sanjose-1.abzwuljrq5jamfnsogm4vnml4vmjbsn4xbwwzfkaiohhyxqpjr44dok4pzaa", + "sql2": "ocid1.volume.oc1.us-sanjose-1.abzwuljrjp4twnvphag4u33stfimirqhtt2onjxrk2tmgkiqxyj6lxaf7raq" + }, + "type": [ + "object", + { + "sql1": "string", + "sql2": "string" + } + ] + }, + "subnet_ids": { + "value": { + "dc": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaqyaalgafielqf5cpgvvtkbq4qmb3xtix4n6m26ojww3nwuuu5axq", + "sql1": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", + "sql2": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha" + }, + "type": [ + "object", + { + "dc": "string", + "sql1": "string", + "sql2": "string" + } + ] + }, + "vcn_id": { + "value": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", + "type": "string" + } + }, + "resources": [ + { + "mode": "data", + "type": "oci_core_vnic_attachments", + "name": "sql1", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "filter": null, + "id": "CoreVnicAttachmentsDataSource-338867866", + "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicro5jzzgfjuljuqrgeudvsdt4husgjp4zcmpgn77vfepa", + "vnic_attachments": [ + { + "availability_domain": "RAVo:US-SANJOSE-1-AD-1", + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "create_vnic_details": [], + "display_name": "", + "id": "ocid1.vnicattachment.oc1.us-sanjose-1.anzwuljrfyadjyicqsnsrqrej6s6mev2uumfqdj6ipessy4fsmbuhfuc2wza", + "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicro5jzzgfjuljuqrgeudvsdt4husgjp4zcmpgn77vfepa", + "nic_index": 0, + "state": "ATTACHED", + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", + "time_created": "2026-08-10 12:05:30.326 +0000 UTC", + "vlan_id": "", + "vlan_tag": 933, + "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrvnj42teyjohtlqmhskrstpe46xeei5dbopezladpc7cqc7hgbzsq" + } + ], + "vnic_id": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0 + } + ] + }, + { + "mode": "data", + "type": "oci_core_vnic_attachments", + "name": "sql2", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "filter": null, + "id": "CoreVnicAttachmentsDataSource-2580728821", + "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyic7cfzmkslnkhtpv34tzzquvaqlqpj2vpyw74sq5uo3wpa", + "vnic_attachments": [ + { + "availability_domain": "RAVo:US-SANJOSE-1-AD-1", + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "create_vnic_details": [], + "display_name": "", + "id": "ocid1.vnicattachment.oc1.us-sanjose-1.anzwuljrfyadjyicy7n23sxli7zdyzyg27zj3w4xtaoembvif4ruqdku6dma", + "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyic7cfzmkslnkhtpv34tzzquvaqlqpj2vpyw74sq5uo3wpa", + "nic_index": 0, + "state": "ATTACHED", + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", + "time_created": "2026-08-10 12:05:30.304 +0000 UTC", + "vlan_id": "", + "vlan_tag": 1316, + "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrw2cjpuldcrm6uo3nluplqn3xhuk7b2nrbr7nzgwoupggar7oeiiq" + } + ], + "vnic_id": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0 + } + ] + }, + { + "mode": "data", + "type": "oci_identity_availability_domains", + "name": "region", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domains": [ + { + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "id": "ocid1.availabilitydomain.oc1..aaaaaaaavi2wyd6rjjffu5nzgb3gjq4thy46k7sgw5ibh7mu5sq5fyie6t5a", + "name": "RAVo:US-SANJOSE-1-AD-1" + } + ], + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "filter": null, + "id": "IdentityAvailabilityDomainsDataSource-429229913" + }, + "sensitive_attributes": [], + "identity_schema_version": 0 + } + ] + }, + { + "mode": "data", + "type": "oci_objectstorage_namespace", + "name": "automation", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "id": "ObjectStorageNamespaceDataSource-429229913", + "namespace": "idzxvkz1zdug" + }, + "sensitive_attributes": [], + "identity_schema_version": 0 + } + ] + }, + { + "mode": "managed", + "type": "oci_core_instance", + "name": "dc", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "agent_config": [ + { + "are_all_plugins_disabled": false, + "is_management_disabled": false, + "is_monitoring_disabled": false, + "plugins_config": [ + { + "desired_state": "ENABLED", + "name": "Compute Instance Run Command" + }, + { + "desired_state": "ENABLED", + "name": "Compute Instance Monitoring" + }, + { + "desired_state": "ENABLED", + "name": "Management Agent" + }, + { + "desired_state": "ENABLED", + "name": "Fleet Application Management Service" + }, + { + "desired_state": "ENABLED", + "name": "Cloud Guard Workload Protection" + } + ] + } + ], + "async": null, + "availability_config": [ + { + "is_live_migration_preferred": false, + "recovery_action": "RESTORE_INSTANCE" + } + ], + "availability_domain": "RAVo:US-SANJOSE-1-AD-1", + "boot_volume_id": "ocid1.bootvolume.oc1.us-sanjose-1.abzwuljry7gkeqnmxlrpjcvz6htx3rl5rawmnejhikzgnzkujaj4j3v56rpa", + "capacity_reservation_id": null, + "cluster_placement_group_id": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "compute_cluster_id": null, + "create_vnic_details": [ + { + "assign_ipv6ip": false, + "assign_private_dns_record": false, + "assign_public_ip": "true", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:12.227Z" + }, + "display_name": "DC-VM", + "freeform_tags": { + "Domain": "mssqlaoag.demo", + "Project": "sqlagtest", + "Role": "domain-controller", + "WitnessShare": "\\\\DC-VM.mssqlaoag.demo\\ClusterWitness" + }, + "hostname_label": "dc-vm", + "ipv6address_ipv6subnet_cidr_pair_details": [], + "nsg_ids": [], + "private_ip": "10.0.10.10", + "security_attributes": {}, + "skip_source_dest_check": false, + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaqyaalgafielqf5cpgvvtkbq4qmb3xtix4n6m26ojww3nwuuu5axq", + "vlan_id": "" + } + ], + "dedicated_vm_host_id": null, + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:12.132Z" + }, + "display_name": "DC-VM", + "extended_metadata": {}, + "fault_domain": "FAULT-DOMAIN-3", + "freeform_tags": { + "Domain": "mssqlaoag.demo", + "Project": "sqlagtest", + "Role": "domain-controller", + "WitnessShare": "\\\\DC-VM.mssqlaoag.demo\\ClusterWitness" + }, + "hostname_label": "dc-vm", + "id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicdbenpxxifme6zhoizya33w22xfxc6dliunl5mpk5ix6a", + "image": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", + "instance_configuration_id": null, + "instance_options": [ + { + "are_legacy_imds_endpoints_disabled": true + } + ], + "ipxe_script": null, + "is_cross_numa_node": false, + "is_pv_encryption_in_transit_enabled": null, + "launch_mode": "NATIVE", + "launch_options": [ + { + "boot_volume_type": "PARAVIRTUALIZED", + "firmware": "UEFI_64", + "is_consistent_volume_naming_enabled": false, + "is_pv_encryption_in_transit_enabled": false, + "network_type": "PARAVIRTUALIZED", + "remote_data_volume_type": "PARAVIRTUALIZED" + } + ], + "launch_volume_attachments": null, + "licensing_configs": [], + "metadata": { + "user_data": "I3BzMV9zeXNuYXRpdmUKJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICJTdG9wIgoKJFNldHVwRGlyID0gIkM6XEFPQUdBdXRvbWF0aW9uXERDIgokU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgIjAxLWNvbmZpZ3VyZS1kb21haW4tY29udHJvbGxlci5wczEiCiRMYXVuY2hlclBhdGggPSBKb2luLVBhdGggJFNldHVwRGlyICIwMC1sYXVuY2gtZG9tYWluLWNvbnRyb2xsZXItYm9vdHN0cmFwLnBzMSIKJFdyYXBwZXJMb2dQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAidXNlci1kYXRhLWJvb3RzdHJhcC5sb2ciCiRJbml0aWFsVGFza05hbWUgPSAiQU9BRy1Db25maWd1cmUtRG9tYWluQ29udHJvbGxlci1Jbml0aWFsIgpOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRTZXR1cERpciAtRm9yY2UgfCBPdXQtTnVsbAoKZnVuY3Rpb24gV3JpdGUtQm9vdHN0cmFwTG9nIHsKICAgIHBhcmFtKFtzdHJpbmddJE1lc3NhZ2UpCiAgICBBZGQtQ29udGVudCAtUGF0aCAkV3JhcHBlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQoKV3JpdGUtQm9vdHN0cmFwTG9nICJTdGFydGluZyBEQyB1c2VyX2RhdGEgYm9vdHN0cmFwIgoKJFNjcmlwdEJvZHlHemlwQmFzZTY0ID0gQCcKSDRzSUFBQUFBQUFBLyt3OC9YUGJOcksvNjYvQXNKcXJOR2VxeWIzN2V1cjVKb3BrcDc3bkQ1MGt0OWVYWkJLWVhFbG9LSUFCUUR1ZTFQLzdHM3lSSUVqS1NwUDIzUS9udTJsc2NyRlk3QzcyQ3d2KzdhdmVhUG5qNWRWOGViYnNUUmxkazAzQlFhRFpOUDcrQW1HQjVCYlFtbkFoVWNwMm1GQ1VNQ281eXpMZ2FNMjRmais1bXJ4QUdiNFo5WHFqMmNseXVqaWJyODZ1TG51ckxSRklKSnprRWhHQkNKVkFKV0VVWjlrOUVwQmpqaVdnTldjN3RBTE84WnJ4SFJMTXpaUmpJZTRZVHdYQ0hIcVVTU1FrNDVBaVFuMTRpU1dNMEpsRXZLQnFFdlZrQXdKaG1pSU9HeUlrY0lFd2tyRExHY2Y4dmljazVyTElrY1RpblpxUFNKUmdzekpDQzBCNExjR3ViSVptUzVSenRtT0tjTVRoaGpHcDFubnlyOG5GL1B5a2w3TTc0R0lMV1RhQ0Q0RGlrdytRRkFwMnpqS1MzS1BuOTJvWktENGxHYURScXlkUDQ4UnhPVGJyakN1T2puTHhGTVV6L1hpUzdnaWRXeGJNTThXUXIvOW1SbUQxcW1UUDM3L3VmZlgzWHUvbGRKZG1JSjhUbWhLNkdReGY5eFIvZDRNZVFnaTlGSklUdW5uZE43Z3Y4UTdRTVlwMlFyelBNTU9iVVFvN0ZoM1ZZUzlCM2hBbUhQREZjdm5QY3lYcUVNNmo5MW9BVjdBZW5TSDA4bjIyQkg1TEVwZ2tDU3VvZEdQRSswemdFUHFjSlRpcm9XWjVFZ0t0TU4rQW5MSmRYa2pnamw2dHdnMWFremtudDFqQ1dhNWduajRaUFJrOVZmOFBBWjh6Sm9Ya09KOVJvZWcxa3ovOTgzK1AvdkNuUDQ3c3YrR2dINGlrSU1RY3k2MkNubzVmVGJOQzZaOTkwUUcvM0dJT2p1ejlJNVlnaTN4R3VFV3Z4REVwSk50aHBYS3ZadE05c3FucDBtTkMyUWRjeWFRVjZvN0laUHU2ZnkxZ3FiZnJFaElPTW5oN3llZ1psY0J4SXNrdDlJYTlYditFYzhZbmlkNDdITmJBZ1NhYUkwdko4cWpYWDJIeHpqRkpyVHN1elpYZE1kTnlIMFc5L2hrVkVtY1pwRXR0ZjZ4SS9zRUlqZlh2RlNlangvZGsxT3N2bFZIWmgwVmJuWkg4SUJXd1h2SSthRytEeEc0amo5SWM1MFFOTDZYeE9DTHhQb3VGQVc0aU9tZWJmV085VlNlampHMmlYbjhCT0wzZk4yWjJkVEU1dTN5ek9Kbk1mclNyL1I0NFdSOHk2UHVUeGRucGo2T2ZCS01sazA0VW4vUDcwaHJGeWh6RmFSTGZ1QTBZM3lyK3o1bVFjMmVIbHlCbHBwakRhQ3JRTWZyemsxNXZYVkN0TytnSFRHUjh5bmk1Z3cwMCtxZzEwRE9LV2lIbjZtK1F3QWNYbUtaWU1uNC9mRjI5ZGpvLzMySUJSd2NQSTFTcXZhcnAwMCtIUGYzUEQ1eElpTS9aQmtYTDFXUjF2Undqb2FnamRCT2JPWkF3bzQ3ZDhDZ2NxTlpINkFZNUFEZEN1K01TaWRZSTR3Um5sMHZqSlpGa1pqb1lHYXhMNVFqalpRYVFvOWloSytsKzhKbGF6dSt6c1dUUEJRaUJOekRVN3k3aExqNlRzRVA2djZ2N0hOQ01jRWdVazFDb0cwcFNDYUNmMFZVaDQ4c2l5elNLU1pxcTdhM2lCVGZDNlhMOFBjNEtRSVBvNDVPeGVFQWZuejVFS0Y2andRdVE4UXhMR0I2aGloeC9DUk1oZ010NFVWQks2T1lrQStVR1VydWVQa2xWYkNLVklyNWNRbEp3SXU5SGMwNW9Rbktjalg0Z05HVjM0c3hDdlI2UFg0Q2NGcHdEbFFPejdIN3VvUGZqS0IrOEhvOHAzQTNLcVMwYUlyUnRSY2NleHRHWk9LTUxsc0ZnRCtMbkJjbWtBWHM5SG1za1JHMEF5WGlKZW5rdmxHU09xd1dQdEUyTjRUMktMbGRvY3IzNjdtcHh0dnJ4MWZMSDVlcmtJbXJvcmVXZmlnMzdnenFXNFFpZEdlS1B5MVdjMlNtUHk4a3RTckpHZzFnRmRZTVNObFlLN01DR1F5c2E5U08zbk4wcGw0NXc2ZTNRcmhBNjZFUGdaTW00SWt2N0o0UEU2dmxEVFJHV0lPT2w1Q1NSa3lScjEyZWxhWVpudjBNa3dVa21kSFNubjZOdkNOMENKeExUQk1ZY2ZiUGhtTW94UjVGaDJYaHdPb3hRVk9PL01BODlMYTlwWnByR211Z1huQlg1QmV4dWdEKy92d1RaWWJNY2xScjhxUG5jWVBEdFRuK2pRQmNnaWt5aVkzUkdiOWs3aUM5MTBMUlROaUtlOEUyeEF5b0ZlamFJTWtXTUhoSWRJVHNOc21pUFVQUU5UdE5vNkNtR3hYSlZ5THlRS0Q3SE41Q2hpSUpFRlNhbExSclRjQnloMklMNmRJM01NNTlnQzNXTUJpMkFLUDZKRVlxaXQ5VFMwc2NaVis3TDBOa1lkZktCeUNsTGphNC8vYSsvL0hXb0ZLN2szcUEyWmJ6RE10bWl5TzRYVUxHSkhoUWRNc29TZ2pEYUdWcllXcWNUaHFYRGFnUFVTZlkxM3R0eGx2RXFoV3BEYkxqNnJVdGZDTjJVV3EvK0M1a0FQVlU3THlpZ0p4M3phcFUwTk52cHhKYms2QTV6YlFDMHUzR2tVVXZHQ0ZHUWVxL0FCNVZXcVRuNjdYTVBXemZubkRNSmlZeDFTTG1DRDdKamc3clh3OUpmYUVjVEt5dS91OG51dFZXelJzQ1pUS01sTi9jU1ZORHdVZzBmbmRDRXFZVHA5WGg4dlRyOTYrZ0Z5T2NLWUJCTzBZY3lVbmxzWkMyeUtaMkRYaGVrTmVjdzVmZTVaQnVPODYweTZCWmtoaVYrUFI3YnY2dU5iMGl2TnJ3anlUTUI3WmdWUW90TlJVOEp5NVdIMFBLOXdNbVdVTERHUXVPWU1ub0xYTDRlajFmc09SYnc1ejh1TmRjSDFTTHFudldhNWdkS3pZMy9UTWxWRko1eXRxdlQyRExINTRwT0xlcTVtL3N3MlpVcytjMmwxN1hBVW9ibGF1cEN0RHlOTlExZ29GZXNTNkFhcUVwS3F5R1daemRDS2d2OGNsRlFTWFl3MHNrZXkyMWFJMFlYbUl1dERvSHE4ejFmcmhhREZvU1MzM3RHNmdDMGM4bFh6R0F3T0JWRlE4OHVyb21wUTMwUzF2OEZ6azQ1UUJObExjREF0eEFiVFRySWVuMkJnRm5GTkVIQTdPV09MbVp1R2xmdlY0OHFPMG1KdVlxV0dyaGJGaDVrci8rZkxHaExwTDg4TTFwbXFiRkZwU1lhbjZ1WFdKWm90OXhWb2ZHZHNxOVFQcEZkWTh1QkhHVEI2U09BRDFVOHNnSWhHeUwyS2JFSTJ5eCtYTE84SmlIYm81SUxmRGNNcHcvS1FpWWhDQXBKYldsQlY4SDBEZ3VrNjhaRm5tY0VVcDBPVSticXlMYldZOHFwd3JBWFBoQWhSUm1hR0d0bXpCMDZSZ3ZBYWZ3ZEUyYTF1MXlpcUpTcGpvZXErdXFyc0M0YUtSZm5XemJQdTZEalIrMXY3WVVqcWJkUE8vSlN3azROekpOUU5TdjliVlBTWU4vT1lJMkxUTllnL1lCMmZ5V3hxZFNoc2ZBWHNCOVhROGtQQU85UTlaWU4vQVdWdnRVSXRhbS9Ub2ZiT2R4VSt2MnJmVXoxbC84OGQwV2lmWnJ2MTZ1OEVkak1XQjVCTkdiN0ZuRW9oRkpVbGZhVU5OUTJYRm10akhxSHFVTWJZMnJxM1FyUTBIYUpOK0FaWUY4UFhJMjNSZml0a2kxcndscWNveFVudTRFZlkwUWNLTjVCMUZKK3FJZ0lOcGgrOWFzNnhZcHE0d25ORTkvTitXTFg3d1JJSkptRmpGb3FnL1VLd1A2eWhTNFBlRkV2dS9rSkV2bnk5ZXUrclFDZ3FuQ3haaHh3c2tXRGZrWW82RHpUQVBraTBvYUhGbG1tMDFrREdTdDlqL1R2a1g0Y1JmNlFZSldHSmpNMEtvRWVXbUs3WnVua00rckthczFsNGFWV3I4azUzQkpXaUs1RGtmYlRFak8yOHlCbGFnODRvNWFRdXM5Y3JlVjNaUXIvckNvSy9lSHZ2M3ZxWlM2dWZIQ00rdWVUNWVya1gyZXI2ZFhzWkc5NDNVblgvc1g2NXVobExwSkNTTFl6S3ZQNldZWDl4Q1BKa1ZlK3RHcUoxRXRXNlZoZHNpZFVGQnppNm5ScmtpUWd4Sjd3dGNYL09ZRHgrRXlvVFhqRmY5Z1NDY3NjSnpBSVJ1MHR1OWlhTHFyYnloWkRLOTZSUEZlV1ZwZmFRbmloekVNVUdMTU9DKy9PMHlwa3RScW05aURoZ2F3S2VzcVRHclNZelpWdkFDRnNrYmV2eVRtNDdsaW9NT2tvcUoxR1I2ak91Q01VZlpPeERhTnVsY2wyTTZZczBwVkpIVGlPNzBFY1dLQlVVOWJYNlpjblBmSkhubkV5cFR2dlhYYzl6WHJyVTB3eVNKVU5MUS9kMm5sc1BHdEhHYTF0eW1IZFkydlNBaUhGYlpMVE5ySE9hSi91dm1MTXB3b3VtT096QkhldzhQcmhlbXNGNW1vWnRmcHl5U3J2ZmJjUXJTcW4xNzhPVDNDYVJwL01tOFA1RXdoZVRWZlhjVzlkdnBiWCtGU0gycytxZHIzbmdLVlQrcENteDlTK2JXNm4rTzdud2ZQYjVhL2RSeXV4ZmhLZTAwUW90aVh0Z01SUHdMaUFIWk9BWmlEZVNaWWpOZm9SdkhWSHRMQk5TN0ZhOEE1V1dMeXpEUDdNZ05DWTVNU2NXcHErQ09VUjUwdXJRYnB3VVVxOERxZHRTT09oQ3JkYU9pMXFybTNLOG50TDlUbFJ1WDFtQ0ExUXpVQklRczNKWG12M2hoZWZXZ0czVm1OYWhqcGZ4RGNDSGFOblZaUVd4WmRzenRtYVpCQWRlVS9ibTdocUlMcWY2MjNVTnQzYnFBYnB0Vnk5amJ3Q1FRRG1kMXU5amZ6bXExWjgxZDRwa1phUGdnSHRIVmR2by9aV3JHQndzRkhmUm9IK0J1QXRyVmh2bzVZR3JYQk5YbHVXV2svMVp3RG9kMWk5amZ5R3EzYkFxcldxZ2k2ZmhYeHlPMGV4eHY0ZWdBUzFxTG9BYTdVclk1dUc3cEFTbFFHUjJlUEhlaTh2a3kya1JRYXAydU1tOEhVZGhJQ2lPYnNEdm5TdGhWSGxYb3dxRzN5U2s4MUduM1kyRUs3c3EzZ2lsNmJqVVE4cHpVc05HTVZsZjFYVmFSVmJtaHpWc1VOWlRodHJyYkFuM3hHS0Z3VTloMXZJMEhka3N3VWhPOUpTdjUvQWtnTXA0dHJlbWJiTWtvZ29zSTA3ZGd0TnkzaE4rU2NzUzBlNmZEZnVyM0VtQU1WZTRvR1dKQU1xczN1WExBVTVBcjdKUUxuWVJacmJxWlVWVXVadHpsa09YRHBESEgzM1ArY1g0MWZtSU91VmJSV3hMV3BMa0svc3I2OVd3SGNxVjBLbXl6QkNzYVl4V3MrQTNxK1dVMGFwT2ZoUlBzUWs3RS8wdkphV1M1Q25oTU1kenJKRmtRR0taMFRrR2I1dmRVYlIvclh1RVpPWkxVV0JjMXZicVJFdk1oRE5Rc2NzbWRFd2hiSXRnTVpvNllhellWbG5WU3hRUnRvcmpSc0l6NkU4Ry9nRzRnaEZULy93bDVGdTVJejg0Z3NvMFZhanZrSXpwbE9ubkJFcWRWMkt3aDJhVFJHV2lFZ0IyUnJkd0pweDBBMVR1bC9abXZZUldtMEJYVTNQUEdRY0JNdHVnYU4zQUxscGs5YndLcVhWSlF2RkxwU2FiR29OV0txSTMySTBUZzdUMU1PM3I5dllXM2l6TGJWV1JYd0JVaW5FSk1XNUJJNStSajlzZ1VOOHBkTmw5QkgxMzR5V0VzdENtSWFmNnp4Q0QraG5kTXI0Q1U2MkpWeVZ2ZFJxQkU3YloxUk1NNko4dDZaZ2txWmNKY3F4Tm45cm5NQVpUZUdEbW95c3phOXhEUkpFS2VxdWdzd1NwT2xic3hxaCtHVVgxUi8wMzVoMkkxMlNHcFJhWTB6dDEwZm82MkZZdzFFL2llN042Q3dCcWRtS1BGVXhxdXR3YUoxMGJINC8rWkJBcnFRMGNzMW0rK3RHdHJvd28rS1U4VHZNVTBYeHgzcnAxOVlZVFRKaEdXMFlWNDdadjMrN1NncHFiYmFKT2RGZDRycWxYdThHZkl0SnBuWDFIcVJYVFZpWE03cUVWV3Z0NkJmVUV0VHM2MnJScHJzK1VSdk5OdnA3UllxNnduWHg0R3p1ZE83Wm9ObVRqYUtuSS8yL2FLajkwNEl4K1IyaHN0M2NTNVpYb1dvR21GY3pUbkd5ZmN3N3RIQzc3RXRPdzZWTHBxd0krbjU2V2RrUEpldHB4b3AwbldGamUycnRPNkhXQmxMdEVKTlQ0VWVVdGE2aXVoTHUyVnc3YTEwa1o3dWNjUmxmTU9WaTBVVEhPbDRPMHNsYXBkcVRtY0dPWXRkSDZSK1lPU09CVFB2Wmxna1p1aXZsY1FJWGhiejZ2K1FGN0dHZEE5TmEwTEorMXpoc2lmem9DdEJvMENmb0dEMzlGdlVKaWpOQWYzMmlmdjM5NzhNYWRNakFQUVZuTzRlL2ZDS3F6VmpQYkwyZGh1cnBiVXRic0NMWU9CSU9PQ1VxNEVWWVN0amxVamRzRHNkV2FsN3FTRVRURm5nN3ZiVk4rT21mL0sxdjAzMHpjVXBTamU4R0VyYlQ3akM5UjRRaTNWd1J0WnJGS29IWjEyZ1NGRngvaVM3MmkxeEYzNDJjNlprbkNyUHl2ajRRVXl3OXR0cHI2bWJuczhuOGxHVEtpRVVETWJtd3VaTWFlQnhpSFVZSGFIVm9VdXBPb1NURDF5WVY2MXQ2M3RaVXhRU1BqU3M1QWRBUzd6eXFId1ZYejhwdVl6TkNjVEdBQ280aFVTbXRFTkNGa25xL2hpK25XMHczNElaTzVEbmJNTGRuRzdDWVVpYnJJenBBM2V0THVBVis4aUVuWEFVaGJRVE13TnhZVTZLSjNNMDI1Nmx3clY3YWF2eDFtY3NkZGRvS1hKSFRzQ1V6OEhLVFdjaStobzMwU3JjTEVDQlJmQWwzVFc1WEp5SW1QeWd4NzhYWWFiZXZhY2FTZDc4RVM1ZW5yQzNYWmtHaEVMcm4rQlJkT2x6b3YwU1RtRnpBKzRJb04rKzVsR3FGYmVRZXZLNVBJUDNYMlRDSDdmblAzQ3pYT3Q3dTNpek9BOXNqWU5PS1RLaUsrcXdEMVF3VUt1WTdVY2xIem9rQTcyRlEzRDNxS003VzR1WStFV1VIdWJIN1hxWFhGNkVoSjE0b0Z5VjB1MUl6V0tuNy8yWXlWamZFTVlIM1RkVjRxQjlaR0svZ2lBeGpqRW1hUGtxeGVTRSt4UXdFZ3B1a3FWTDdjTHpLeDB5UGUwditGVmk5QUdNRFYxZTNleXYraDdLNlpveFUzV1B2c1ZodHp0a1djZ2dJYTBQVEkzVE9rbmVRWGhYeUNMbU5ZM1psV2ozdzkrb1JhbXlnd0syN0l3OW53WFN2bTN0WVRsZC9IRXl0WDlheHRkcU5HbzdteG80Sk5idTdzN1d1dnBYTDlwOWI0R1JORXBOeHJQVkp6OGl4N0xnL0NKYzQvTFppby8rNmZEajhObVN1RHhhODhvRDl4YmFOOE44UHYwWFg4MHNmcXNHUTRFVDFON2MvaHEyUS9ydFpvYVlScWxNYW1xSkRWTWhsSG8wZFB1clk0cDdKK043T2Jqd1RFUWpjYmkxMDBLSitjNmVwOFMzT1NIcWtzKzN3Vmc1M2J0d2pVVEZTd1M1bWMzTURSclRtTFkwVGxOOHFlMms5dXZsQ09Vd3I3dUZ2a0xWMEhGVHR6MTBPR3ZSYlpqQ2ZtMm9zLzNudWluVkJ2K1hlaEtONzJHZm5IKzBzL3Z3c3BCVnZXeFQ5T0MxN21ONGwvQy9EZmhmQ0hzaitGaHZpbjBwK3dqbS9meExhZnNqV0Z4NnZNbTAydkZQbFYrMnNqTkR2VVRRZVhKME5COU96NGVEQ1ZncnIxMkQ5dVd1M1ljSGVobTFlZjNVSTlkM1ltdk1NM3AzY0FyOW5GR28waEd0cE5EVTRjMk80YUl6ZGNuZGovclRtcFhFay9IaSsyclJuZW5SbzFCNmZxVTFtUlpiWkZzT1dPS0VlWDdnMHo4RTdKaW5JZzRRYVQvVk5zYzBGU3dGZE10cFFsZzZyY21jb1JrSXY3OVdybHFQOFY0M2w3ckUxTDVSMmxQeXl5K25rbW0vb3F6WHI1eURFZ215MkVobkdkR3lCejV6eU1OWitFalYreGJiR1c1ZnNtRGI4OGFmeXVxT1FyL1ZueWtIYlR4emVkdi9pNFVsU3pYU3N1M1hMdiszSER2YlhYWStRUndVcVR3MGV6ZUs4QmZvay9LSURoZm9tY0toMCtHZ1NIVkVrQ1lES2Y3MGJQeDExNUlkZXJ6bysrUUx0L1A0SlF1MWJDUFlyVzBCMUo0VlJpdllQWHJpamR0M1hmMXhkaVRDUDg5b05vT1BtMVRVN1dtdU9CMmR2TDYxWWNFMnBqaStlQ08vcVROWFA1Vm4zZVFzQlhSZVU0cllMSDhHY0lmN2xvWlIza2RTNWhxenhXU1RYeDlEeHdhU2h5cjQ2M3FHSDZ1SitIdHdFQ3JuNllJMnNTN2k2VUlhOTQ2T28xalJzTkVMM0JTUnNsMmNnSWVvNlQ2N3Buck5jYnRTM2lFUENhRUl5eGNqeWpMY2VGS25rcXVaY3ZPaXFkZzduUlpLTm82SzRFbnBkSThOQnpUek5IOXFoSENFUzMvU1c3L2JZMnNlcE13bTB2cGZPZUtwMnJuK2xRZjBrMXZpL29jb2h1WjlqMUFkNk81NWVYY3l2VnllTHk4bkZTVzJVNFhsOWpCNVYyYVlhUERWdUxoaHdqSHovMXphQlRwamY2TEt0R1JCNHpQQUdaQTJIZUorOXNWcFJvVGcwU3ExaFVxUGZsTi9LY2FzNDZKRFAvVmhWZkdOOGNjV0JxTlVOajJyM1BOdGRzdnZoYWY3R2RVbTlzUlVLemR2eXROcVh0ZG8vNlp0Q0poNE4xYWVOUml0MlRja3RjSUd6RmRuQlFEMnhGL3NqNWpXSFB6UlU3R2ZQMFAxRE1JcCticnNiNW4zS3l6TnRTSGNONnNZNzQ3L0MyN3hIWGJjY2pSTTc3RnlvMGRwWFZZNC9FR21iM2p5RDlXemdydGNkb2NoMldPblEyVFJRS2VPbFArT0dDUlhXMy9ubXJPdTZUM0JUdThXcys0UzA5R3IzVUpYMm1rWkJuK1NjQ1JrN0NvOXFwbllmdFZVdm5kOWdzRCtuMS9BZHRUTjlwSytiYzZaQjU0aWVlbXhKaU5yOWcrVjdTS0M5UjJqK3FVUlNLeHcyREpkcEltL3VzVDNORXdzMXZTTGVXVWZ6RGRFbWFzbmFNTmYzcDBhbUwxRVlWUEVsM0xsKzBVWXZjN0FwekhqOU9WRVBRUlBHVTJBVUZqUVZVd1psRkRZMERDNTUxK0dBYmRlNTRvRnB1WERmZWVNczh6bGUxYTZyRmtUMGJCQk5abGFOWXZlUkM1MXpYaTUxaVhvNVdjV1QyYXo2WTNhNXRMRjB2VlN0Zml3cHNiMndkbXJuc1FtV216WStvMGxXcEhDQktkN0FEcWhjTVphSnRneXBmYW5tNjE2SmFkeUZ0THdmNXlad00vbGw0NDdkMEs2dWJrOCtLcHZLdkh4c2xzU2JQVUI3OU5oK3o1QnU5bjVodDlObkJSbmFiTGFjUVo2eGU5MGl2djhvendsTkRUcGxLZ2NNYXBOSTF5ZXI1aVMvVWFrYjBydkNVUHQ2Yk1zSVM0SFMyWmEzcHZ3d28ySUdHV3kwWVJxM25sTWpVeEpld3dWTG9WWkY2UXErMmhBWU45WHk0cEl0ZEEvdUZaMGFPNjBKMFo2N0J0eWlUcjZkLzN5RDBScUZ0L2VRdVVOVDE4eFZiK3BVb2k0N2pLTjkrNkd4Z0wyYndvYyswSEdoN2xpLzZ4dWVzZm04WmFSN1NOMjNXcXZsZUIreDdQNWVhQnNyNXhYNVNzSUlWSERnWlM4ZHJReS9LQ1U1Wk5xV2p5MDBadjI4bk9ZUUtqcnlzMzNwMEI2MHJvVFN3VlZVRlc2aXo4dXUvcE5lb2Yra1Y3OXlldlhGODZzVzRPcGJ6UGJlVDV2RjE4WitoTTdaaGxBa3RYWEhRaHhRbkJ4RmJTVFVmVUNabkxRZUVZUWQvRjRCeUQ3T05GVTd6TjhCUjNlY1NBazBxbmozbGQ4ZnIrd0NFVXJaMWtXbXFYZjNiemhLMlIzTkdFNEZ1aW5LbmdGM2JPK2hzNzNQcnNha3J4eXIrSWR4UjlGUGpGQnhoQVRUOTNZUWtZZ1ZVcEFVa055Q2h5bmhSSklFWnlpdldUR1VZN2tkTmV5L2Y2bWo5MitSTW5jVzYrb2lmZWc5OVB3MmVmL0MxMkp4dFhqay9vQXVPUFllZXY4SEFBRC8vd0VBQVAvL2lnVTFOVVppQUFBPQonQAoKJGNvbXByZXNzZWRCeXRlcyA9IFtDb252ZXJ0XTo6RnJvbUJhc2U2NFN0cmluZygkU2NyaXB0Qm9keUd6aXBCYXNlNjQuVHJpbSgpKQokbWVtb3J5U3RyZWFtID0gW0lPLk1lbW9yeVN0cmVhbV06Om5ldygkY29tcHJlc3NlZEJ5dGVzKQokZ3ppcFN0cmVhbSA9IFtJTy5Db21wcmVzc2lvbi5HemlwU3RyZWFtXTo6bmV3KCRtZW1vcnlTdHJlYW0sIFtJTy5Db21wcmVzc2lvbi5Db21wcmVzc2lvbk1vZGVdOjpEZWNvbXByZXNzKQokcmVhZGVyID0gW0lPLlN0cmVhbVJlYWRlcl06Om5ldygkZ3ppcFN0cmVhbSwgW1RleHQuRW5jb2RpbmddOjpVVEY4KQp0cnkgewogICAgJFNjcmlwdEJvZHkgPSAkcmVhZGVyLlJlYWRUb0VuZCgpCn0KZmluYWxseSB7CiAgICAkcmVhZGVyLkNsb3NlKCkKICAgICRnemlwU3RyZWFtLkNsb3NlKCkKICAgICRtZW1vcnlTdHJlYW0uQ2xvc2UoKQp9CgpTZXQtQ29udGVudCAtUGF0aCAkU2NyaXB0UGF0aCAtVmFsdWUgJFNjcmlwdEJvZHkgLUVuY29kaW5nIFVURjggLUZvcmNlCiYgaWNhY2xzLmV4ZSAkU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIldyb3RlICRTY3JpcHRQYXRoIgoKJExhdW5jaGVyQm9keSA9IEAnCiRFcnJvckFjdGlvblByZWZlcmVuY2UgPSAiU3RvcCIKCiRTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxEQyIKJFNjcmlwdFBhdGggPSBKb2luLVBhdGggJFNldHVwRGlyICIwMS1jb25maWd1cmUtZG9tYWluLWNvbnRyb2xsZXIucHMxIgokTGF1bmNoZXJMb2dQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAibGF1bmNoZXIubG9nIgokQ29uc29sZUxvZ1BhdGggPSBKb2luLVBhdGggJFNldHVwRGlyICJjb25maWd1cmUtZGMtY29uc29sZS5sb2ciCiRJbml0aWFsVGFza05hbWUgPSAiQU9BRy1Db25maWd1cmUtRG9tYWluQ29udHJvbGxlci1Jbml0aWFsIgoKZnVuY3Rpb24gV3JpdGUtTGF1bmNoZXJMb2cgewogICAgcGFyYW0oW3N0cmluZ10kTWVzc2FnZSkKICAgIE5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFNldHVwRGlyIC1Gb3JjZSB8IE91dC1OdWxsCiAgICBBZGQtQ29udGVudCAtUGF0aCAkTGF1bmNoZXJMb2dQYXRoIC1WYWx1ZSAoInswOnN9IHsxfSIgLWYgKEdldC1EYXRlKSwgJE1lc3NhZ2UpCn0KCnRyeSB7CiAgICBXcml0ZS1MYXVuY2hlckxvZyAiU3RhcnRpbmcgREMgY29uZmlndXJhdGlvbiBsYXVuY2hlciIKCiAgICAkcG93ZXJzaGVsbFBhdGggPSBKb2luLVBhdGggJGVudjpTeXN0ZW1Sb290ICJTeXN0ZW0zMlxXaW5kb3dzUG93ZXJTaGVsbFx2MS4wXHBvd2Vyc2hlbGwuZXhlIgogICAgJHNjcmlwdEFyZ3MgPSBAKAogICAgICAgICItTm9Qcm9maWxlIiwKICAgICAgICAiLUV4ZWN1dGlvblBvbGljeSIsICJCeXBhc3MiLAogICAgICAgICItRmlsZSIsICRTY3JpcHRQYXRoLAogICAgICAgICItRG9tYWluTmFtZSIsICdtc3NxbGFvYWcuZGVtbycsCiAgICAgICAgIi1OZXRiaW9zTmFtZSIsICdNU1NRTEFPQUcnLAogICAgICAgICItRG9tYWluQWRtaW5Vc2VyIiwgJ2RvbWFpbmFkbWluJywKICAgICAgICAiLVNxbFNlcnZpY2VBY2NvdW50VXNlciIsICdzcWxzYScsCiAgICAgICAgIi1Mb2NhbEFkbWluVXNlciIsICdvcGMnLAogICAgICAgICItVGFyZ2V0Q29tcHV0ZXJOYW1lIiwgJ0RDLVZNJywKICAgICAgICAiLURjUHJpdmF0ZUlwIiwgJzEwLjAuMTAuMTAnLAogICAgICAgICItV2l0bmVzc1BhdGgiLCAnQzpcQ2x1c3RlcldpdG5lc3MnLAogICAgICAgICItV2l0bmVzc1NoYXJlTmFtZSIsICdDbHVzdGVyV2l0bmVzcycsCiAgICAgICAgIi1Eb21haW5BZG1pblBhc3N3b3JkUGxhaW4iLCAnUEBzc3cwcmRAMTIzJywKICAgICAgICAiLVNxbFNlcnZpY2VBY2NvdW50UGFzc3dvcmRQbGFpbiIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItTG9jYWxBZG1pblBhc3N3b3JkUGxhaW4iLCAnUEBzc3cwcmRAMTIzJywKICAgICAgICAiLU5vbkludGVyYWN0aXZlIgogICAgKQoKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJJbnZva2luZyAkU2NyaXB0UGF0aCIKICAgICYgJHBvd2Vyc2hlbGxQYXRoIEBzY3JpcHRBcmdzICo+ICRDb25zb2xlTG9nUGF0aAogICAgJGV4aXRDb2RlID0gJExBU1RFWElUQ09ERQogICAgV3JpdGUtTGF1bmNoZXJMb2cgIkRDIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGV4aXQgY29kZTogJGV4aXRDb2RlIgoKICAgIGlmICgkZXhpdENvZGUgLW5lIDApIHsKICAgICAgICB0aHJvdyAiREMgY29uZmlndXJhdGlvbiBzY3JpcHQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICRleGl0Q29kZS4gU2VlICRDb25zb2xlTG9nUGF0aCBhbmQgQzpcQU9BR0F1dG9tYXRpb25cRENcY29uZmlndXJlLWRjLmxvZy4iCiAgICB9Cn0KY2F0Y2ggewogICAgV3JpdGUtTGF1bmNoZXJMb2cgIkVSUk9SOiAkKCRfLkV4Y2VwdGlvbi5NZXNzYWdlKSIKICAgIHRocm93Cn0KZmluYWxseSB7CiAgICB0cnkgewogICAgICAgIFVucmVnaXN0ZXItU2NoZWR1bGVkVGFzayAtVGFza05hbWUgJEluaXRpYWxUYXNrTmFtZSAtQ29uZmlybTokZmFsc2UgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUKICAgICAgICBXcml0ZS1MYXVuY2hlckxvZyAiUmVtb3ZlZCBpbml0aWFsIGxhdW5jaGVyIHRhc2sgaWYgaXQgc3RpbGwgZXhpc3RlZCIKICAgIH0KICAgIGNhdGNoIHsKICAgICAgICBXcml0ZS1MYXVuY2hlckxvZyAiSW5pdGlhbCBsYXVuY2hlciB0YXNrIGNsZWFudXAgd2FybmluZzogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICB9Cn0KJ0AKClNldC1Db250ZW50IC1QYXRoICRMYXVuY2hlclBhdGggLVZhbHVlICRMYXVuY2hlckJvZHkgLUVuY29kaW5nIFVURjggLUZvcmNlCiYgaWNhY2xzLmV4ZSAkTGF1bmNoZXJQYXRoIC9pbmhlcml0YW5jZTpyIC9ncmFudDpyICJTWVNURU06KEYpIiAiQWRtaW5pc3RyYXRvcnM6KEYpIiB8IE91dC1OdWxsCldyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJExhdW5jaGVyUGF0aCIKCiRhY3Rpb24gPSBOZXctU2NoZWR1bGVkVGFza0FjdGlvbiAtRXhlY3V0ZSAiUG93ZXJTaGVsbC5leGUiIC1Bcmd1bWVudCAiLU5vUHJvZmlsZSAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtRmlsZSBgIiRMYXVuY2hlclBhdGhgIiIKJHRyaWdnZXIgPSBOZXctU2NoZWR1bGVkVGFza1RyaWdnZXIgLU9uY2UgLUF0IChHZXQtRGF0ZSkuQWRkTWludXRlcygxKQpSZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1BY3Rpb24gJGFjdGlvbiAtVHJpZ2dlciAkdHJpZ2dlciAtVXNlciAiU1lTVEVNIiAtUnVuTGV2ZWwgSGlnaGVzdCAtRm9yY2UgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIlJlZ2lzdGVyZWQgJEluaXRpYWxUYXNrTmFtZSBhcyBTWVNURU0iCgpTdGFydC1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRlZCAkSW5pdGlhbFRhc2tOYW1lIgo=" + }, + "platform_config": [], + "preemptible_instance_config": [], + "preserve_boot_volume": null, + "preserve_data_volumes_created_at_launch": null, + "private_ip": "10.0.10.10", + "public_ip": "163.192.63.56", + "region": "us-sanjose-1", + "security_attributes": {}, + "security_attributes_state": "STABLE", + "shape": "VM.Standard.E5.Flex", + "shape_config": [ + { + "baseline_ocpu_utilization": "", + "gpu_description": "", + "gpus": 0, + "local_disk_description": "", + "local_disks": 0, + "local_disks_total_size_in_gbs": 0, + "max_vnic_attachments": 6, + "memory_in_gbs": 16, + "networking_bandwidth_in_gbps": 6, + "nvmes": 0, + "ocpus": 6, + "processor_description": "2.3 GHz AMD EPYCâ„¢ 9J14 (Genoa)", + "vcpus": 12 + } + ], + "source_details": [ + { + "boot_volume_size_in_gbs": "100", + "boot_volume_vpus_per_gb": "10", + "instance_source_image_filter_details": [], + "is_preserve_boot_volume_enabled": false, + "kms_key_id": "", + "source_id": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", + "source_type": "image" + } + ], + "state": "RUNNING", + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaqyaalgafielqf5cpgvvtkbq4qmb3xtix4n6m26ojww3nwuuu5axq", + "system_tags": {}, + "time_created": "2026-08-10 12:01:12.507 +0000 UTC", + "time_maintenance_reboot_due": "", + "timeouts": null, + "update_operation_constraint": null + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "metadata" + }, + { + "type": "index", + "value": { + "value": "user_data", + "type": "string" + } + } + ] + ], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNzAwMDAwMDAwMDAwLCJkZWxldGUiOjQ1MDAwMDAwMDAwMDAsInVwZGF0ZSI6MjcwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_identity_availability_domains.region", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_subnet.dc", + "oci_core_vcn.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_instance", + "name": "sql1", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "agent_config": [ + { + "are_all_plugins_disabled": false, + "is_management_disabled": false, + "is_monitoring_disabled": false, + "plugins_config": [ + { + "desired_state": "ENABLED", + "name": "Compute Instance Run Command" + }, + { + "desired_state": "ENABLED", + "name": "Compute Instance Monitoring" + }, + { + "desired_state": "ENABLED", + "name": "Management Agent" + }, + { + "desired_state": "ENABLED", + "name": "Fleet Application Management Service" + }, + { + "desired_state": "ENABLED", + "name": "Cloud Guard Workload Protection" + } + ] + } + ], + "async": null, + "availability_config": [ + { + "is_live_migration_preferred": false, + "recovery_action": "RESTORE_INSTANCE" + } + ], + "availability_domain": "RAVo:US-SANJOSE-1-AD-1", + "boot_volume_id": "ocid1.bootvolume.oc1.us-sanjose-1.abzwuljrrbwsm2asjmm2ox3sijc5el7qaesxms3akfmfj3n5laiqljhzzrra", + "capacity_reservation_id": null, + "cluster_placement_group_id": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "compute_cluster_id": null, + "create_vnic_details": [ + { + "assign_ipv6ip": false, + "assign_private_dns_record": false, + "assign_public_ip": "true", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:05:24.120Z" + }, + "display_name": "SQL1", + "freeform_tags": { + "Domain": "mssqlaoag.demo", + "Project": "sqlagtest", + "Role": "sql-node" + }, + "hostname_label": "sql1", + "ipv6address_ipv6subnet_cidr_pair_details": [], + "nsg_ids": [], + "private_ip": "10.0.20.10", + "security_attributes": {}, + "skip_source_dest_check": false, + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", + "vlan_id": "" + } + ], + "dedicated_vm_host_id": null, + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:05:23.980Z" + }, + "display_name": "SQL1", + "extended_metadata": {}, + "fault_domain": "FAULT-DOMAIN-3", + "freeform_tags": { + "Domain": "mssqlaoag.demo", + "Project": "sqlagtest", + "Role": "sql-node" + }, + "hostname_label": "sql1", + "id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicro5jzzgfjuljuqrgeudvsdt4husgjp4zcmpgn77vfepa", + "image": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", + "instance_configuration_id": null, + "instance_options": [ + { + "are_legacy_imds_endpoints_disabled": true + } + ], + "ipxe_script": null, + "is_cross_numa_node": false, + "is_pv_encryption_in_transit_enabled": null, + "launch_mode": "NATIVE", + "launch_options": [ + { + "boot_volume_type": "PARAVIRTUALIZED", + "firmware": "UEFI_64", + "is_consistent_volume_naming_enabled": false, + "is_pv_encryption_in_transit_enabled": false, + "network_type": "PARAVIRTUALIZED", + "remote_data_volume_type": "PARAVIRTUALIZED" + } + ], + "launch_volume_attachments": null, + "licensing_configs": [], + "metadata": { + "user_data": "I3BzMV9zeXNuYXRpdmUKJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICJTdG9wIgoKJFNldHVwRGlyID0gIkM6XEFPQUdBdXRvbWF0aW9uXFdpbmRvd3MiCiRTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAiMDItY29uZmlndXJlLXNxbC1ub2RlLnBzMSIKJFdzZmNTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxXU0ZDIgokV3NmY1NjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDMtY29uZmlndXJlLXdzZmMucHMxIgokU2FtcGxlU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkV3NmY1NldHVwRGlyICIwNC1wcmVwYXJlLXNhbXBsZS1kYXRhYmFzZS5wczEiCiRBZ1NjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDUtY29uZmlndXJlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEiCiRTYWZlRmFpbG92ZXJTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA2LXNhZmUtcGxhbm5lZC1mYWlsb3Zlci5wczEiCiRSZWNvbmNpbGVTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA3LXJlY29uY2lsZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxIgokTGF1bmNoZXJQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAiMDAtbGF1bmNoLXNxbC1ub2RlLWJvb3RzdHJhcC5wczEiCiRXcmFwcGVyTG9nUGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgInVzZXItZGF0YS1ib290c3RyYXAubG9nIgokSW5pdGlhbFRhc2tOYW1lID0gIkFPQUctQ29uZmlndXJlLVdpbmRvd3NOb2RlLUluaXRpYWwiCk5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFNldHVwRGlyIC1Gb3JjZSB8IE91dC1OdWxsCk5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFdzZmNTZXR1cERpciAtRm9yY2UgfCBPdXQtTnVsbAoKZnVuY3Rpb24gV3JpdGUtQm9vdHN0cmFwTG9nIHsKICAgIHBhcmFtKFtzdHJpbmddJE1lc3NhZ2UpCiAgICBBZGQtQ29udGVudCAtUGF0aCAkV3JhcHBlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQoKdHJhcCB7CiAgICB0cnkgewogICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRVJST1I6ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIgogICAgfQogICAgY2F0Y2ggewogICAgICAgICMgUHJlc2VydmUgdGhlIG9yaWdpbmFsIGJvb3RzdHJhcCBlcnJvciBpZiBsb2dnaW5nIGl0c2VsZiBpcyB1bmF2YWlsYWJsZS4KICAgIH0KICAgIHRocm93Cn0KCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRpbmcgU1FMIG5vZGUgdXNlcl9kYXRhIGJvb3RzdHJhcCBmb3IgU1FMMSIKCiMgRXN0YWJsaXNoIHJlY292ZXJ5IGFjY2VzcyBiZWZvcmUgZG93bmxvYWRpbmcgYW55IGF1dG9tYXRpb24gYXJ0aWZhY3RzLiBJZiBhCiMgUEFSLCBETlMsIG9yIE9iamVjdCBTdG9yYWdlIHJlcXVlc3QgZmFpbHMsIHRoZSBvcGVyYXRvciBjYW4gc3RpbGwgUkRQIGluIHdpdGgKIyB0aGUgbG9jYWwgYWNjb3VudHMgYW5kIGluc3BlY3QgdGhlIGJvb3RzdHJhcCBsb2dzLgpmdW5jdGlvbiBTZXQtTG9jYWxCb290c3RyYXBBY2Nlc3MgewogICAgV3JpdGUtQm9vdHN0cmFwTG9nICJDb25maWd1cmluZyBsb2NhbCBib290c3RyYXAgYWNjb3VudHMiCiAgICAkcGFzc3dvcmQgPSAnUEBzc3cwcmRAMTIzJwogICAgaWYgKFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJHBhc3N3b3JkKSkgewogICAgICAgIHRocm93ICJ3aW5kb3dzX2FkbWluX3Bhc3N3b3JkIHdhcyBub3QgcmVuZGVyZWQgaW50byBTUUwgbm9kZSB1c2VyX2RhdGEuIgogICAgfQoKICAgICRhZG1pblJlc3VsdCA9ICYgbmV0LmV4ZSB1c2VyIEFkbWluaXN0cmF0b3IgJHBhc3N3b3JkIC9sb2dvbnBhc3N3b3JkY2hnOm5vIC9hY3RpdmU6eWVzIDI+JjEKICAgIGlmICgkTEFTVEVYSVRDT0RFIC1uZSAwKSB7CiAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBjb25maWd1cmUgbG9jYWwgQWRtaW5pc3RyYXRvciBiZWZvcmUgZG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdHM6ICQoJGFkbWluUmVzdWx0IC1qb2luICcgJykiCiAgICB9CiAgICBXcml0ZS1Cb290c3RyYXBMb2cgIlJlc2V0IGxvY2FsIEFkbWluaXN0cmF0b3IgcGFzc3dvcmQgYW5kIGVuYWJsZWQgYWNjb3VudCIKCiAgICBpZiAoJ29wYycgLWFuZCAnb3BjJyAtbmUgJ0FkbWluaXN0cmF0b3InKSB7CiAgICAgICAgJHVzZXJSZXN1bHQgPSAmIG5ldC5leGUgdXNlciAnb3BjJyAkcGFzc3dvcmQgL2xvZ29ucGFzc3dvcmRjaGc6bm8gL2FjdGl2ZTp5ZXMgMj4mMQogICAgICAgIGlmICgkTEFTVEVYSVRDT0RFIC1uZSAwKSB7CiAgICAgICAgICAgICR1c2VyUmVzdWx0ID0gJiBuZXQuZXhlIHVzZXIgJ29wYycgJHBhc3N3b3JkIC9hZGQgL2xvZ29ucGFzc3dvcmRjaGc6bm8gL2FjdGl2ZTp5ZXMgMj4mMQogICAgICAgICAgICBpZiAoJExBU1RFWElUQ09ERSAtbmUgMCkgewogICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBjcmVhdGUgbG9jYWwgb3BjIGJlZm9yZSBkb3dubG9hZGluZyBhdXRvbWF0aW9uIGFydGlmYWN0czogJCgkdXNlclJlc3VsdCAtam9pbiAnICcpIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiUmVzZXQgbG9jYWwgb3BjIHBhc3N3b3JkIGFuZCBlbmFibGVkIGFjY291bnQiCgogICAgICAgIGZvcmVhY2ggKCRncm91cCBpbiBAKCdBZG1pbmlzdHJhdG9ycycsICdSZW1vdGUgRGVza3RvcCBVc2VycycpKSB7CiAgICAgICAgICAgICRtZW1iZXJQYXR0ZXJuID0gIig/aSkoXnxcXCkkKFtyZWdleF06OkVzY2FwZSgnb3BjJykpJCIKICAgICAgICAgICAgJGFscmVhZHlNZW1iZXIgPSAkZmFsc2UKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRhbHJlYWR5TWVtYmVyID0gQCgKICAgICAgICAgICAgICAgICAgICBHZXQtTG9jYWxHcm91cE1lbWJlciAtR3JvdXAgJGdyb3VwIC1FcnJvckFjdGlvbiBTdG9wIHwKICAgICAgICAgICAgICAgICAgICAgICAgV2hlcmUtT2JqZWN0IHsgJF8uTmFtZSAtbWF0Y2ggJG1lbWJlclBhdHRlcm4gfQogICAgICAgICAgICAgICAgKS5Db3VudCAtZ3QgMAogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiQ291bGQgbm90IHByZS1jaGVjayBvcGMgbWVtYmVyc2hpcCBpbiAkZ3JvdXA7IHVzaW5nIG5ldC5leGUgcmVzdWx0IgogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGFscmVhZHlNZW1iZXIpIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAib3BjIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgJGdyb3VwOyBjb250aW51aW5nIgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGdyb3VwUmVzdWx0ID0gJiBuZXQuZXhlIGxvY2FsZ3JvdXAgJGdyb3VwICdvcGMnIC9hZGQgMj4mMQogICAgICAgICAgICAkZ3JvdXBFeGl0Q29kZSA9ICRMQVNURVhJVENPREUKICAgICAgICAgICAgJGdyb3VwT3V0cHV0ID0gKCRncm91cFJlc3VsdCAtam9pbiAiYG4iKQoKICAgICAgICAgICAgaWYgKCRncm91cEV4aXRDb2RlIC1lcSAwKSB7CiAgICAgICAgICAgICAgICBXcml0ZS1Cb290c3RyYXBMb2cgIkFkZGVkIG9wYyB0byAkZ3JvdXAiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZWlmICgkZ3JvdXBPdXRwdXQgLW1hdGNoICcoP2kpMTM3OHxhbHJlYWR5IGEgbWVtYmVyIG9mIHRoZSBncm91cCcpIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAib3BjIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgJGdyb3VwOyBjb250aW51aW5nIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBhZGQgb3BjIHRvICRncm91cCBiZWZvcmUgZG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdHMuIG5ldC5leGUgZXhpdCBjb2RlICRncm91cEV4aXRDb2RlLiBPdXRwdXQ6ICRncm91cE91dHB1dCIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBTZXQtSXRlbVByb3BlcnR5IC1QYXRoICJIS0xNOlxTeXN0ZW1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxUZXJtaW5hbCBTZXJ2ZXIiIC1OYW1lICJmRGVueVRTQ29ubmVjdGlvbnMiIC1WYWx1ZSAwCiAgICBFbmFibGUtTmV0RmlyZXdhbGxSdWxlIC1EaXNwbGF5R3JvdXAgIlJlbW90ZSBEZXNrdG9wIiAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IE91dC1OdWxsCiAgICBXcml0ZS1Cb290c3RyYXBMb2cgIkNvbmZpZ3VyZWQgbG9jYWwgQWRtaW5pc3RyYXRvciBhbmQgb3BjIGNyZWRlbnRpYWxzIGJlZm9yZSBhdXRvbWF0aW9uIGRvd25sb2FkcyIKfQoKU2V0LUxvY2FsQm9vdHN0cmFwQWNjZXNzCgpmdW5jdGlvbiBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IHsKICAgIHBhcmFtKFtzdHJpbmddJFVyaSwgW3N0cmluZ10kUGF0aCkKICAgIGlmIChbc3RyaW5nXTo6SXNOdWxsT3JXaGl0ZVNwYWNlKCRVcmkpKSB7IHJldHVybiB9CiAgICBbTmV0LlNlcnZpY2VQb2ludE1hbmFnZXJdOjpTZWN1cml0eVByb3RvY29sID0gW05ldC5TZWN1cml0eVByb3RvY29sVHlwZV06OlRsczEyCgogICAgZm9yICgkYXR0ZW1wdCA9IDE7ICRhdHRlbXB0IC1sZSAzMDsgJGF0dGVtcHQrKykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdCBhdHRlbXB0PSRhdHRlbXB0IHBhdGg9JFBhdGgiCiAgICAgICAgICAgIEludm9rZS1XZWJSZXF1ZXN0IC1Vc2VCYXNpY1BhcnNpbmcgLVVyaSAkVXJpIC1PdXRGaWxlICRQYXRoIC1FcnJvckFjdGlvbiBTdG9wCiAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRQYXRoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgIkF1dG9tYXRpb24gc2NyaXB0IGRvd25sb2FkIHJldHVybmVkIHdpdGhvdXQgY3JlYXRpbmcgJFBhdGgiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWRlZCBhdXRvbWF0aW9uIGFydGlmYWN0IHBhdGg9JFBhdGgiCiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KICAgICAgICBjYXRjaCB7CiAgICAgICAgICAgIGlmICgkYXR0ZW1wdCAtZ2UgMzApIHsKICAgICAgICAgICAgICAgIHRocm93ICJBdXRvbWF0aW9uIGFydGlmYWN0IGRvd25sb2FkIGZhaWxlZCBhZnRlciAkYXR0ZW1wdCBhdHRlbXB0cyBmb3IgJHtQYXRofTogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWQgd2FybmluZyBwYXRoPSR7UGF0aH0gYXR0ZW1wdD0kYXR0ZW1wdGA6ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIgogICAgICAgICAgICBTdGFydC1TbGVlcCAtU2Vjb25kcyAxMAogICAgICAgIH0KICAgIH0KfQoKRG93bmxvYWQtQXV0b21hdGlvblNjcmlwdCAtVXJpICdodHRwczovL29iamVjdHN0b3JhZ2UudXMtc2Fuam9zZS0xLm9yYWNsZWNsb3VkLmNvbS9wL1BMUFQtT09jYXpsYlJNMENCNnBKR3c0ZHMyMDVqQ1NWelpGTHhRRnYxOWVFQktRdkxINF9hdnp0dDFaa1ZJaVovbi9pZHp4dmt6MXpkdWcvYi9hb2FnLWF1dG9tYXRpb24tZTA2ZmQyYjhmYTJmL28vc2NyaXB0cy8wMi1jb25maWd1cmUtc3FsLW5vZGUucHMxJyAtUGF0aCAkU2NyaXB0UGF0aAomIGljYWNscy5leGUgJFNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKV3JpdGUtQm9vdHN0cmFwTG9nICJXcm90ZSAkU2NyaXB0UGF0aCIKCkRvd25sb2FkLUF1dG9tYXRpb25TY3JpcHQgLVVyaSAnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9iRFk4VVRyQ1FmVU15b0diaUdkVXhrMWtGV3plWFZKOTJXY2pjYXJYS05qNWQ0LTZ5aFpCOHdDRWh2VG5qWXlCL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDMtY29uZmlndXJlLXdzZmMucHMxJyAtUGF0aCAkV3NmY1NjcmlwdFBhdGgKJiBpY2FjbHMuZXhlICRXc2ZjU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIldyb3RlICRXc2ZjU2NyaXB0UGF0aCIKCmlmICgtbm90IFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvQ3NUaFhDVHF5M1BOYXpBR1lpMVg1RGdZWlFaa0RXemNnWC13UHhMa2lFRWZ3SG9GenBENzA5NERkWTdUWEVLaC9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA0LXByZXBhcmUtc2FtcGxlLWRhdGFiYXNlLnBzMScpKSB7CiAgICBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IC1VcmkgJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvQ3NUaFhDVHF5M1BOYXpBR1lpMVg1RGdZWlFaa0RXemNnWC13UHhMa2lFRWZ3SG9GenBENzA5NERkWTdUWEVLaC9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA0LXByZXBhcmUtc2FtcGxlLWRhdGFiYXNlLnBzMScgLVBhdGggJFNhbXBsZVNjcmlwdFBhdGgKICAgICYgaWNhY2xzLmV4ZSAkU2FtcGxlU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbAogICAgV3JpdGUtQm9vdHN0cmFwTG9nICJXcm90ZSAkU2FtcGxlU2NyaXB0UGF0aCIKfQoKaWYgKC1ub3QgW3N0cmluZ106OklzTnVsbE9yV2hpdGVTcGFjZSgnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9fVDJVRTVFVGxIeVd1ZUxkYW9PZElUZXpNRzF6dXpRdnMzYTJ2UzRna09YZzd3WThuV2lFOWFEVVpvd0owU2NwL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDUtY29uZmlndXJlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEnKSkgewogICAgRG93bmxvYWQtQXV0b21hdGlvblNjcmlwdCAtVXJpICdodHRwczovL29iamVjdHN0b3JhZ2UudXMtc2Fuam9zZS0xLm9yYWNsZWNsb3VkLmNvbS9wL19UMlVFNUVUbEh5V3VlTGRhb09kSVRlek1HMXp1elF2czNhMnZTNGdrT1hnN3dZOG5XaUU5YURVWm93SjBTY3Avbi9pZHp4dmt6MXpkdWcvYi9hb2FnLWF1dG9tYXRpb24tZTA2ZmQyYjhmYTJmL28vc2NyaXB0cy8wNS1jb25maWd1cmUtYXZhaWxhYmlsaXR5LWdyb3VwLnBzMScgLVBhdGggJEFnU2NyaXB0UGF0aAogICAgJiBpY2FjbHMuZXhlICRBZ1NjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJEFnU2NyaXB0UGF0aCIKfQoKaWYgKC1ub3QgW3N0cmluZ106OklzTnVsbE9yV2hpdGVTcGFjZSgnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9Cemp4WUNaX183SEtkbFB4WWMyTEdYV1NBcjFwSmRGc095TDM5aUcxN1UxNlZMZ3RpMjM2NUQ0bnQyd3VaOXRaL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDYtc2FmZS1wbGFubmVkLWZhaWxvdmVyLnBzMScpKSB7CiAgICBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IC1VcmkgJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvQnpqeFlDWl9fN0hLZGxQeFljMkxHWFdTQXIxcEpkRnNPeUwzOWlHMTdVMTZWTGd0aTIzNjVENG50Mnd1Wjl0Wi9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA2LXNhZmUtcGxhbm5lZC1mYWlsb3Zlci5wczEnIC1QYXRoICRTYWZlRmFpbG92ZXJTY3JpcHRQYXRoCiAgICAmIGljYWNscy5leGUgJFNhZmVGYWlsb3ZlclNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJFNhZmVGYWlsb3ZlclNjcmlwdFBhdGgiCn0KCmlmICgtbm90IFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvMERvUFI4NjBLdjRkQl8ya2d1LXpVRTJEWkdfcnFKaWpmY1BXME9mTDFFTXVVQzlnNXVhcVRING9MMFVQYjlKci9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA3LXJlY29uY2lsZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxJykpIHsKICAgIERvd25sb2FkLUF1dG9tYXRpb25TY3JpcHQgLVVyaSAnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC8wRG9QUjg2MEt2NGRCXzJrZ3UtelVFMkRaR19ycUppamZjUFcwT2ZMMUVNdVVDOWc1dWFxVEg0b0wwVVBiOUpyL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDctcmVjb25jaWxlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEnIC1QYXRoICRSZWNvbmNpbGVTY3JpcHRQYXRoCiAgICAmIGljYWNscy5leGUgJFJlY29uY2lsZVNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJFJlY29uY2lsZVNjcmlwdFBhdGgiCn0KCiRMYXVuY2hlckJvZHkgPSBAJwokRXJyb3JBY3Rpb25QcmVmZXJlbmNlID0gIlN0b3AiCiRTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxXaW5kb3dzIgokU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgIjAyLWNvbmZpZ3VyZS1zcWwtbm9kZS5wczEiCiRXc2ZjU2V0dXBEaXIgPSAiQzpcQU9BR0F1dG9tYXRpb25cV1NGQyIKJFNhbXBsZVNjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDQtcHJlcGFyZS1zYW1wbGUtZGF0YWJhc2UucHMxIgokQWdTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA1LWNvbmZpZ3VyZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxIgokUmVjb25jaWxlU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkV3NmY1NldHVwRGlyICIwNy1yZWNvbmNpbGUtYXZhaWxhYmlsaXR5LWdyb3VwLnBzMSIKJExhdW5jaGVyTG9nUGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgImxhdW5jaGVyLmxvZyIKJENvbnNvbGVMb2dQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAid2luZG93cy1ib290c3RyYXAtY29uc29sZS5sb2ciCiRJbml0aWFsVGFza05hbWUgPSAiQU9BRy1Db25maWd1cmUtV2luZG93c05vZGUtSW5pdGlhbCIKZnVuY3Rpb24gV3JpdGUtTGF1bmNoZXJMb2cgewogICAgcGFyYW0oW3N0cmluZ10kTWVzc2FnZSkKICAgIEFkZC1Db250ZW50IC1QYXRoICRMYXVuY2hlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQp0cnkgewogICAgV3JpdGUtTGF1bmNoZXJMb2cgIlN0YXJ0aW5nIFNRTCBub2RlIGNvbmZpZ3VyYXRpb24gbGF1bmNoZXIgZm9yIFNRTDEiCiAgICAkc2NyaXB0QXJncyA9IEAoCiAgICAgICAgIi1Ob1Byb2ZpbGUiLAogICAgICAgICItRXhlY3V0aW9uUG9saWN5IiwgIkJ5cGFzcyIsCiAgICAgICAgIi1GaWxlIiwgJFNjcmlwdFBhdGgsCiAgICAgICAgIi1Eb21haW5OYW1lIiwgJ21zc3FsYW9hZy5kZW1vJywKICAgICAgICAiLURvbWFpbk5ldGJpb3NOYW1lIiwgJ01TU1FMQU9BRycsCiAgICAgICAgIi1Eb21haW5BZG1pblVzZXIiLCAnZG9tYWluYWRtaW4nLAogICAgICAgICItRG9tYWluQWRtaW5QYXNzd29yZCIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItU3FsU2VydmljZUFjY291bnRVc2VyIiwgJ3NxbHNhJywKICAgICAgICAiLVNxbFNlcnZpY2VBY2NvdW50UGFzc3dvcmQiLCAnUEBzc3cwcmRAMTIzJywKICAgICAgICAiLUF1dG9JbnN0YWxsU3FsU2VydmVyIiwgJ3RydWUnLAogICAgICAgICItSW5zdGFsbFNzbXMiLCAndHJ1ZScsCiAgICAgICAgIi1TcWxTZXJ2ZXJEb3dubG9hZFVybCIsICdodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjM0NDYyNicsCiAgICAgICAgIi1Tc21zRG93bmxvYWRVcmwiLCAnaHR0cHM6Ly9ha2EubXMvc3Ntcy8yMi9yZWxlYXNlL3ZzX1NTTVMuZXhlJywKICAgICAgICAiLUF1dG9Db25maWd1cmVXc2ZjIiwgJ3RydWUnLAogICAgICAgICItV3NmY0NsdXN0ZXJOYW1lIiwgJ1NRTEFHQ0xVU1RFUicsCiAgICAgICAgIi1Xc2ZjUHJpbWFyeU5vZGUiLCAnU1FMMScsCiAgICAgICAgIi1Xc2ZjQ2x1c3Rlck5vZGVzIiwgJ1NRTDEsU1FMMicsCiAgICAgICAgIi1Xc2ZjQ2x1c3RlclN0YXRpY0FkZHJlc3NlcyIsICcxMC4wLjIwLjIwLDEwLjAuMzAuMjAnLAogICAgICAgICItV3NmY1dpdG5lc3NTaGFyZSIsICdcXERDLVZNLm1zc3FsYW9hZy5kZW1vXENsdXN0ZXJXaXRuZXNzJywKICAgICAgICAiLVNraXBDbHVzdGVyVmFsaWRhdGlvbiIsICd0cnVlJywKICAgICAgICAiLUFvYWdEYXRhYmFzZU5hbWUiLCAnQWR2ZW50dXJlV29ya3MyMDI1JywKICAgICAgICAiLUFvYWdBdmFpbGFiaWxpdHlHcm91cE5hbWUiLCAnVGVzdEFPQUcnLAogICAgICAgICItQW9hZ0xpc3RlbmVyTmFtZSIsICdBT0FHLUxTTicsCiAgICAgICAgIi1Bb2FnTGlzdGVuZXJQb3J0IiwgJzE0MzMnLAogICAgICAgICItQW9hZ0xpc3RlbmVySXBzIiwgJzEwLjAuMjAuMzAsMTAuMC4zMC4zMCcsCiAgICAgICAgIi1IYWRyRW5kcG9pbnROYW1lIiwgJ0hhZHJfZW5kcG9pbnQnLAogICAgICAgICItSGFkckVuZHBvaW50UG9ydCIsICc1MDIyJywKICAgICAgICAiLVNhbXBsZURhdGFiYXNlRG93bmxvYWRVcmwiLCAnaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9zcWwtc2VydmVyLXNhbXBsZXMvcmVsZWFzZXMvZG93bmxvYWQvYWR2ZW50dXJld29ya3MvQWR2ZW50dXJlV29ya3MyMDI1LmJhaycsCiAgICAgICAgIi1TYW1wbGVTY3JpcHRQYXRoIiwgJFNhbXBsZVNjcmlwdFBhdGgsCiAgICAgICAgIi1BZ1NjcmlwdFBhdGgiLCAkQWdTY3JpcHRQYXRoLAogICAgICAgICItTG9jYWxBZG1pblVzZXIiLCAnb3BjJywKICAgICAgICAiLUxvY2FsQWRtaW5QYXNzd29yZCIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItVGFyZ2V0Q29tcHV0ZXJOYW1lIiwgJ1NRTDEnLAogICAgICAgICItRGNIb3N0TmFtZSIsICJEQy1WTSIsCiAgICAgICAgIi1EY1ByaXZhdGVJcCIsICcxMC4wLjEwLjEwJywKICAgICAgICAiLVNxbERhdGFEcml2ZUxldHRlciIsICdGJywKICAgICAgICAiLVJlY29uY2lsZVNjcmlwdFBhdGgiLCAkUmVjb25jaWxlU2NyaXB0UGF0aAogICAgKQoKICAgICYgIiRlbnY6U3lzdGVtUm9vdFxTeXN0ZW0zMlxXaW5kb3dzUG93ZXJTaGVsbFx2MS4wXHBvd2Vyc2hlbGwuZXhlIiBAc2NyaXB0QXJncyAqPiAkQ29uc29sZUxvZ1BhdGgKICAgICRleGl0Q29kZSA9ICRMQVNURVhJVENPREUKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJTUUwgbm9kZSBjb25maWd1cmF0aW9uIHNjcmlwdCBleGl0IGNvZGU6ICRleGl0Q29kZSIKICAgIGlmICgkZXhpdENvZGUgLW5lIDApIHsKICAgICAgICB0aHJvdyAiU1FMIG5vZGUgYm9vdHN0cmFwIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAkZXhpdENvZGUuIFNlZSAkQ29uc29sZUxvZ1BhdGguIgogICAgfQp9CmNhdGNoIHsKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJFUlJPUjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICB0aHJvdwp9CmZpbmFsbHkgewogICAgVW5yZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1Db25maXJtOiRmYWxzZSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQogICAgV3JpdGUtTGF1bmNoZXJMb2cgIlJlbW92ZWQgaW5pdGlhbCBsYXVuY2hlciB0YXNrIGlmIGl0IHN0aWxsIGV4aXN0ZWQiCn0KJ0AKClNldC1Db250ZW50IC1QYXRoICRMYXVuY2hlclBhdGggLVZhbHVlICRMYXVuY2hlckJvZHkgLUVuY29kaW5nIFVURjggLUZvcmNlCiYgaWNhY2xzLmV4ZSAkTGF1bmNoZXJQYXRoIC9pbmhlcml0YW5jZTpyIC9ncmFudDpyICJTWVNURU06KEYpIiAiQWRtaW5pc3RyYXRvcnM6KEYpIiB8IE91dC1OdWxsCldyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJExhdW5jaGVyUGF0aCIKCiRhY3Rpb24gPSBOZXctU2NoZWR1bGVkVGFza0FjdGlvbiAtRXhlY3V0ZSAiUG93ZXJTaGVsbC5leGUiIC1Bcmd1bWVudCAiLU5vUHJvZmlsZSAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtRmlsZSBgIiRMYXVuY2hlclBhdGhgIiIKJHRyaWdnZXIgPSBOZXctU2NoZWR1bGVkVGFza1RyaWdnZXIgLU9uY2UgLUF0IChHZXQtRGF0ZSkuQWRkTWludXRlcygxKQpSZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1BY3Rpb24gJGFjdGlvbiAtVHJpZ2dlciAkdHJpZ2dlciAtVXNlciAiU1lTVEVNIiAtUnVuTGV2ZWwgSGlnaGVzdCAtRm9yY2UgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIlJlZ2lzdGVyZWQgJEluaXRpYWxUYXNrTmFtZSBhcyBTWVNURU0iCgpTdGFydC1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRlZCAkSW5pdGlhbFRhc2tOYW1lIgo=" + }, + "platform_config": [], + "preemptible_instance_config": [], + "preserve_boot_volume": null, + "preserve_data_volumes_created_at_launch": null, + "private_ip": "10.0.20.10", + "public_ip": "155.248.211.55", + "region": "us-sanjose-1", + "security_attributes": {}, + "security_attributes_state": "STABLE", + "shape": "VM.Standard.E5.Flex", + "shape_config": [ + { + "baseline_ocpu_utilization": "", + "gpu_description": "", + "gpus": 0, + "local_disk_description": "", + "local_disks": 0, + "local_disks_total_size_in_gbs": 0, + "max_vnic_attachments": 8, + "memory_in_gbs": 32, + "networking_bandwidth_in_gbps": 8, + "nvmes": 0, + "ocpus": 8, + "processor_description": "2.3 GHz AMD EPYCâ„¢ 9J14 (Genoa)", + "vcpus": 16 + } + ], + "source_details": [ + { + "boot_volume_size_in_gbs": "100", + "boot_volume_vpus_per_gb": "10", + "instance_source_image_filter_details": [], + "is_preserve_boot_volume_enabled": false, + "kms_key_id": "", + "source_id": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", + "source_type": "image" + } + ], + "state": "RUNNING", + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", + "system_tags": {}, + "time_created": "2026-08-10 12:05:25.702 +0000 UTC", + "time_maintenance_reboot_due": "", + "timeouts": null, + "update_operation_constraint": null + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "metadata" + }, + { + "type": "index", + "value": { + "value": "user_data", + "type": "string" + } + } + ] + ], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNzAwMDAwMDAwMDAwLCJkZWxldGUiOjQ1MDAwMDAwMDAwMDAsInVwZGF0ZSI6MjcwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql1", + "oci_core_subnet.dc", + "oci_core_subnet.sql1", + "oci_core_vcn.sql", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_instance", + "name": "sql2", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "agent_config": [ + { + "are_all_plugins_disabled": false, + "is_management_disabled": false, + "is_monitoring_disabled": false, + "plugins_config": [ + { + "desired_state": "ENABLED", + "name": "Compute Instance Run Command" + }, + { + "desired_state": "ENABLED", + "name": "Compute Instance Monitoring" + }, + { + "desired_state": "ENABLED", + "name": "Management Agent" + }, + { + "desired_state": "ENABLED", + "name": "Fleet Application Management Service" + }, + { + "desired_state": "ENABLED", + "name": "Cloud Guard Workload Protection" + } + ] + } + ], + "async": null, + "availability_config": [ + { + "is_live_migration_preferred": false, + "recovery_action": "RESTORE_INSTANCE" + } + ], + "availability_domain": "RAVo:US-SANJOSE-1-AD-1", + "boot_volume_id": "ocid1.bootvolume.oc1.us-sanjose-1.abzwuljrgk5rv6a25vjjmnqun2wjzilwa4bqa2bkcngwb5l7mrahskmrowya", + "capacity_reservation_id": null, + "cluster_placement_group_id": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "compute_cluster_id": null, + "create_vnic_details": [ + { + "assign_ipv6ip": false, + "assign_private_dns_record": false, + "assign_public_ip": "true", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:05:24.120Z" + }, + "display_name": "SQL2", + "freeform_tags": { + "Domain": "mssqlaoag.demo", + "Project": "sqlagtest", + "Role": "sql-node" + }, + "hostname_label": "sql2", + "ipv6address_ipv6subnet_cidr_pair_details": [], + "nsg_ids": [], + "private_ip": "10.0.30.10", + "security_attributes": {}, + "skip_source_dest_check": false, + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", + "vlan_id": "" + } + ], + "dedicated_vm_host_id": null, + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:05:23.980Z" + }, + "display_name": "SQL2", + "extended_metadata": {}, + "fault_domain": "FAULT-DOMAIN-3", + "freeform_tags": { + "Domain": "mssqlaoag.demo", + "Project": "sqlagtest", + "Role": "sql-node" + }, + "hostname_label": "sql2", + "id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyic7cfzmkslnkhtpv34tzzquvaqlqpj2vpyw74sq5uo3wpa", + "image": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", + "instance_configuration_id": null, + "instance_options": [ + { + "are_legacy_imds_endpoints_disabled": true + } + ], + "ipxe_script": null, + "is_cross_numa_node": false, + "is_pv_encryption_in_transit_enabled": null, + "launch_mode": "NATIVE", + "launch_options": [ + { + "boot_volume_type": "PARAVIRTUALIZED", + "firmware": "UEFI_64", + "is_consistent_volume_naming_enabled": false, + "is_pv_encryption_in_transit_enabled": false, + "network_type": "PARAVIRTUALIZED", + "remote_data_volume_type": "PARAVIRTUALIZED" + } + ], + "launch_volume_attachments": null, + "licensing_configs": [], + "metadata": { + "user_data": "I3BzMV9zeXNuYXRpdmUKJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICJTdG9wIgoKJFNldHVwRGlyID0gIkM6XEFPQUdBdXRvbWF0aW9uXFdpbmRvd3MiCiRTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAiMDItY29uZmlndXJlLXNxbC1ub2RlLnBzMSIKJFdzZmNTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxXU0ZDIgokV3NmY1NjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDMtY29uZmlndXJlLXdzZmMucHMxIgokU2FtcGxlU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkV3NmY1NldHVwRGlyICIwNC1wcmVwYXJlLXNhbXBsZS1kYXRhYmFzZS5wczEiCiRBZ1NjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDUtY29uZmlndXJlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEiCiRTYWZlRmFpbG92ZXJTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA2LXNhZmUtcGxhbm5lZC1mYWlsb3Zlci5wczEiCiRSZWNvbmNpbGVTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA3LXJlY29uY2lsZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxIgokTGF1bmNoZXJQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAiMDAtbGF1bmNoLXNxbC1ub2RlLWJvb3RzdHJhcC5wczEiCiRXcmFwcGVyTG9nUGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgInVzZXItZGF0YS1ib290c3RyYXAubG9nIgokSW5pdGlhbFRhc2tOYW1lID0gIkFPQUctQ29uZmlndXJlLVdpbmRvd3NOb2RlLUluaXRpYWwiCk5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFNldHVwRGlyIC1Gb3JjZSB8IE91dC1OdWxsCk5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFdzZmNTZXR1cERpciAtRm9yY2UgfCBPdXQtTnVsbAoKZnVuY3Rpb24gV3JpdGUtQm9vdHN0cmFwTG9nIHsKICAgIHBhcmFtKFtzdHJpbmddJE1lc3NhZ2UpCiAgICBBZGQtQ29udGVudCAtUGF0aCAkV3JhcHBlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQoKdHJhcCB7CiAgICB0cnkgewogICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRVJST1I6ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIgogICAgfQogICAgY2F0Y2ggewogICAgICAgICMgUHJlc2VydmUgdGhlIG9yaWdpbmFsIGJvb3RzdHJhcCBlcnJvciBpZiBsb2dnaW5nIGl0c2VsZiBpcyB1bmF2YWlsYWJsZS4KICAgIH0KICAgIHRocm93Cn0KCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRpbmcgU1FMIG5vZGUgdXNlcl9kYXRhIGJvb3RzdHJhcCBmb3IgU1FMMiIKCiMgRXN0YWJsaXNoIHJlY292ZXJ5IGFjY2VzcyBiZWZvcmUgZG93bmxvYWRpbmcgYW55IGF1dG9tYXRpb24gYXJ0aWZhY3RzLiBJZiBhCiMgUEFSLCBETlMsIG9yIE9iamVjdCBTdG9yYWdlIHJlcXVlc3QgZmFpbHMsIHRoZSBvcGVyYXRvciBjYW4gc3RpbGwgUkRQIGluIHdpdGgKIyB0aGUgbG9jYWwgYWNjb3VudHMgYW5kIGluc3BlY3QgdGhlIGJvb3RzdHJhcCBsb2dzLgpmdW5jdGlvbiBTZXQtTG9jYWxCb290c3RyYXBBY2Nlc3MgewogICAgV3JpdGUtQm9vdHN0cmFwTG9nICJDb25maWd1cmluZyBsb2NhbCBib290c3RyYXAgYWNjb3VudHMiCiAgICAkcGFzc3dvcmQgPSAnUEBzc3cwcmRAMTIzJwogICAgaWYgKFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJHBhc3N3b3JkKSkgewogICAgICAgIHRocm93ICJ3aW5kb3dzX2FkbWluX3Bhc3N3b3JkIHdhcyBub3QgcmVuZGVyZWQgaW50byBTUUwgbm9kZSB1c2VyX2RhdGEuIgogICAgfQoKICAgICRhZG1pblJlc3VsdCA9ICYgbmV0LmV4ZSB1c2VyIEFkbWluaXN0cmF0b3IgJHBhc3N3b3JkIC9sb2dvbnBhc3N3b3JkY2hnOm5vIC9hY3RpdmU6eWVzIDI+JjEKICAgIGlmICgkTEFTVEVYSVRDT0RFIC1uZSAwKSB7CiAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBjb25maWd1cmUgbG9jYWwgQWRtaW5pc3RyYXRvciBiZWZvcmUgZG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdHM6ICQoJGFkbWluUmVzdWx0IC1qb2luICcgJykiCiAgICB9CiAgICBXcml0ZS1Cb290c3RyYXBMb2cgIlJlc2V0IGxvY2FsIEFkbWluaXN0cmF0b3IgcGFzc3dvcmQgYW5kIGVuYWJsZWQgYWNjb3VudCIKCiAgICBpZiAoJ29wYycgLWFuZCAnb3BjJyAtbmUgJ0FkbWluaXN0cmF0b3InKSB7CiAgICAgICAgJHVzZXJSZXN1bHQgPSAmIG5ldC5leGUgdXNlciAnb3BjJyAkcGFzc3dvcmQgL2xvZ29ucGFzc3dvcmRjaGc6bm8gL2FjdGl2ZTp5ZXMgMj4mMQogICAgICAgIGlmICgkTEFTVEVYSVRDT0RFIC1uZSAwKSB7CiAgICAgICAgICAgICR1c2VyUmVzdWx0ID0gJiBuZXQuZXhlIHVzZXIgJ29wYycgJHBhc3N3b3JkIC9hZGQgL2xvZ29ucGFzc3dvcmRjaGc6bm8gL2FjdGl2ZTp5ZXMgMj4mMQogICAgICAgICAgICBpZiAoJExBU1RFWElUQ09ERSAtbmUgMCkgewogICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBjcmVhdGUgbG9jYWwgb3BjIGJlZm9yZSBkb3dubG9hZGluZyBhdXRvbWF0aW9uIGFydGlmYWN0czogJCgkdXNlclJlc3VsdCAtam9pbiAnICcpIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiUmVzZXQgbG9jYWwgb3BjIHBhc3N3b3JkIGFuZCBlbmFibGVkIGFjY291bnQiCgogICAgICAgIGZvcmVhY2ggKCRncm91cCBpbiBAKCdBZG1pbmlzdHJhdG9ycycsICdSZW1vdGUgRGVza3RvcCBVc2VycycpKSB7CiAgICAgICAgICAgICRtZW1iZXJQYXR0ZXJuID0gIig/aSkoXnxcXCkkKFtyZWdleF06OkVzY2FwZSgnb3BjJykpJCIKICAgICAgICAgICAgJGFscmVhZHlNZW1iZXIgPSAkZmFsc2UKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRhbHJlYWR5TWVtYmVyID0gQCgKICAgICAgICAgICAgICAgICAgICBHZXQtTG9jYWxHcm91cE1lbWJlciAtR3JvdXAgJGdyb3VwIC1FcnJvckFjdGlvbiBTdG9wIHwKICAgICAgICAgICAgICAgICAgICAgICAgV2hlcmUtT2JqZWN0IHsgJF8uTmFtZSAtbWF0Y2ggJG1lbWJlclBhdHRlcm4gfQogICAgICAgICAgICAgICAgKS5Db3VudCAtZ3QgMAogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiQ291bGQgbm90IHByZS1jaGVjayBvcGMgbWVtYmVyc2hpcCBpbiAkZ3JvdXA7IHVzaW5nIG5ldC5leGUgcmVzdWx0IgogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGFscmVhZHlNZW1iZXIpIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAib3BjIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgJGdyb3VwOyBjb250aW51aW5nIgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGdyb3VwUmVzdWx0ID0gJiBuZXQuZXhlIGxvY2FsZ3JvdXAgJGdyb3VwICdvcGMnIC9hZGQgMj4mMQogICAgICAgICAgICAkZ3JvdXBFeGl0Q29kZSA9ICRMQVNURVhJVENPREUKICAgICAgICAgICAgJGdyb3VwT3V0cHV0ID0gKCRncm91cFJlc3VsdCAtam9pbiAiYG4iKQoKICAgICAgICAgICAgaWYgKCRncm91cEV4aXRDb2RlIC1lcSAwKSB7CiAgICAgICAgICAgICAgICBXcml0ZS1Cb290c3RyYXBMb2cgIkFkZGVkIG9wYyB0byAkZ3JvdXAiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZWlmICgkZ3JvdXBPdXRwdXQgLW1hdGNoICcoP2kpMTM3OHxhbHJlYWR5IGEgbWVtYmVyIG9mIHRoZSBncm91cCcpIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAib3BjIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgJGdyb3VwOyBjb250aW51aW5nIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBhZGQgb3BjIHRvICRncm91cCBiZWZvcmUgZG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdHMuIG5ldC5leGUgZXhpdCBjb2RlICRncm91cEV4aXRDb2RlLiBPdXRwdXQ6ICRncm91cE91dHB1dCIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBTZXQtSXRlbVByb3BlcnR5IC1QYXRoICJIS0xNOlxTeXN0ZW1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxUZXJtaW5hbCBTZXJ2ZXIiIC1OYW1lICJmRGVueVRTQ29ubmVjdGlvbnMiIC1WYWx1ZSAwCiAgICBFbmFibGUtTmV0RmlyZXdhbGxSdWxlIC1EaXNwbGF5R3JvdXAgIlJlbW90ZSBEZXNrdG9wIiAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IE91dC1OdWxsCiAgICBXcml0ZS1Cb290c3RyYXBMb2cgIkNvbmZpZ3VyZWQgbG9jYWwgQWRtaW5pc3RyYXRvciBhbmQgb3BjIGNyZWRlbnRpYWxzIGJlZm9yZSBhdXRvbWF0aW9uIGRvd25sb2FkcyIKfQoKU2V0LUxvY2FsQm9vdHN0cmFwQWNjZXNzCgpmdW5jdGlvbiBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IHsKICAgIHBhcmFtKFtzdHJpbmddJFVyaSwgW3N0cmluZ10kUGF0aCkKICAgIGlmIChbc3RyaW5nXTo6SXNOdWxsT3JXaGl0ZVNwYWNlKCRVcmkpKSB7IHJldHVybiB9CiAgICBbTmV0LlNlcnZpY2VQb2ludE1hbmFnZXJdOjpTZWN1cml0eVByb3RvY29sID0gW05ldC5TZWN1cml0eVByb3RvY29sVHlwZV06OlRsczEyCgogICAgZm9yICgkYXR0ZW1wdCA9IDE7ICRhdHRlbXB0IC1sZSAzMDsgJGF0dGVtcHQrKykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdCBhdHRlbXB0PSRhdHRlbXB0IHBhdGg9JFBhdGgiCiAgICAgICAgICAgIEludm9rZS1XZWJSZXF1ZXN0IC1Vc2VCYXNpY1BhcnNpbmcgLVVyaSAkVXJpIC1PdXRGaWxlICRQYXRoIC1FcnJvckFjdGlvbiBTdG9wCiAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRQYXRoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgIkF1dG9tYXRpb24gc2NyaXB0IGRvd25sb2FkIHJldHVybmVkIHdpdGhvdXQgY3JlYXRpbmcgJFBhdGgiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWRlZCBhdXRvbWF0aW9uIGFydGlmYWN0IHBhdGg9JFBhdGgiCiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KICAgICAgICBjYXRjaCB7CiAgICAgICAgICAgIGlmICgkYXR0ZW1wdCAtZ2UgMzApIHsKICAgICAgICAgICAgICAgIHRocm93ICJBdXRvbWF0aW9uIGFydGlmYWN0IGRvd25sb2FkIGZhaWxlZCBhZnRlciAkYXR0ZW1wdCBhdHRlbXB0cyBmb3IgJHtQYXRofTogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWQgd2FybmluZyBwYXRoPSR7UGF0aH0gYXR0ZW1wdD0kYXR0ZW1wdGA6ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIgogICAgICAgICAgICBTdGFydC1TbGVlcCAtU2Vjb25kcyAxMAogICAgICAgIH0KICAgIH0KfQoKRG93bmxvYWQtQXV0b21hdGlvblNjcmlwdCAtVXJpICdodHRwczovL29iamVjdHN0b3JhZ2UudXMtc2Fuam9zZS0xLm9yYWNsZWNsb3VkLmNvbS9wL1BMUFQtT09jYXpsYlJNMENCNnBKR3c0ZHMyMDVqQ1NWelpGTHhRRnYxOWVFQktRdkxINF9hdnp0dDFaa1ZJaVovbi9pZHp4dmt6MXpkdWcvYi9hb2FnLWF1dG9tYXRpb24tZTA2ZmQyYjhmYTJmL28vc2NyaXB0cy8wMi1jb25maWd1cmUtc3FsLW5vZGUucHMxJyAtUGF0aCAkU2NyaXB0UGF0aAomIGljYWNscy5leGUgJFNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKV3JpdGUtQm9vdHN0cmFwTG9nICJXcm90ZSAkU2NyaXB0UGF0aCIKCkRvd25sb2FkLUF1dG9tYXRpb25TY3JpcHQgLVVyaSAnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9iRFk4VVRyQ1FmVU15b0diaUdkVXhrMWtGV3plWFZKOTJXY2pjYXJYS05qNWQ0LTZ5aFpCOHdDRWh2VG5qWXlCL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDMtY29uZmlndXJlLXdzZmMucHMxJyAtUGF0aCAkV3NmY1NjcmlwdFBhdGgKJiBpY2FjbHMuZXhlICRXc2ZjU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIldyb3RlICRXc2ZjU2NyaXB0UGF0aCIKCmlmICgtbm90IFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJycpKSB7CiAgICBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IC1VcmkgJycgLVBhdGggJFNhbXBsZVNjcmlwdFBhdGgKICAgICYgaWNhY2xzLmV4ZSAkU2FtcGxlU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbAogICAgV3JpdGUtQm9vdHN0cmFwTG9nICJXcm90ZSAkU2FtcGxlU2NyaXB0UGF0aCIKfQoKaWYgKC1ub3QgW3N0cmluZ106OklzTnVsbE9yV2hpdGVTcGFjZSgnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9fVDJVRTVFVGxIeVd1ZUxkYW9PZElUZXpNRzF6dXpRdnMzYTJ2UzRna09YZzd3WThuV2lFOWFEVVpvd0owU2NwL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDUtY29uZmlndXJlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEnKSkgewogICAgRG93bmxvYWQtQXV0b21hdGlvblNjcmlwdCAtVXJpICdodHRwczovL29iamVjdHN0b3JhZ2UudXMtc2Fuam9zZS0xLm9yYWNsZWNsb3VkLmNvbS9wL19UMlVFNUVUbEh5V3VlTGRhb09kSVRlek1HMXp1elF2czNhMnZTNGdrT1hnN3dZOG5XaUU5YURVWm93SjBTY3Avbi9pZHp4dmt6MXpkdWcvYi9hb2FnLWF1dG9tYXRpb24tZTA2ZmQyYjhmYTJmL28vc2NyaXB0cy8wNS1jb25maWd1cmUtYXZhaWxhYmlsaXR5LWdyb3VwLnBzMScgLVBhdGggJEFnU2NyaXB0UGF0aAogICAgJiBpY2FjbHMuZXhlICRBZ1NjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJEFnU2NyaXB0UGF0aCIKfQoKaWYgKC1ub3QgW3N0cmluZ106OklzTnVsbE9yV2hpdGVTcGFjZSgnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9Cemp4WUNaX183SEtkbFB4WWMyTEdYV1NBcjFwSmRGc095TDM5aUcxN1UxNlZMZ3RpMjM2NUQ0bnQyd3VaOXRaL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDYtc2FmZS1wbGFubmVkLWZhaWxvdmVyLnBzMScpKSB7CiAgICBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IC1VcmkgJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvQnpqeFlDWl9fN0hLZGxQeFljMkxHWFdTQXIxcEpkRnNPeUwzOWlHMTdVMTZWTGd0aTIzNjVENG50Mnd1Wjl0Wi9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA2LXNhZmUtcGxhbm5lZC1mYWlsb3Zlci5wczEnIC1QYXRoICRTYWZlRmFpbG92ZXJTY3JpcHRQYXRoCiAgICAmIGljYWNscy5leGUgJFNhZmVGYWlsb3ZlclNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJFNhZmVGYWlsb3ZlclNjcmlwdFBhdGgiCn0KCmlmICgtbm90IFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvMERvUFI4NjBLdjRkQl8ya2d1LXpVRTJEWkdfcnFKaWpmY1BXME9mTDFFTXVVQzlnNXVhcVRING9MMFVQYjlKci9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA3LXJlY29uY2lsZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxJykpIHsKICAgIERvd25sb2FkLUF1dG9tYXRpb25TY3JpcHQgLVVyaSAnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC8wRG9QUjg2MEt2NGRCXzJrZ3UtelVFMkRaR19ycUppamZjUFcwT2ZMMUVNdVVDOWc1dWFxVEg0b0wwVVBiOUpyL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDctcmVjb25jaWxlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEnIC1QYXRoICRSZWNvbmNpbGVTY3JpcHRQYXRoCiAgICAmIGljYWNscy5leGUgJFJlY29uY2lsZVNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJFJlY29uY2lsZVNjcmlwdFBhdGgiCn0KCiRMYXVuY2hlckJvZHkgPSBAJwokRXJyb3JBY3Rpb25QcmVmZXJlbmNlID0gIlN0b3AiCiRTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxXaW5kb3dzIgokU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgIjAyLWNvbmZpZ3VyZS1zcWwtbm9kZS5wczEiCiRXc2ZjU2V0dXBEaXIgPSAiQzpcQU9BR0F1dG9tYXRpb25cV1NGQyIKJFNhbXBsZVNjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDQtcHJlcGFyZS1zYW1wbGUtZGF0YWJhc2UucHMxIgokQWdTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA1LWNvbmZpZ3VyZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxIgokUmVjb25jaWxlU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkV3NmY1NldHVwRGlyICIwNy1yZWNvbmNpbGUtYXZhaWxhYmlsaXR5LWdyb3VwLnBzMSIKJExhdW5jaGVyTG9nUGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgImxhdW5jaGVyLmxvZyIKJENvbnNvbGVMb2dQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAid2luZG93cy1ib290c3RyYXAtY29uc29sZS5sb2ciCiRJbml0aWFsVGFza05hbWUgPSAiQU9BRy1Db25maWd1cmUtV2luZG93c05vZGUtSW5pdGlhbCIKZnVuY3Rpb24gV3JpdGUtTGF1bmNoZXJMb2cgewogICAgcGFyYW0oW3N0cmluZ10kTWVzc2FnZSkKICAgIEFkZC1Db250ZW50IC1QYXRoICRMYXVuY2hlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQp0cnkgewogICAgV3JpdGUtTGF1bmNoZXJMb2cgIlN0YXJ0aW5nIFNRTCBub2RlIGNvbmZpZ3VyYXRpb24gbGF1bmNoZXIgZm9yIFNRTDIiCiAgICAkc2NyaXB0QXJncyA9IEAoCiAgICAgICAgIi1Ob1Byb2ZpbGUiLAogICAgICAgICItRXhlY3V0aW9uUG9saWN5IiwgIkJ5cGFzcyIsCiAgICAgICAgIi1GaWxlIiwgJFNjcmlwdFBhdGgsCiAgICAgICAgIi1Eb21haW5OYW1lIiwgJ21zc3FsYW9hZy5kZW1vJywKICAgICAgICAiLURvbWFpbk5ldGJpb3NOYW1lIiwgJ01TU1FMQU9BRycsCiAgICAgICAgIi1Eb21haW5BZG1pblVzZXIiLCAnZG9tYWluYWRtaW4nLAogICAgICAgICItRG9tYWluQWRtaW5QYXNzd29yZCIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItU3FsU2VydmljZUFjY291bnRVc2VyIiwgJ3NxbHNhJywKICAgICAgICAiLVNxbFNlcnZpY2VBY2NvdW50UGFzc3dvcmQiLCAnUEBzc3cwcmRAMTIzJywKICAgICAgICAiLUF1dG9JbnN0YWxsU3FsU2VydmVyIiwgJ3RydWUnLAogICAgICAgICItSW5zdGFsbFNzbXMiLCAndHJ1ZScsCiAgICAgICAgIi1TcWxTZXJ2ZXJEb3dubG9hZFVybCIsICdodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjM0NDYyNicsCiAgICAgICAgIi1Tc21zRG93bmxvYWRVcmwiLCAnaHR0cHM6Ly9ha2EubXMvc3Ntcy8yMi9yZWxlYXNlL3ZzX1NTTVMuZXhlJywKICAgICAgICAiLUF1dG9Db25maWd1cmVXc2ZjIiwgJ3RydWUnLAogICAgICAgICItV3NmY0NsdXN0ZXJOYW1lIiwgJ1NRTEFHQ0xVU1RFUicsCiAgICAgICAgIi1Xc2ZjUHJpbWFyeU5vZGUiLCAnU1FMMScsCiAgICAgICAgIi1Xc2ZjQ2x1c3Rlck5vZGVzIiwgJ1NRTDEsU1FMMicsCiAgICAgICAgIi1Xc2ZjQ2x1c3RlclN0YXRpY0FkZHJlc3NlcyIsICcxMC4wLjIwLjIwLDEwLjAuMzAuMjAnLAogICAgICAgICItV3NmY1dpdG5lc3NTaGFyZSIsICdcXERDLVZNLm1zc3FsYW9hZy5kZW1vXENsdXN0ZXJXaXRuZXNzJywKICAgICAgICAiLVNraXBDbHVzdGVyVmFsaWRhdGlvbiIsICd0cnVlJywKICAgICAgICAiLUFvYWdEYXRhYmFzZU5hbWUiLCAnQWR2ZW50dXJlV29ya3MyMDI1JywKICAgICAgICAiLUFvYWdBdmFpbGFiaWxpdHlHcm91cE5hbWUiLCAnVGVzdEFPQUcnLAogICAgICAgICItQW9hZ0xpc3RlbmVyTmFtZSIsICdBT0FHLUxTTicsCiAgICAgICAgIi1Bb2FnTGlzdGVuZXJQb3J0IiwgJzE0MzMnLAogICAgICAgICItQW9hZ0xpc3RlbmVySXBzIiwgJzEwLjAuMjAuMzAsMTAuMC4zMC4zMCcsCiAgICAgICAgIi1IYWRyRW5kcG9pbnROYW1lIiwgJ0hhZHJfZW5kcG9pbnQnLAogICAgICAgICItSGFkckVuZHBvaW50UG9ydCIsICc1MDIyJywKICAgICAgICAiLVNhbXBsZURhdGFiYXNlRG93bmxvYWRVcmwiLCAnaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9zcWwtc2VydmVyLXNhbXBsZXMvcmVsZWFzZXMvZG93bmxvYWQvYWR2ZW50dXJld29ya3MvQWR2ZW50dXJlV29ya3MyMDI1LmJhaycsCiAgICAgICAgIi1TYW1wbGVTY3JpcHRQYXRoIiwgJFNhbXBsZVNjcmlwdFBhdGgsCiAgICAgICAgIi1BZ1NjcmlwdFBhdGgiLCAkQWdTY3JpcHRQYXRoLAogICAgICAgICItTG9jYWxBZG1pblVzZXIiLCAnb3BjJywKICAgICAgICAiLUxvY2FsQWRtaW5QYXNzd29yZCIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItVGFyZ2V0Q29tcHV0ZXJOYW1lIiwgJ1NRTDInLAogICAgICAgICItRGNIb3N0TmFtZSIsICJEQy1WTSIsCiAgICAgICAgIi1EY1ByaXZhdGVJcCIsICcxMC4wLjEwLjEwJywKICAgICAgICAiLVNxbERhdGFEcml2ZUxldHRlciIsICdGJywKICAgICAgICAiLVJlY29uY2lsZVNjcmlwdFBhdGgiLCAkUmVjb25jaWxlU2NyaXB0UGF0aAogICAgKQoKICAgICYgIiRlbnY6U3lzdGVtUm9vdFxTeXN0ZW0zMlxXaW5kb3dzUG93ZXJTaGVsbFx2MS4wXHBvd2Vyc2hlbGwuZXhlIiBAc2NyaXB0QXJncyAqPiAkQ29uc29sZUxvZ1BhdGgKICAgICRleGl0Q29kZSA9ICRMQVNURVhJVENPREUKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJTUUwgbm9kZSBjb25maWd1cmF0aW9uIHNjcmlwdCBleGl0IGNvZGU6ICRleGl0Q29kZSIKICAgIGlmICgkZXhpdENvZGUgLW5lIDApIHsKICAgICAgICB0aHJvdyAiU1FMIG5vZGUgYm9vdHN0cmFwIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAkZXhpdENvZGUuIFNlZSAkQ29uc29sZUxvZ1BhdGguIgogICAgfQp9CmNhdGNoIHsKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJFUlJPUjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICB0aHJvdwp9CmZpbmFsbHkgewogICAgVW5yZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1Db25maXJtOiRmYWxzZSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQogICAgV3JpdGUtTGF1bmNoZXJMb2cgIlJlbW92ZWQgaW5pdGlhbCBsYXVuY2hlciB0YXNrIGlmIGl0IHN0aWxsIGV4aXN0ZWQiCn0KJ0AKClNldC1Db250ZW50IC1QYXRoICRMYXVuY2hlclBhdGggLVZhbHVlICRMYXVuY2hlckJvZHkgLUVuY29kaW5nIFVURjggLUZvcmNlCiYgaWNhY2xzLmV4ZSAkTGF1bmNoZXJQYXRoIC9pbmhlcml0YW5jZTpyIC9ncmFudDpyICJTWVNURU06KEYpIiAiQWRtaW5pc3RyYXRvcnM6KEYpIiB8IE91dC1OdWxsCldyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJExhdW5jaGVyUGF0aCIKCiRhY3Rpb24gPSBOZXctU2NoZWR1bGVkVGFza0FjdGlvbiAtRXhlY3V0ZSAiUG93ZXJTaGVsbC5leGUiIC1Bcmd1bWVudCAiLU5vUHJvZmlsZSAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtRmlsZSBgIiRMYXVuY2hlclBhdGhgIiIKJHRyaWdnZXIgPSBOZXctU2NoZWR1bGVkVGFza1RyaWdnZXIgLU9uY2UgLUF0IChHZXQtRGF0ZSkuQWRkTWludXRlcygxKQpSZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1BY3Rpb24gJGFjdGlvbiAtVHJpZ2dlciAkdHJpZ2dlciAtVXNlciAiU1lTVEVNIiAtUnVuTGV2ZWwgSGlnaGVzdCAtRm9yY2UgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIlJlZ2lzdGVyZWQgJEluaXRpYWxUYXNrTmFtZSBhcyBTWVNURU0iCgpTdGFydC1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRlZCAkSW5pdGlhbFRhc2tOYW1lIgo=" + }, + "platform_config": [], + "preemptible_instance_config": [], + "preserve_boot_volume": null, + "preserve_data_volumes_created_at_launch": null, + "private_ip": "10.0.30.10", + "public_ip": "170.9.30.132", + "region": "us-sanjose-1", + "security_attributes": {}, + "security_attributes_state": "STABLE", + "shape": "VM.Standard.E5.Flex", + "shape_config": [ + { + "baseline_ocpu_utilization": "", + "gpu_description": "", + "gpus": 0, + "local_disk_description": "", + "local_disks": 0, + "local_disks_total_size_in_gbs": 0, + "max_vnic_attachments": 8, + "memory_in_gbs": 32, + "networking_bandwidth_in_gbps": 8, + "nvmes": 0, + "ocpus": 8, + "processor_description": "2.3 GHz AMD EPYCâ„¢ 9J14 (Genoa)", + "vcpus": 16 + } + ], + "source_details": [ + { + "boot_volume_size_in_gbs": "100", + "boot_volume_vpus_per_gb": "10", + "instance_source_image_filter_details": [], + "is_preserve_boot_volume_enabled": false, + "kms_key_id": "", + "source_id": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", + "source_type": "image" + } + ], + "state": "RUNNING", + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", + "system_tags": {}, + "time_created": "2026-08-10 12:05:24.399 +0000 UTC", + "time_maintenance_reboot_due": "", + "timeouts": null, + "update_operation_constraint": null + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "metadata" + }, + { + "type": "index", + "value": { + "value": "user_data", + "type": "string" + } + } + ] + ], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNzAwMDAwMDAwMDAwLCJkZWxldGUiOjQ1MDAwMDAwMDAwMDAsInVwZGF0ZSI6MjcwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql2", + "oci_core_subnet.dc", + "oci_core_subnet.sql2", + "oci_core_vcn.sql", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_internet_gateway", + "name": "sql", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:06.246Z" + }, + "display_name": "Internet gateway-SQL_VCN", + "enabled": true, + "freeform_tags": { + "Project": "sqlagtest" + }, + "id": "ocid1.internetgateway.oc1.us-sanjose-1.aaaaaaaahuyvk6dw4fmunjpobspq6pv2zsnlmgaal5pr2jwo4il5lh6nfptq", + "route_table_id": null, + "state": "AVAILABLE", + "time_created": "2026-08-10 12:01:06.275 +0000 UTC", + "timeouts": null, + "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "oci_core_vcn.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_private_ip", + "name": "sql1_agdemodb1", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:08:24.865Z" + }, + "display_name": "sqlag-agdemodb1-sql1", + "freeform_tags": {}, + "hostname_label": null, + "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaaswefkiptkgnir2vhvdkyoxbnkcny62kj7mmrwrib3lqvimuxrfvq", + "ip_address": "10.0.20.30", + "ip_state": "ASSIGNED", + "is_primary": false, + "is_reserved": null, + "lifetime": "EPHEMERAL", + "route_table_id": null, + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", + "time_created": "2026-08-10 12:08:24.895 +0000 UTC", + "timeouts": null, + "vlan_id": null, + "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrvnj42teyjohtlqmhskrstpe46xeei5dbopezladpc7cqc7hgbzsq" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_core_vnic_attachments.sql1", + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_instance.sql1", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql1", + "oci_core_subnet.dc", + "oci_core_subnet.sql1", + "oci_core_vcn.sql", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_private_ip", + "name": "sql1_agdemodb2", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:08:24.516Z" + }, + "display_name": "sqlag-agdemodb2-sql1", + "freeform_tags": {}, + "hostname_label": null, + "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaajb5lvdo3fz7c6umq5kdhka37b5juqldegcwtczdfqi2d7snuxdca", + "ip_address": "10.0.20.31", + "ip_state": "ASSIGNED", + "is_primary": false, + "is_reserved": null, + "lifetime": "EPHEMERAL", + "route_table_id": null, + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", + "time_created": "2026-08-10 12:08:24.531 +0000 UTC", + "timeouts": null, + "vlan_id": null, + "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrvnj42teyjohtlqmhskrstpe46xeei5dbopezladpc7cqc7hgbzsq" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_core_vnic_attachments.sql1", + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_instance.sql1", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql1", + "oci_core_subnet.dc", + "oci_core_subnet.sql1", + "oci_core_vcn.sql", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_private_ip", + "name": "sql1_wsfc", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:08:24.525Z" + }, + "display_name": "sqlag-wsfc-sql1", + "freeform_tags": {}, + "hostname_label": null, + "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaa4v3v6i44tw3qywzwdrnxndcfdud5h47xvsebopa2am2ptovmzsaq", + "ip_address": "10.0.20.20", + "ip_state": "ASSIGNED", + "is_primary": false, + "is_reserved": null, + "lifetime": "EPHEMERAL", + "route_table_id": null, + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", + "time_created": "2026-08-10 12:08:24.535 +0000 UTC", + "timeouts": null, + "vlan_id": null, + "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrvnj42teyjohtlqmhskrstpe46xeei5dbopezladpc7cqc7hgbzsq" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_core_vnic_attachments.sql1", + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_instance.sql1", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql1", + "oci_core_subnet.dc", + "oci_core_subnet.sql1", + "oci_core_vcn.sql", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_private_ip", + "name": "sql2_agdemodb1", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:08:23.050Z" + }, + "display_name": "sqlag-agdemodb1-sql2", + "freeform_tags": {}, + "hostname_label": null, + "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaarkpwbc5mczzf652fopgdpucxnoo4u2tqu2xojlllrb7a374ngc3a", + "ip_address": "10.0.30.30", + "ip_state": "ASSIGNED", + "is_primary": false, + "is_reserved": null, + "lifetime": "EPHEMERAL", + "route_table_id": null, + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", + "time_created": "2026-08-10 12:08:23.074 +0000 UTC", + "timeouts": null, + "vlan_id": null, + "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrw2cjpuldcrm6uo3nluplqn3xhuk7b2nrbr7nzgwoupggar7oeiiq" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_core_vnic_attachments.sql2", + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_instance.sql2", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql2", + "oci_core_subnet.dc", + "oci_core_subnet.sql2", + "oci_core_vcn.sql", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_private_ip", + "name": "sql2_agdemodb2", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:08:23.517Z" + }, + "display_name": "sqlag-agdemodb2-sql2", + "freeform_tags": {}, + "hostname_label": null, + "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaahsoi2bbv4carra37rmxpz6s74kwuw4nvr5i52d5slaulk5on3o6q", + "ip_address": "10.0.30.31", + "ip_state": "ASSIGNED", + "is_primary": false, + "is_reserved": null, + "lifetime": "EPHEMERAL", + "route_table_id": null, + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", + "time_created": "2026-08-10 12:08:23.536 +0000 UTC", + "timeouts": null, + "vlan_id": null, + "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrw2cjpuldcrm6uo3nluplqn3xhuk7b2nrbr7nzgwoupggar7oeiiq" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_core_vnic_attachments.sql2", + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_instance.sql2", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql2", + "oci_core_subnet.dc", + "oci_core_subnet.sql2", + "oci_core_vcn.sql", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_private_ip", + "name": "sql2_wsfc", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:08:22.722Z" + }, + "display_name": "sqlag-wsfc-sql2", + "freeform_tags": {}, + "hostname_label": null, + "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaacgoj3q5vpdnr7zb7u6nggy2n22bu3n6fbsrfhoc2rszxcvubfbpa", + "ip_address": "10.0.30.20", + "ip_state": "ASSIGNED", + "is_primary": false, + "is_reserved": null, + "lifetime": "EPHEMERAL", + "route_table_id": null, + "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", + "time_created": "2026-08-10 12:08:22.754 +0000 UTC", + "timeouts": null, + "vlan_id": null, + "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrw2cjpuldcrm6uo3nluplqn3xhuk7b2nrbr7nzgwoupggar7oeiiq" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_core_vnic_attachments.sql2", + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_instance.sql2", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql2", + "oci_core_subnet.dc", + "oci_core_subnet.sql2", + "oci_core_vcn.sql", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_route_table", + "name": "public", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:07.614Z" + }, + "display_name": "public route table-SQL_VCN", + "freeform_tags": { + "Project": "sqlagtest" + }, + "id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaauh2ivarmf7gwb26megvsxiiwzdimffdxdjsuhu7z7qwzaonjbnya", + "route_rules": [ + { + "cidr_block": "", + "description": "", + "destination": "0.0.0.0/0", + "destination_type": "CIDR_BLOCK", + "network_entity_id": "ocid1.internetgateway.oc1.us-sanjose-1.aaaaaaaahuyvk6dw4fmunjpobspq6pv2zsnlmgaal5pr2jwo4il5lh6nfptq", + "route_type": "" + } + ], + "state": "AVAILABLE", + "time_created": "2026-08-10 12:01:07.637 +0000 UTC", + "timeouts": null, + "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "oci_core_internet_gateway.sql", + "oci_core_vcn.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_security_list", + "name": "dc", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:06.400Z" + }, + "display_name": "DC_SC_List", + "egress_security_rules": [ + { + "description": "", + "destination": "0.0.0.0/0", + "destination_type": "CIDR_BLOCK", + "icmp_options": [], + "protocol": "all", + "stateless": false, + "tcp_options": [], + "udp_options": [] + } + ], + "freeform_tags": { + "Project": "sqlagtest" + }, + "id": "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaanwz6l3qgmlu5yct3piyqcdflvdzk37pie3glug3goe5ebmeddtrq", + "ingress_security_rules": [ + { + "description": "DNS TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 53, + "min": 53, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "DNS UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 53, + "min": 53, + "source_port_range": [] + } + ] + }, + { + "description": "Global Catalog SSL TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 3269, + "min": 3269, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Global Catalog TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 3268, + "min": 3268, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "ICMP from lab CIDR", + "icmp_options": [], + "protocol": "1", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [] + }, + { + "description": "Kerberos TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 88, + "min": 88, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Kerberos UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 88, + "min": 88, + "source_port_range": [] + } + ] + }, + { + "description": "Kerberos password change TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 464, + "min": 464, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Kerberos password change UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 464, + "min": 464, + "source_port_range": [] + } + ] + }, + { + "description": "LDAP TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 389, + "min": 389, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "LDAP UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 389, + "min": 389, + "source_port_range": [] + } + ] + }, + { + "description": "LDAPS TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 636, + "min": 636, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "NetBIOS datagram UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 138, + "min": 138, + "source_port_range": [] + } + ] + }, + { + "description": "NetBIOS name UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 137, + "min": 137, + "source_port_range": [] + } + ] + }, + { + "description": "NetBIOS session TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 139, + "min": 139, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "RDP from client public IPv4", + "icmp_options": [], + "protocol": "6", + "source": "0.0.0.0/0", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 3389, + "min": 3389, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "RPC endpoint mapper TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 135, + "min": 135, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "SMB TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 445, + "min": 445, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "WinRM HTTP TCP inside lab", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 5985, + "min": 5985, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "WinRM HTTPS TCP inside lab", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 5986, + "min": 5986, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Windows Time UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 123, + "min": 123, + "source_port_range": [] + } + ] + }, + { + "description": "Windows dynamic RPC TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 65535, + "min": 49152, + "source_port_range": [] + } + ], + "udp_options": [] + } + ], + "state": "AVAILABLE", + "time_created": "2026-08-10 12:01:06.431 +0000 UTC", + "timeouts": null, + "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "oci_core_vcn.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_security_list", + "name": "sql1", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:06.400Z" + }, + "display_name": "SQL1_SC_List", + "egress_security_rules": [ + { + "description": "", + "destination": "0.0.0.0/0", + "destination_type": "CIDR_BLOCK", + "icmp_options": [], + "protocol": "all", + "stateless": false, + "tcp_options": [], + "udp_options": [] + } + ], + "freeform_tags": { + "Project": "sqlagtest" + }, + "id": "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaafz3uxnlaz4tczk5mxvvzpmk7u5puh5wlrasz5l2aurx5qa6xv7ea", + "ingress_security_rules": [ + { + "description": "DNS TCP responses and domain operations", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 53, + "min": 53, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "DNS UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 53, + "min": 53, + "source_port_range": [] + } + ] + }, + { + "description": "ICMP from lab CIDR", + "icmp_options": [], + "protocol": "1", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [] + }, + { + "description": "Kerberos TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 88, + "min": 88, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Kerberos UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 88, + "min": 88, + "source_port_range": [] + } + ] + }, + { + "description": "Kerberos password change TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 464, + "min": 464, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Kerberos password change UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 464, + "min": 464, + "source_port_range": [] + } + ] + }, + { + "description": "LDAP TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 389, + "min": 389, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "LDAP UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 389, + "min": 389, + "source_port_range": [] + } + ] + }, + { + "description": "NetBIOS datagram UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 138, + "min": 138, + "source_port_range": [] + } + ] + }, + { + "description": "NetBIOS name UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 137, + "min": 137, + "source_port_range": [] + } + ] + }, + { + "description": "NetBIOS session TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 139, + "min": 139, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "RDP from configured source", + "icmp_options": [], + "protocol": "6", + "source": "0.0.0.0/0", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 3389, + "min": 3389, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "RPC endpoint mapper TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 135, + "min": 135, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "SMB TCP for admin and file witness", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 445, + "min": 445, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "SQL Always On HADR endpoint TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 5022, + "min": 5022, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "SQL Browser UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 1434, + "min": 1434, + "source_port_range": [] + } + ] + }, + { + "description": "SQL Server and AG listener TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 1433, + "min": 1433, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "WSFC cluster service TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 3343, + "min": 3343, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "WSFC cluster service UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 3343, + "min": 3343, + "source_port_range": [] + } + ] + }, + { + "description": "WinRM HTTP TCP inside lab", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 5985, + "min": 5985, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "WinRM HTTPS TCP inside lab", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 5986, + "min": 5986, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Windows Time UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 123, + "min": 123, + "source_port_range": [] + } + ] + }, + { + "description": "Windows dynamic RPC TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 65535, + "min": 49152, + "source_port_range": [] + } + ], + "udp_options": [] + } + ], + "state": "AVAILABLE", + "time_created": "2026-08-10 12:01:06.845 +0000 UTC", + "timeouts": null, + "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "oci_core_vcn.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_security_list", + "name": "sql2", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:06.494Z" + }, + "display_name": "SQL2_SC_List", + "egress_security_rules": [ + { + "description": "", + "destination": "0.0.0.0/0", + "destination_type": "CIDR_BLOCK", + "icmp_options": [], + "protocol": "all", + "stateless": false, + "tcp_options": [], + "udp_options": [] + } + ], + "freeform_tags": { + "Project": "sqlagtest" + }, + "id": "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaamy3wvz7nujwpwegruq7i3k6f7k6rwzmgdv5iw2tupvbgnteurbja", + "ingress_security_rules": [ + { + "description": "DNS TCP responses and domain operations", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 53, + "min": 53, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "DNS UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 53, + "min": 53, + "source_port_range": [] + } + ] + }, + { + "description": "ICMP from lab CIDR", + "icmp_options": [], + "protocol": "1", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [] + }, + { + "description": "Kerberos TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 88, + "min": 88, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Kerberos UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 88, + "min": 88, + "source_port_range": [] + } + ] + }, + { + "description": "Kerberos password change TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 464, + "min": 464, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Kerberos password change UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 464, + "min": 464, + "source_port_range": [] + } + ] + }, + { + "description": "LDAP TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 389, + "min": 389, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "LDAP UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 389, + "min": 389, + "source_port_range": [] + } + ] + }, + { + "description": "NetBIOS datagram UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 138, + "min": 138, + "source_port_range": [] + } + ] + }, + { + "description": "NetBIOS name UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 137, + "min": 137, + "source_port_range": [] + } + ] + }, + { + "description": "NetBIOS session TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 139, + "min": 139, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "RDP from configured source", + "icmp_options": [], + "protocol": "6", + "source": "0.0.0.0/0", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 3389, + "min": 3389, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "RPC endpoint mapper TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 135, + "min": 135, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "SMB TCP for admin and file witness", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 445, + "min": 445, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "SQL Always On HADR endpoint TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 5022, + "min": 5022, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "SQL Browser UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 1434, + "min": 1434, + "source_port_range": [] + } + ] + }, + { + "description": "SQL Server and AG listener TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 1433, + "min": 1433, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "WSFC cluster service TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 3343, + "min": 3343, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "WSFC cluster service UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 3343, + "min": 3343, + "source_port_range": [] + } + ] + }, + { + "description": "WinRM HTTP TCP inside lab", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 5985, + "min": 5985, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "WinRM HTTPS TCP inside lab", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 5986, + "min": 5986, + "source_port_range": [] + } + ], + "udp_options": [] + }, + { + "description": "Windows Time UDP", + "icmp_options": [], + "protocol": "17", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [], + "udp_options": [ + { + "max": 123, + "min": 123, + "source_port_range": [] + } + ] + }, + { + "description": "Windows dynamic RPC TCP", + "icmp_options": [], + "protocol": "6", + "source": "10.0.0.0/16", + "source_type": "CIDR_BLOCK", + "stateless": false, + "tcp_options": [ + { + "max": 65535, + "min": 49152, + "source_port_range": [] + } + ], + "udp_options": [] + } + ], + "state": "AVAILABLE", + "time_created": "2026-08-10 12:01:06.516 +0000 UTC", + "timeouts": null, + "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "oci_core_vcn.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_subnet", + "name": "dc", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "cidr_block": "10.0.10.0/24", + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:08.535Z" + }, + "dhcp_options_id": "ocid1.dhcpoptions.oc1.us-sanjose-1.aaaaaaaavat3k3r4zukatfnknauauvcimzqb4ipwtzb4yknp57lfxzba5i4q", + "display_name": "sqlagtest-dc-public-subnet", + "dns_label": "dcsubnet", + "freeform_tags": { + "Project": "sqlagtest" + }, + "id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaqyaalgafielqf5cpgvvtkbq4qmb3xtix4n6m26ojww3nwuuu5axq", + "ipv6cidr_block": null, + "ipv6cidr_blocks": [], + "ipv6virtual_router_ip": null, + "prohibit_internet_ingress": false, + "prohibit_public_ip_on_vnic": false, + "route_table_id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaauh2ivarmf7gwb26megvsxiiwzdimffdxdjsuhu7z7qwzaonjbnya", + "security_list_ids": [ + "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaanwz6l3qgmlu5yct3piyqcdflvdzk37pie3glug3goe5ebmeddtrq" + ], + "state": "AVAILABLE", + "subnet_domain_name": "dcsubnet.sqlvcn.oraclevcn.com", + "time_created": "2026-08-10 12:01:08.569 +0000 UTC", + "timeouts": null, + "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", + "virtual_router_ip": "10.0.10.1", + "virtual_router_mac": "00:00:17:D8:7D:07" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_vcn.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_subnet", + "name": "sql1", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "cidr_block": "10.0.20.0/24", + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:08.646Z" + }, + "dhcp_options_id": "ocid1.dhcpoptions.oc1.us-sanjose-1.aaaaaaaavat3k3r4zukatfnknauauvcimzqb4ipwtzb4yknp57lfxzba5i4q", + "display_name": "sqlagtest-sql1-public-subnet", + "dns_label": "sql1subnet", + "freeform_tags": { + "Project": "sqlagtest" + }, + "id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", + "ipv6cidr_block": null, + "ipv6cidr_blocks": [], + "ipv6virtual_router_ip": null, + "prohibit_internet_ingress": false, + "prohibit_public_ip_on_vnic": false, + "route_table_id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaauh2ivarmf7gwb26megvsxiiwzdimffdxdjsuhu7z7qwzaonjbnya", + "security_list_ids": [ + "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaafz3uxnlaz4tczk5mxvvzpmk7u5puh5wlrasz5l2aurx5qa6xv7ea" + ], + "state": "AVAILABLE", + "subnet_domain_name": "sql1subnet.sqlvcn.oraclevcn.com", + "time_created": "2026-08-10 12:01:09.239 +0000 UTC", + "timeouts": null, + "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", + "virtual_router_ip": "10.0.20.1", + "virtual_router_mac": "00:00:17:D8:7D:07" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.sql1", + "oci_core_vcn.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_subnet", + "name": "sql2", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "availability_domain": null, + "cidr_block": "10.0.30.0/24", + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:08.542Z" + }, + "dhcp_options_id": "ocid1.dhcpoptions.oc1.us-sanjose-1.aaaaaaaavat3k3r4zukatfnknauauvcimzqb4ipwtzb4yknp57lfxzba5i4q", + "display_name": "sqlagtest-sql2-public-subnet", + "dns_label": "sql2subnet", + "freeform_tags": { + "Project": "sqlagtest" + }, + "id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", + "ipv6cidr_block": null, + "ipv6cidr_blocks": [], + "ipv6virtual_router_ip": null, + "prohibit_internet_ingress": false, + "prohibit_public_ip_on_vnic": false, + "route_table_id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaauh2ivarmf7gwb26megvsxiiwzdimffdxdjsuhu7z7qwzaonjbnya", + "security_list_ids": [ + "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaamy3wvz7nujwpwegruq7i3k6f7k6rwzmgdv5iw2tupvbgnteurbja" + ], + "state": "AVAILABLE", + "subnet_domain_name": "sql2subnet.sqlvcn.oraclevcn.com", + "time_created": "2026-08-10 12:01:08.827 +0000 UTC", + "timeouts": null, + "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", + "virtual_router_ip": "10.0.30.1", + "virtual_router_mac": "00:00:17:D8:7D:07" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.sql2", + "oci_core_vcn.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_vcn", + "name": "sql", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "byoipv6cidr_blocks": [], + "byoipv6cidr_details": null, + "cidr_block": "10.0.0.0/16", + "cidr_blocks": [ + "10.0.0.0/16" + ], + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "default_dhcp_options_id": "ocid1.dhcpoptions.oc1.us-sanjose-1.aaaaaaaavat3k3r4zukatfnknauauvcimzqb4ipwtzb4yknp57lfxzba5i4q", + "default_route_table_id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaagzt6bmctup4lxewjfr6h4dwgvqb6mgnk6rddmyqn4jz2l426pn4q", + "default_security_list_id": "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaazpvn4um7lm7gsms4ysd3htb33yypsd7w5o7526f52sqa3jfw2uqa", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:05.178Z" + }, + "display_name": "SQL_VCN", + "dns_label": "sqlvcn", + "freeform_tags": { + "Project": "sqlagtest" + }, + "id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", + "ipv6cidr_blocks": [], + "ipv6private_cidr_blocks": [], + "is_ipv6enabled": false, + "is_oracle_gua_allocation_enabled": null, + "security_attributes": {}, + "state": "AVAILABLE", + "time_created": "2026-08-10 12:01:05.235 +0000 UTC", + "timeouts": null, + "vcn_domain_name": "sqlvcn.oraclevcn.com" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "oci_core_volume", + "name": "sql1_data", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "auto_tuned_vpus_per_gb": null, + "autotune_policies": [], + "availability_domain": "RAVo:US-SANJOSE-1-AD-1", + "backup_policy_id": null, + "block_volume_replicas": [], + "block_volume_replicas_deletion": null, + "cluster_placement_group_id": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:05.236Z" + }, + "display_name": "SQL1-data", + "freeform_tags": { + "Node": "SQL1", + "Project": "sqlagtest", + "Role": "sql-data" + }, + "id": "ocid1.volume.oc1.us-sanjose-1.abzwuljrq5jamfnsogm4vnml4vmjbsn4xbwwzfkaiohhyxqpjr44dok4pzaa", + "is_auto_tune_enabled": false, + "is_hydrated": true, + "is_reservations_enabled": false, + "kms_key_id": null, + "size_in_gbs": "100", + "size_in_mbs": "102400", + "source_details": [], + "state": "AVAILABLE", + "system_tags": {}, + "time_created": "2026-08-10 12:01:05.245 +0000 UTC", + "timeouts": null, + "volume_backup_id": null, + "volume_group_id": null, + "vpus_per_gb": "10", + "xrc_kms_key_id": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_identity_availability_domains.region" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_volume", + "name": "sql2_data", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "auto_tuned_vpus_per_gb": null, + "autotune_policies": [], + "availability_domain": "RAVo:US-SANJOSE-1-AD-1", + "backup_policy_id": null, + "block_volume_replicas": [], + "block_volume_replicas_deletion": null, + "cluster_placement_group_id": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:05.302Z" + }, + "display_name": "SQL2-data", + "freeform_tags": { + "Node": "SQL2", + "Project": "sqlagtest", + "Role": "sql-data" + }, + "id": "ocid1.volume.oc1.us-sanjose-1.abzwuljrjp4twnvphag4u33stfimirqhtt2onjxrk2tmgkiqxyj6lxaf7raq", + "is_auto_tune_enabled": false, + "is_hydrated": true, + "is_reservations_enabled": false, + "kms_key_id": null, + "size_in_gbs": "100", + "size_in_mbs": "102400", + "source_details": [], + "state": "AVAILABLE", + "system_tags": {}, + "time_created": "2026-08-10 12:01:05.31 +0000 UTC", + "timeouts": null, + "volume_backup_id": null, + "volume_group_id": null, + "vpus_per_gb": "10", + "xrc_kms_key_id": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_identity_availability_domains.region" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_volume_attachment", + "name": "sql1_data", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "attachment_type": "paravirtualized", + "availability_domain": "RAVo:US-SANJOSE-1-AD-1", + "chap_secret": null, + "chap_username": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "device": null, + "display_name": "SQL1-data-attachment", + "encryption_in_transit_type": null, + "id": "ocid1.volumeattachment.oc1.us-sanjose-1.anzwuljrfyadjyicm56zd3tj56qvja653qbntnqe6j46rctzmm4i2bliboqa", + "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicro5jzzgfjuljuqrgeudvsdt4husgjp4zcmpgn77vfepa", + "ipv4": null, + "iqn": null, + "is_agent_auto_iscsi_login_enabled": null, + "is_multipath": null, + "is_pv_encryption_in_transit_enabled": false, + "is_read_only": false, + "is_shareable": false, + "is_volume_created_during_launch": false, + "iscsi_login_state": "", + "multipath_devices": [], + "port": null, + "state": "ATTACHED", + "time_created": "2026-08-10 12:08:24.398 +0000 UTC", + "timeouts": null, + "use_chap": null, + "volume_id": "ocid1.volume.oc1.us-sanjose-1.abzwuljrq5jamfnsogm4vnml4vmjbsn4xbwwzfkaiohhyxqpjr44dok4pzaa" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_instance.sql1", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql1", + "oci_core_subnet.dc", + "oci_core_subnet.sql1", + "oci_core_vcn.sql", + "oci_core_volume.sql1_data", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_core_volume_attachment", + "name": "sql2_data", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "attachment_type": "paravirtualized", + "availability_domain": "RAVo:US-SANJOSE-1-AD-1", + "chap_secret": null, + "chap_username": null, + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "device": null, + "display_name": "SQL2-data-attachment", + "encryption_in_transit_type": null, + "id": "ocid1.volumeattachment.oc1.us-sanjose-1.anzwuljrfyadjyicm4uqlzsuqhhopnqeglelvpnsunv2gwdcdxyjujz62nra", + "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyic7cfzmkslnkhtpv34tzzquvaqlqpj2vpyw74sq5uo3wpa", + "ipv4": null, + "iqn": null, + "is_agent_auto_iscsi_login_enabled": null, + "is_multipath": null, + "is_pv_encryption_in_transit_enabled": false, + "is_read_only": false, + "is_shareable": false, + "is_volume_created_during_launch": false, + "iscsi_login_state": "", + "multipath_devices": [], + "port": null, + "state": "ATTACHED", + "time_created": "2026-08-10 12:08:22.606 +0000 UTC", + "timeouts": null, + "use_chap": null, + "volume_id": "ocid1.volume.oc1.us-sanjose-1.abzwuljrjp4twnvphag4u33stfimirqhtt2onjxrk2tmgkiqxyj6lxaf7raq" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_identity_availability_domains.region", + "data.oci_objectstorage_namespace.automation", + "oci_core_instance.dc", + "oci_core_instance.sql2", + "oci_core_internet_gateway.sql", + "oci_core_route_table.public", + "oci_core_security_list.dc", + "oci_core_security_list.sql2", + "oci_core_subnet.dc", + "oci_core_subnet.sql2", + "oci_core_vcn.sql", + "oci_core_volume.sql2_data", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag", + "oci_objectstorage_object.reconcile", + "oci_objectstorage_object.safe_failover", + "oci_objectstorage_object.sample", + "oci_objectstorage_object.sql", + "oci_objectstorage_object.wsfc", + "oci_objectstorage_preauthrequest.ag", + "oci_objectstorage_preauthrequest.reconcile", + "oci_objectstorage_preauthrequest.safe_failover", + "oci_objectstorage_preauthrequest.sample", + "oci_objectstorage_preauthrequest.sql", + "oci_objectstorage_preauthrequest.wsfc" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_bucket", + "name": "automation", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_type": "NoPublicAccess", + "approximate_count": "0", + "approximate_size": "0", + "auto_tiering": "Disabled", + "bucket_id": "ocid1.bucket.oc1.us-sanjose-1.aaaaaaaa5uad73xt5t4kupfdfa6hlqx3aqowkr22hwdv4xb532ioqb6symra", + "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", + "created_by": "ocid1.user.oc1..aaaaaaaa7injenbwphtghs5zpscdbe6xa5zww2rjnkpp2zebozdwpmwah4iq", + "defined_tags": { + "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", + "Oracle-Tags.CreatedOn": "2026-08-10T12:01:05.219Z" + }, + "etag": "9695d89e-00db-4772-b2b1-60466769b63d", + "freeform_tags": { + "Project": "sqlagtest", + "Purpose": "terraform-first-boot-automation" + }, + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f", + "is_read_only": false, + "kms_key_id": null, + "metadata": null, + "name": "aoag-automation-e06fd2b8fa2f", + "namespace": "idzxvkz1zdug", + "object_events_enabled": false, + "object_lifecycle_policy_etag": null, + "replication_enabled": false, + "retention_rules": [], + "storage_tier": "Standard", + "time_created": "2026-08-10 12:01:05.37 +0000 UTC", + "timeouts": null, + "versioning": "Disabled" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_object", + "name": "ag", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "aoag-automation-e06fd2b8fa2f", + "cache_control": null, + "content": null, + "content_disposition": null, + "content_encoding": null, + "content_language": null, + "content_length": "16566", + "content_md5": "D61XM0Gdlrq9Yi74Uq5NTQ==", + "content_type": "text/plain", + "delete_all_object_versions": false, + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F05-configure-availability-group.ps1", + "metadata": null, + "namespace": "idzxvkz1zdug", + "object": "scripts/05-configure-availability-group.ps1", + "opc_sse_kms_key_id": null, + "source": "./scripts/aoag/05-configure-availability-group.ps1 2026-08-06 20:11:56.880137919 +0530 IST", + "source_uri_details": [], + "state": "COMPLETED", + "storage_tier": "Standard", + "timeouts": null, + "version_id": "01fd08a7-3699-40af-90d4-973299dde915", + "work_request_id": "" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_object", + "name": "reconcile", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "aoag-automation-e06fd2b8fa2f", + "cache_control": null, + "content": null, + "content_disposition": null, + "content_encoding": null, + "content_language": null, + "content_length": "9133", + "content_md5": "3QaueBDo6VHjoQL2P5/Jew==", + "content_type": "text/plain", + "delete_all_object_versions": false, + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F07-reconcile-availability-group.ps1", + "metadata": null, + "namespace": "idzxvkz1zdug", + "object": "scripts/07-reconcile-availability-group.ps1", + "opc_sse_kms_key_id": null, + "source": "./scripts/aoag/07-reconcile-availability-group.ps1 2026-08-06 20:18:18.715343415 +0530 IST", + "source_uri_details": [], + "state": "COMPLETED", + "storage_tier": "Standard", + "timeouts": null, + "version_id": "fc9ac2cc-cdf6-4a34-a967-42049c69e5e6", + "work_request_id": "" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_object", + "name": "safe_failover", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "aoag-automation-e06fd2b8fa2f", + "cache_control": null, + "content": null, + "content_disposition": null, + "content_encoding": null, + "content_language": null, + "content_length": "7747", + "content_md5": "8mh5Y2Z2xV/ytikuZxW16Q==", + "content_type": "text/plain", + "delete_all_object_versions": false, + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F06-safe-planned-failover.ps1", + "metadata": null, + "namespace": "idzxvkz1zdug", + "object": "scripts/06-safe-planned-failover.ps1", + "opc_sse_kms_key_id": null, + "source": "./scripts/aoag/06-safe-planned-failover.ps1 2026-08-04 17:23:54.141008916 +0530 IST", + "source_uri_details": [], + "state": "COMPLETED", + "storage_tier": "Standard", + "timeouts": null, + "version_id": "19511b64-8b68-4704-837e-1386bca16b4a", + "work_request_id": "" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_object", + "name": "sample", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "aoag-automation-e06fd2b8fa2f", + "cache_control": null, + "content": null, + "content_disposition": null, + "content_encoding": null, + "content_language": null, + "content_length": "10928", + "content_md5": "+DpNCi5CdmNIGp3CGvTleg==", + "content_type": "text/plain", + "delete_all_object_versions": false, + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F04-prepare-sample-database.ps1", + "metadata": null, + "namespace": "idzxvkz1zdug", + "object": "scripts/04-prepare-sample-database.ps1", + "opc_sse_kms_key_id": null, + "source": "./scripts/aoag/04-prepare-sample-database.ps1 2026-08-04 17:18:26.231865983 +0530 IST", + "source_uri_details": [], + "state": "COMPLETED", + "storage_tier": "Standard", + "timeouts": null, + "version_id": "ebb7e1a0-eb4d-4d7b-82c0-4ea5ec018cba", + "work_request_id": "" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_object", + "name": "sql", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "aoag-automation-e06fd2b8fa2f", + "cache_control": null, + "content": null, + "content_disposition": null, + "content_encoding": null, + "content_language": null, + "content_length": "48770", + "content_md5": "4hnqDofX4SoKLYnv/ESRTw==", + "content_type": "text/plain", + "delete_all_object_versions": false, + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F02-configure-sql-node.ps1", + "metadata": null, + "namespace": "idzxvkz1zdug", + "object": "scripts/02-configure-sql-node.ps1", + "opc_sse_kms_key_id": null, + "source": "./scripts/sql/02-configure-sql-node.ps1 2026-08-10 16:40:15.521319154 +0530 IST", + "source_uri_details": [], + "state": "COMPLETED", + "storage_tier": "Standard", + "timeouts": null, + "version_id": "070d6bb4-1bdc-445e-aff7-507a1588b27a", + "work_request_id": "" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_object", + "name": "wsfc", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "bucket": "aoag-automation-e06fd2b8fa2f", + "cache_control": null, + "content": null, + "content_disposition": null, + "content_encoding": null, + "content_language": null, + "content_length": "29524", + "content_md5": "Fhp1QfvGOREryVGvXU8S6Q==", + "content_type": "text/plain", + "delete_all_object_versions": false, + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F03-configure-wsfc.ps1", + "metadata": null, + "namespace": "idzxvkz1zdug", + "object": "scripts/03-configure-wsfc.ps1", + "opc_sse_kms_key_id": null, + "source": "./scripts/wsfc/03-configure-wsfc.ps1 2026-08-04 17:22:26.129887953 +0530 IST", + "source_uri_details": [], + "state": "COMPLETED", + "storage_tier": "Standard", + "timeouts": null, + "version_id": "500fa058-3ef9-424b-a6a6-5c8137a518f9", + "work_request_id": "" + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_preauthrequest", + "name": "ag", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_type": "ObjectRead", + "access_uri": "/p/_T2UE5ETlHyWueLdaoOdITezMG1zuzQvs3a2vS4gkOXg7wY8nWiE9aDUZowJ0Scp/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/05-configure-availability-group.ps1", + "bucket": "aoag-automation-e06fd2b8fa2f", + "bucket_listing_action": "", + "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/_T2UE5ETlHyWueLdaoOdITezMG1zuzQvs3a2vS4gkOXg7wY8nWiE9aDUZowJ0Scp/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/05-configure-availability-group.ps1", + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/0BPxYPhbyGdZgwfF9KaPTo3aU1c2LyUifBWaQst%2FO2vPnllc2d084B0ZIplFY%2Faa:scripts%2F05-configure-availability-group.ps1", + "name": "availability-group-bootstrap", + "namespace": "idzxvkz1zdug", + "object": "scripts/05-configure-availability-group.ps1", + "object_name": "scripts/05-configure-availability-group.ps1", + "par_id": "0BPxYPhbyGdZgwfF9KaPTo3aU1c2LyUifBWaQst/O2vPnllc2d084B0ZIplFY/aa:scripts/05-configure-availability-group.ps1", + "time_created": "2026-08-10 12:01:07.892 +0000 UTC", + "time_expires": "2030-01-01T00:00:00Z", + "timeouts": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.ag" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_preauthrequest", + "name": "reconcile", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_type": "ObjectRead", + "access_uri": "/p/0DoPR860Kv4dB_2kgu-zUE2DZG_rqJijfcPW0OfL1EMuUC9g5uaqTH4oL0UPb9Jr/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/07-reconcile-availability-group.ps1", + "bucket": "aoag-automation-e06fd2b8fa2f", + "bucket_listing_action": "", + "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/0DoPR860Kv4dB_2kgu-zUE2DZG_rqJijfcPW0OfL1EMuUC9g5uaqTH4oL0UPb9Jr/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/07-reconcile-availability-group.ps1", + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/eA9oLBJO%2FEZioXe0BsMpvmEcIZQRdD47GHUAeIDZcBMsrdAbGoGRujenZor+Yv5P:scripts%2F07-reconcile-availability-group.ps1", + "name": "availability-group-reconciliation", + "namespace": "idzxvkz1zdug", + "object": "scripts/07-reconcile-availability-group.ps1", + "object_name": "scripts/07-reconcile-availability-group.ps1", + "par_id": "eA9oLBJO/EZioXe0BsMpvmEcIZQRdD47GHUAeIDZcBMsrdAbGoGRujenZor+Yv5P:scripts/07-reconcile-availability-group.ps1", + "time_created": "2026-08-10 12:01:08.455 +0000 UTC", + "time_expires": "2030-01-01T00:00:00Z", + "timeouts": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.reconcile" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_preauthrequest", + "name": "safe_failover", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_type": "ObjectRead", + "access_uri": "/p/BzjxYCZ__7HKdlPxYc2LGXWSAr1pJdFsOyL39iG17U16VLgti2365D4nt2wuZ9tZ/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/06-safe-planned-failover.ps1", + "bucket": "aoag-automation-e06fd2b8fa2f", + "bucket_listing_action": "", + "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/BzjxYCZ__7HKdlPxYc2LGXWSAr1pJdFsOyL39iG17U16VLgti2365D4nt2wuZ9tZ/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/06-safe-planned-failover.ps1", + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/Qq1fVlx4ovBhub4TeM2i4Xe8LznvqyczHOHnTf3Jaa0CPFC0I%2FGZEe7fUOLO3SMG:scripts%2F06-safe-planned-failover.ps1", + "name": "safe-planned-failover", + "namespace": "idzxvkz1zdug", + "object": "scripts/06-safe-planned-failover.ps1", + "object_name": "scripts/06-safe-planned-failover.ps1", + "par_id": "Qq1fVlx4ovBhub4TeM2i4Xe8LznvqyczHOHnTf3Jaa0CPFC0I/GZEe7fUOLO3SMG:scripts/06-safe-planned-failover.ps1", + "time_created": "2026-08-10 12:01:07.984 +0000 UTC", + "time_expires": "2030-01-01T00:00:00Z", + "timeouts": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.safe_failover" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_preauthrequest", + "name": "sample", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_type": "ObjectRead", + "access_uri": "/p/CsThXCTqy3PNazAGYi1X5DgYZQZkDWzcgX-wPxLkiEEfwHoFzpD7094DdY7TXEKh/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/04-prepare-sample-database.ps1", + "bucket": "aoag-automation-e06fd2b8fa2f", + "bucket_listing_action": "", + "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/CsThXCTqy3PNazAGYi1X5DgYZQZkDWzcgX-wPxLkiEEfwHoFzpD7094DdY7TXEKh/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/04-prepare-sample-database.ps1", + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/+t9S+24Tm8a1OXDW6lWs8A7y+qk0ctJErh7OXDmYq+9kph62%2FCl04xF9pjlSrlhq:scripts%2F04-prepare-sample-database.ps1", + "name": "sample-database-bootstrap", + "namespace": "idzxvkz1zdug", + "object": "scripts/04-prepare-sample-database.ps1", + "object_name": "scripts/04-prepare-sample-database.ps1", + "par_id": "+t9S+24Tm8a1OXDW6lWs8A7y+qk0ctJErh7OXDmYq+9kph62/Cl04xF9pjlSrlhq:scripts/04-prepare-sample-database.ps1", + "time_created": "2026-08-10 12:01:07.931 +0000 UTC", + "time_expires": "2030-01-01T00:00:00Z", + "timeouts": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.sample" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_preauthrequest", + "name": "sql", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_type": "ObjectRead", + "access_uri": "/p/PLPT-OOcazlbRM0CB6pJGw4ds205jCSVzZFLxQFv19eEBKQvLH4_avztt1ZkVIiZ/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/02-configure-sql-node.ps1", + "bucket": "aoag-automation-e06fd2b8fa2f", + "bucket_listing_action": "", + "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/PLPT-OOcazlbRM0CB6pJGw4ds205jCSVzZFLxQFv19eEBKQvLH4_avztt1ZkVIiZ/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/02-configure-sql-node.ps1", + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/DhElMkxBoWKd9Zx1aUQoolT+dwg1nHXqqkdBytAPdr5cTErSc9mHYPnXPRg84YlE:scripts%2F02-configure-sql-node.ps1", + "name": "sql-node-bootstrap", + "namespace": "idzxvkz1zdug", + "object": "scripts/02-configure-sql-node.ps1", + "object_name": "scripts/02-configure-sql-node.ps1", + "par_id": "DhElMkxBoWKd9Zx1aUQoolT+dwg1nHXqqkdBytAPdr5cTErSc9mHYPnXPRg84YlE:scripts/02-configure-sql-node.ps1", + "time_created": "2026-08-10 12:01:07.69 +0000 UTC", + "time_expires": "2030-01-01T00:00:00Z", + "timeouts": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.sql" + ] + } + ] + }, + { + "mode": "managed", + "type": "oci_objectstorage_preauthrequest", + "name": "wsfc", + "provider": "provider[\"registry.terraform.io/oracle/oci\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_type": "ObjectRead", + "access_uri": "/p/bDY8UTrCQfUMyoGbiGdUxk1kFWzeXVJ92WcjcarXKNj5d4-6yhZB8wCEhvTnjYyB/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/03-configure-wsfc.ps1", + "bucket": "aoag-automation-e06fd2b8fa2f", + "bucket_listing_action": "", + "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/bDY8UTrCQfUMyoGbiGdUxk1kFWzeXVJ92WcjcarXKNj5d4-6yhZB8wCEhvTnjYyB/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/03-configure-wsfc.ps1", + "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/Pm3cwdQjiHO8xLVyVIKy%2FpnJ7OHI%2FD1LN0PZvBNYh2XRUHhYpZdUTs8I7MizxS%2FG:scripts%2F03-configure-wsfc.ps1", + "name": "wsfc-bootstrap", + "namespace": "idzxvkz1zdug", + "object": "scripts/03-configure-wsfc.ps1", + "object_name": "scripts/03-configure-wsfc.ps1", + "par_id": "Pm3cwdQjiHO8xLVyVIKy/pnJ7OHI/D1LN0PZvBNYh2XRUHhYpZdUTs8I7MizxS/G:scripts/03-configure-wsfc.ps1", + "time_created": "2026-08-10 12:01:08.45 +0000 UTC", + "time_expires": "2030-01-01T00:00:00Z", + "timeouts": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "data.oci_objectstorage_namespace.automation", + "oci_objectstorage_bucket.automation", + "oci_objectstorage_object.wsfc" + ] + } + ] + } + ], + "check_results": [ + { + "object_kind": "resource", + "config_addr": "oci_core_instance.sql1", + "status": "pass", + "objects": [ + { + "object_addr": "oci_core_instance.sql1", + "status": "pass" + } + ] + }, + { + "object_kind": "resource", + "config_addr": "oci_core_instance.sql2", + "status": "pass", + "objects": [ + { + "object_addr": "oci_core_instance.sql2", + "status": "pass" + } + ] + }, + { + "object_kind": "resource", + "config_addr": "oci_core_instance.dc", + "status": "pass", + "objects": [ + { + "object_addr": "oci_core_instance.dc", + "status": "pass" + } + ] + } + ] +} diff --git a/automation-mssql-server-aoag-sample/terraform.tfstate.backup b/automation-mssql-server-aoag-sample/terraform.tfstate.backup new file mode 100644 index 0000000..48bd0a2 --- /dev/null +++ b/automation-mssql-server-aoag-sample/terraform.tfstate.backup @@ -0,0 +1,28 @@ +{ + "version": 4, + "terraform_version": "1.13.5", + "serial": 2440, + "lineage": "6f1489c1-58b1-4ed7-debe-29cff2433645", + "outputs": {}, + "resources": [], + "check_results": [ + { + "object_kind": "resource", + "config_addr": "oci_core_instance.sql1", + "status": "unknown", + "objects": null + }, + { + "object_kind": "resource", + "config_addr": "oci_core_instance.sql2", + "status": "unknown", + "objects": null + }, + { + "object_kind": "resource", + "config_addr": "oci_core_instance.dc", + "status": "unknown", + "objects": null + } + ] +} diff --git a/automation-mssql-server-aoag-sample/terraform.tfvars b/automation-mssql-server-aoag-sample/terraform.tfvars new file mode 100644 index 0000000..4b87a4e --- /dev/null +++ b/automation-mssql-server-aoag-sample/terraform.tfvars @@ -0,0 +1,30 @@ +compartment_id = "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q" +oci_config_profile = "DEFAULT" +region = "us-sanjose-1" +windows_image_ocid = "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa" +# Leave ADs empty to select AD-1 for DC/SQL1 and AD-2 for SQL2 when available. +dc_availability_domain = "" +sql1_availability_domain = "" +sql2_availability_domain = "" + +# Current San Jose lab shape. +shape = "VM.Standard.E5.Flex" +ocpus = 6 +memory_in_gbs = 16 +sql_ocpus = 8 +sql_memory_in_gbs = 32 +boot_volume_size_in_gbs = 100 +sql_data_volume_size_in_gbs = 100 +sql_data_drive_letter = "F" + +# Current lab public access posture. +dc_rdp_source_cidr = "0.0.0.0/0" +sql_rdp_source_cidr = "0.0.0.0/0" + +domain_name = "mssqlaoag.demo" +domain_netbios_name = "MSSQLAOAG" +domain_admin_user = "domainadmin" + +# Keep the password out of this file for testing: +# export TF_VAR_domain_admin_password='' +auto_configure_domain_controller = true diff --git a/automation-mssql-server-aoag-sample/terraform.tfvars.example b/automation-mssql-server-aoag-sample/terraform.tfvars.example new file mode 100644 index 0000000..6fd91f0 --- /dev/null +++ b/automation-mssql-server-aoag-sample/terraform.tfvars.example @@ -0,0 +1,75 @@ +# Copy this file to terraform.tfvars, then replace every REPLACE_ME value. +# The values below are examples only; the module is not tied to San Jose. + +oci_config_profile = "DEFAULT" +region = "REPLACE_WITH_OCI_REGION" +compartment_id = "ocid1.compartment.oc1..REPLACE_ME" +windows_image_ocid = "ocid1.image.REPLACE_WITH_REGION.REPLACE_ME" + +# Leave these empty for automatic placement: DC/SQL1 use AD-1, and SQL2 uses +# AD-2 when available; in one-AD regions all three use AD-1. +dc_availability_domain = "" +sql1_availability_domain = "" +sql2_availability_domain = "" + +vcn_name = "SQL_VCN" +vcn_dns_label = "sqlvcn" +vcn_cidr = "10.0.0.0/16" +dc_subnet_cidr = "10.0.10.0/24" +sql1_subnet_cidr = "10.0.20.0/24" +sql2_subnet_cidr = "10.0.30.0/24" +dc_private_ip = "10.0.10.10" +sql1_private_ip = "10.0.20.10" +sql2_private_ip = "10.0.30.10" + +# Credentials are sensitive. Prefer TF_VAR_* environment variables or a +# local, uncommitted terraform.tfvars file. +domain_name = "mssqlaoag.demo" +domain_netbios_name = "MSSQLAOAG" +domain_admin_user = "domainadmin" +domain_admin_password = "" +sql_service_account_user = "sqlsa" +sql_service_account_password = "" +local_admin_user = "opc" +windows_admin_password = "" + +auto_configure_domain_controller = true +auto_configure_windows_nodes = true +auto_install_sql_server = true +install_ssms = true +auto_configure_wsfc = true +skip_cluster_validation = true +automation_artifact_expiration = "2030-01-01T00:00:00Z" +sql_server_download_url = "https://go.microsoft.com/fwlink/?linkid=2344626" +ssms_download_url = "https://aka.ms/ssms/22/release/vs_SSMS.exe" + +wsfc_cluster_name = "SQLAGCLUSTER" +wsfc_witness_path = "C:\\ClusterWitness" +wsfc_witness_share_name = "ClusterWitness" +wsfc_cluster_ip_sql1 = "10.0.20.20" +wsfc_cluster_ip_sql2 = "10.0.30.20" + +aoag_database_name = "AdventureWorks2025" +aoag_availability_group_name = "TestAOAG" +aoag_listener_name = "AOAG-LSN" +aoag_listener_port = 1433 +aoag_listener_ip_sql1 = "10.0.20.30" +aoag_listener_ip_sql2 = "10.0.30.30" +hadr_endpoint_name = "Hadr_endpoint" +hadr_endpoint_port = 5022 +sample_database_download_url = "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2025.bak" + +shape = "VM.Standard.E5.Flex" +ocpus = 6 +memory_in_gbs = 16 +sql_ocpus = 8 +sql_memory_in_gbs = 32 +boot_volume_size_in_gbs = 100 +sql_data_volume_size_in_gbs = 100 +sql_data_drive_letter = "F" + +dc_rdp_source_cidr = "0.0.0.0/0" +sql_rdp_source_cidr = "0.0.0.0/0" +freeform_tags = { + Project = "sqlagtest" +} From d23b53bbee8ae9bede75f299c2779e639363a0a8 Mon Sep 17 00:00:00 2001 From: Akarsha I Date: Thu, 20 Aug 2026 22:09:25 +0530 Subject: [PATCH 2/5] Automated Files Update Automated Files Update --- .../.gitignore | 14 + .../.terraform.lock.hcl | 25 + .../01-provider.tf | 8 +- .../02-availability-domains.tf | 2 + .../02-variables.tf | 15 +- .../03-network.tf | 2 + .../04-security.tf | 2 + .../05-compute.tf | 2 + .../06-secondary-private-ips.tf | 2 + .../06-sql-storage.tf | 2 + .../07-outputs.tf | 2 + .../08-automation-artifacts.tf | 2 + automation-mssql-server-aoag-sample/README.md | 31 +- .../aoag-fresh.tfplan | Bin 31976 -> 0 bytes .../docs/automation-scripts.md | 2 + .../oci-sql-server-aoag-architecture.drawio | 51 - .../docs/oci-sql-server-aoag-architecture.png | Bin 0 -> 632355 bytes .../docs/oci-sql-server-aoag-architecture.svg | 220 - .../docs/oci-sql-server-aoag-solution-hub.md | 25 +- .../docs/post-provisioning-runbook.md | 2 + .../schema.yaml | 189 + .../aoag/04-prepare-sample-database.ps1 | 2 + .../aoag/05-configure-availability-group.ps1 | 2 + .../scripts/aoag/06-safe-planned-failover.ps1 | 2 + .../aoag/07-reconcile-availability-group.ps1 | 2 + .../scripts/aoag/README.md | 2 + .../dc/01-configure-domain-controller.ps1 | 2 + .../scripts/sql/02-configure-sql-node.ps1 | 2 + .../scripts/wsfc/03-configure-wsfc.ps1 | 2 + .../sql-rebuild.tfplan | Bin 106346 -> 0 bytes .../templates/dc-user-data.ps1.tftpl | 2 + .../windows-node-user-data.ps1.tftpl | 2 + .../terraform.tfstate | 3541 ----------------- .../terraform.tfstate.backup | 28 - .../terraform.tfvars.example | 21 +- 35 files changed, 351 insertions(+), 3857 deletions(-) create mode 100644 automation-mssql-server-aoag-sample/.gitignore create mode 100644 automation-mssql-server-aoag-sample/.terraform.lock.hcl delete mode 100644 automation-mssql-server-aoag-sample/aoag-fresh.tfplan delete mode 100644 automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.drawio create mode 100644 automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.png delete mode 100644 automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.svg create mode 100644 automation-mssql-server-aoag-sample/schema.yaml delete mode 100644 automation-mssql-server-aoag-sample/sql-rebuild.tfplan delete mode 100644 automation-mssql-server-aoag-sample/terraform.tfstate delete mode 100644 automation-mssql-server-aoag-sample/terraform.tfstate.backup diff --git a/automation-mssql-server-aoag-sample/.gitignore b/automation-mssql-server-aoag-sample/.gitignore new file mode 100644 index 0000000..44cfa5f --- /dev/null +++ b/automation-mssql-server-aoag-sample/.gitignore @@ -0,0 +1,14 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ +.terraform/ +.terraform-local/ + +terraform.tfstate +terraform.tfstate.* +*.tfplan +*.tfvars +!terraform.tfvars.example + +crash.log +crash.*.log +.DS_Store diff --git a/automation-mssql-server-aoag-sample/.terraform.lock.hcl b/automation-mssql-server-aoag-sample/.terraform.lock.hcl new file mode 100644 index 0000000..c0aaa8d --- /dev/null +++ b/automation-mssql-server-aoag-sample/.terraform.lock.hcl @@ -0,0 +1,25 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/oracle/oci" { + version = "6.37.0" + constraints = "~> 6.0" + hashes = [ + "h1:S3gkcr6ZMGmrU0SQencNQ+j2L2DkOgi+InVKAVOWZWI=", + "zh:2b1ba7863e162f3f2e5929c6a43db6b0d44bb24032bf7d1b4fe27c36e39d512f", + "zh:2d2ccd7eaab45c0b35a52b7dd6e315a38a9e32d72827003194786dbae8004240", + "zh:3e3017f035fac18114e0b1d29c72430958054def0f800c22d36e1144d0c76422", + "zh:504eb43e31cead3c4ff9b3649b51b62e59f91cb94f622e7df110f31bb95daf20", + "zh:86e2ad61fa0c56a7e17b28ac79558ffd462cd086dd2f62b79988596792aa45c8", + "zh:92436cd5326a587e8fa927bee2d42800ff9ef93a782ccbea5c6ebd11e06cf786", + "zh:94aa72b19bbf5ccc4778c9154d615444184d63e782ded54741e18969ab00cb61", + "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", + "zh:b8d7e2d181acda6b8836071610fd292cc5c8ef659cfb92aac33bd6bfda71c24f", + "zh:ccb95a6b390f4b161532e9b14708a6cb989ca2fc51f1ae00eae9db4dd7ca70d4", + "zh:d385763af4eda8aa6bf906773b461efce4cab82670826d990fdd5e05fb8a2afa", + "zh:df0cd594595c16b33b1215543853f5e3671d16e665090b3f48f19ff288029dd4", + "zh:e5266e51a70ae31af36a3b58707f77c4189c956ec6f982fcce8aafcec36de3d7", + "zh:e5da4389063cddf4e7424ce0df1c218c1508672b45470d66adc81c52d5ccf46d", + "zh:e608694f226bb18cd93128b8dac910127cdf457f7baf37e472d0d18b531e9f84", + ] +} diff --git a/automation-mssql-server-aoag-sample/01-provider.tf b/automation-mssql-server-aoag-sample/01-provider.tf index 91aec9f..7aa768a 100644 --- a/automation-mssql-server-aoag-sample/01-provider.tf +++ b/automation-mssql-server-aoag-sample/01-provider.tf @@ -1,5 +1,7 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ provider "oci" { - region = var.region - config_file_profile = var.oci_config_profile + region = var.region + # Resource Manager supplies OCI authentication. A local run uses ~/.oci/config. + config_file_profile = var.execution_environment == "local" ? var.oci_config_profile : null } - diff --git a/automation-mssql-server-aoag-sample/02-availability-domains.tf b/automation-mssql-server-aoag-sample/02-availability-domains.tf index ffde4d1..e767de0 100644 --- a/automation-mssql-server-aoag-sample/02-availability-domains.tf +++ b/automation-mssql-server-aoag-sample/02-availability-domains.tf @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ data "oci_identity_availability_domains" "region" { compartment_id = var.compartment_id } diff --git a/automation-mssql-server-aoag-sample/02-variables.tf b/automation-mssql-server-aoag-sample/02-variables.tf index a928224..961931d 100644 --- a/automation-mssql-server-aoag-sample/02-variables.tf +++ b/automation-mssql-server-aoag-sample/02-variables.tf @@ -1,9 +1,22 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ variable "oci_config_profile" { - description = "OCI CLI config profile to use from ~/.oci/config." + description = "OCI CLI config profile to use from ~/.oci/config for a local deployment. Ignored by OCI Resource Manager." type = string default = "DEFAULT" } +variable "execution_environment" { + description = "Terraform execution environment. Use local for a workstation/OCI CLI deployment or resource_manager for an OCI Resource Manager stack." + type = string + default = "local" + + validation { + condition = contains(["local", "resource_manager"], var.execution_environment) + error_message = "execution_environment must be either local or resource_manager." + } +} + variable "region" { description = "OCI region in which to deploy the lab." type = string diff --git a/automation-mssql-server-aoag-sample/03-network.tf b/automation-mssql-server-aoag-sample/03-network.tf index f08114a..629c490 100644 --- a/automation-mssql-server-aoag-sample/03-network.tf +++ b/automation-mssql-server-aoag-sample/03-network.tf @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ resource "oci_core_vcn" "sql" { compartment_id = var.compartment_id cidr_blocks = [var.vcn_cidr] diff --git a/automation-mssql-server-aoag-sample/04-security.tf b/automation-mssql-server-aoag-sample/04-security.tf index c494e81..bf9f7dc 100644 --- a/automation-mssql-server-aoag-sample/04-security.tf +++ b/automation-mssql-server-aoag-sample/04-security.tf @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ locals { dc_source_cidrs = [var.vcn_cidr] sql_source_cidrs = [var.vcn_cidr] diff --git a/automation-mssql-server-aoag-sample/05-compute.tf b/automation-mssql-server-aoag-sample/05-compute.tf index 0917fb8..4cc832f 100644 --- a/automation-mssql-server-aoag-sample/05-compute.tf +++ b/automation-mssql-server-aoag-sample/05-compute.tf @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ locals { common_agent_plugins = [ "Compute Instance Run Command", diff --git a/automation-mssql-server-aoag-sample/06-secondary-private-ips.tf b/automation-mssql-server-aoag-sample/06-secondary-private-ips.tf index 3f0f5cc..07875cf 100644 --- a/automation-mssql-server-aoag-sample/06-secondary-private-ips.tf +++ b/automation-mssql-server-aoag-sample/06-secondary-private-ips.tf @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ data "oci_core_vnic_attachments" "sql1" { compartment_id = var.compartment_id instance_id = oci_core_instance.sql1.id diff --git a/automation-mssql-server-aoag-sample/06-sql-storage.tf b/automation-mssql-server-aoag-sample/06-sql-storage.tf index 0e388b8..a05f13d 100644 --- a/automation-mssql-server-aoag-sample/06-sql-storage.tf +++ b/automation-mssql-server-aoag-sample/06-sql-storage.tf @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ resource "oci_core_volume" "sql1_data" { availability_domain = local.selected_sql1_availability_domain compartment_id = var.compartment_id diff --git a/automation-mssql-server-aoag-sample/07-outputs.tf b/automation-mssql-server-aoag-sample/07-outputs.tf index 7fd350a..5c1805c 100644 --- a/automation-mssql-server-aoag-sample/07-outputs.tf +++ b/automation-mssql-server-aoag-sample/07-outputs.tf @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ output "vcn_id" { value = oci_core_vcn.sql.id } diff --git a/automation-mssql-server-aoag-sample/08-automation-artifacts.tf b/automation-mssql-server-aoag-sample/08-automation-artifacts.tf index 7764223..a9a683b 100644 --- a/automation-mssql-server-aoag-sample/08-automation-artifacts.tf +++ b/automation-mssql-server-aoag-sample/08-automation-artifacts.tf @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ data "oci_objectstorage_namespace" "automation" { compartment_id = var.compartment_id } diff --git a/automation-mssql-server-aoag-sample/README.md b/automation-mssql-server-aoag-sample/README.md index f6451ca..548867f 100644 --- a/automation-mssql-server-aoag-sample/README.md +++ b/automation-mssql-server-aoag-sample/README.md @@ -1,3 +1,5 @@ + + # SQL Server AOAG Terraform This folder is a region-neutral Terraform build for the OCI SQL Server AOAG lab. It follows the Oracle SQL Server AOAG tutorial concept, with the POC changes actually used here: @@ -25,6 +27,7 @@ This is a recreate configuration, not an import of the currently stopped VMs. If - `06-sql-storage.tf`: One 100 GB paravirtualized block volume for each SQL node. - `07-outputs.tf`: RDP IPs, private IPs, storage volume IDs, and post-provisioning values. - `08-automation-artifacts.tf`: Private Object Storage bucket, uploaded PowerShell scripts, and object-specific PARs used by the Windows bootstraps. +- `schema.yaml`: OCI Resource Manager Stack form, including password controls for sensitive inputs. - `terraform.tfvars.example`: Copy to `terraform.tfvars` and update before apply. - `templates/dc-user-data.ps1.tftpl`: Thin launcher that injects the compressed DC script into `DC-VM`. - `templates/windows-node-user-data.ps1.tftpl`: Thin first-boot downloader/launcher for `SQL1` and `SQL2`. @@ -45,6 +48,20 @@ Terraform state, local variable files, plans, and the `.terraform` directory are ```bash cd terraform-sanjose-aoag cp terraform.tfvars.example terraform.tfvars + +# Edit terraform.tfvars and replace every REPLACE_ME value. Then choose one +# credential method below. Do not use both methods for the same variable. + +# Option A: recommended for local deployment. Passwords are not written to +# terraform.tfvars. +export TF_VAR_domain_admin_password='' +export TF_VAR_windows_admin_password='' +export TF_VAR_sql_service_account_password='' + +# Option B: uncomment and set domain_admin_password in the local, +# gitignored terraform.tfvars file. The other two password fields can remain +# empty to reuse the domain-admin password for this POC. + terraform init terraform plan terraform apply @@ -59,7 +76,19 @@ terraform apply Do not delete `terraform.tfstate` before `terraform destroy`; doing so would orphan the OCI resources from Terraform's tracking. -Set `domain_admin_password` in `terraform.tfvars` before `terraform apply` when `auto_configure_domain_controller = true`. If `windows_admin_password` is empty, Terraform reuses `domain_admin_password` for the local `Administrator` and `opc` passwords in this POC. +`domain_admin_password` must be supplied before `terraform apply` when `auto_configure_domain_controller = true`. Supply it either through `TF_VAR_domain_admin_password` or in the local, ignored `terraform.tfvars` file. If `windows_admin_password` or `sql_service_account_password` is omitted or empty, Terraform reuses `domain_admin_password` for this POC. + +## Deploy with OCI Resource Manager + +This configuration can run as an OCI Resource Manager stack instead of from a local workstation. Resource Manager supplies OCI authentication and manages the Terraform state, so do not configure an OCI CLI profile or run `terraform init` locally for this path. + +1. In the OCI Console, go to **Developer Services** > **Resource Manager** > **Stacks** and create a stack from this Git repository or from a clean ZIP of this directory. +2. Use this directory as the stack working directory. Do not include `.terraform`, any `terraform.tfstate*` file, `terraform.tfvars`, plans, or logs in the uploaded source. +3. Set `execution_environment` to `resource_manager`. Set the region, compartment, Windows image, network values, and sizing in the Stack variables page. +4. Enter `domain_admin_password` in the password field. The optional Windows and SQL service password fields may be left blank to reuse that password for this POC, or set independently. Do not use `TF_VAR_*` commands in Resource Manager. +5. Run a **Plan** job, review it, then run an **Apply** job. Use a Resource Manager **Destroy** job when removing the environment. + +The Resource Manager user or group needs permission in the target compartment to manage the VCN, compute instances, boot and block volumes, private IPs, Object Storage objects/bucket, and associated networking resources. Treat the stack state and job logs as sensitive because the first-boot automation handles account passwords. Terraform reports the public IPs when OCI has finished creating the instances. That is not the end of the Windows work: first-boot scripts continue through renames, reboots, domain promotion, SQL installation, WSFC, restores, and AOAG configuration. Wait at least 10-15 minutes after the IPs appear before testing; on a fresh deployment, allow the DC promotion cycle roughly 20-25 minutes. Do not destroy and redeploy just because the IP output appeared. diff --git a/automation-mssql-server-aoag-sample/aoag-fresh.tfplan b/automation-mssql-server-aoag-sample/aoag-fresh.tfplan deleted file mode 100644 index 16a638d14fcb713117936a25c502d93f2c6830ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31976 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%0A)?Q0FDuo$3M+KsWRS1Sa3yR#5A%TscjM)G? z;z`>`Tm|vF7)o@fVQo{=pgIpm$&|fE4!WXQ%w(*~pfsfp2Q5mVyk@DUM(HuCbHmJL z20CDI!3vsRF`sKvKXumLEltV0D@PymGpJA(Z;`$+Y#Jz3wR>^hUjKzSR!$Nu@?2jU z60#GNMkz9Ylz0@MC>LmHWH24hV)93VJ&!yYBMJ!UjPT-Tt_CRBa$t;Rgk&20k&(0W z?KZ6{l><;Q&lk0``jG0|*$7xn(E)96mUN01T8#>Iz8ry?x*2T)R7M>$7|)!%k(8A> z3Sp7Na@B3l79`;$@}{&;6J&!wRZGKSZ4$!slK2#7dHVByhJa|DgF_n0Cr?@#??VA) zjD9aSZ4-x9MT=n3zLY4%9n1i6W*dXo%&c4fwrDzb2wLq8C%dm1u$z^qnYG4QJ@66) zT|igra37YJ5wx?I*NN0?z_J-G8fXe*3Wssw&$trFflq1M9SI#fCcvW#ff_Hb_X|)Y zHkraIQ#z3!J_+0_8mdi7fbp`w*%A8wk>~$N!pb*DRPGOr&g;X&DK7;Cj0*Vk^}c^~ z+k=0k;osx8m;L^J@L!Fge;D%rjK~iIzq9Gz?fJhS{Z}*PALh|N15fr}NB`YQ`a8s5 zJyw5s3jPf84_VvU^ndbT{*L!oN68<~tUp6Z={LOp*{Ah8_+PCNe+REq{SEwowy69L z{?|41zmJ53`fuR>)@$)Q-e1=O{*LFP`5WH9U5Ec2@2|S{A1erd2AJV*c>i%d;djix zs?C2W;(tcC(QlalULXG*@UIf_-vPype*^sYlJ)O^e{J{vP?rCU?cV|agULvr{Eqe4 kGWG{!_%qa<0soah$V-8J*fIeC#E-w*4{p2a_Q$vX1JZ~Dpa1{> diff --git a/automation-mssql-server-aoag-sample/docs/automation-scripts.md b/automation-mssql-server-aoag-sample/docs/automation-scripts.md index f407bbd..3331f65 100644 --- a/automation-mssql-server-aoag-sample/docs/automation-scripts.md +++ b/automation-mssql-server-aoag-sample/docs/automation-scripts.md @@ -1,3 +1,5 @@ + + # Automation Scripts These scripts are the readable PowerShell automation used by Terraform diff --git a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.drawio b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.drawio deleted file mode 100644 index 47c5e5e..0000000 --- a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.drawio +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.png b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..117c39d78d915537bb9c30fb12e81d2afddc511d GIT binary patch literal 632355 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

YVqQsWX~p9L=#FL^)l54o3S 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

YfW7cmVzY_o;BcaC@X}nl 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

~V+ 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

wWUu(g7Ezo<*cp^by(FCt3QpoF(zd6&Ec|ItE*- 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%0A0fpXRANk+gFZWe1Mzt0JMm6 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 Nz2nBma*x;r{~x$~vQhv5 literal 0 HcmV?d00001 diff --git a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.svg b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.svg deleted file mode 100644 index 1cfcf50..0000000 --- a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-architecture.svg +++ /dev/null @@ -1,220 +0,0 @@ - - SQL Server Always On Availability Groups on Oracle Cloud Infrastructure - Terraform provisioned OCI reference architecture with a domain controller, two SQL Server nodes, WSFC quorum, private automation artifacts, and a native multi-subnet AOAG listener. - - - - - - - - - - - - SQL Server Always On Availability Groups on OCI - Terraform-provisioned Windows domain, WSFC quorum, synchronous AOAG, and native multi-subnet listener - - POC reference architecture - - - - - - CONTROL PLANE - - - - Terraform - VCN, subnets, routes, - security lists, instances, - volumes and private artifacts - - - - Operator - RDP / SSMS with - MSSQLAOAG\domainadmin - for validation and tests - - POC boundary - Public subnets and public - RDP are intentional here. - Restrict RDP for production. - - Legend - management - data / quorum - SQL / HADR - automation - Icons are simplified OCI-style - service glyphs for portability. - - - - - - - - ORACLE CLOUD INFRASTRUCTURE (OCI) REGION - Compartment: OICCompartment - - - - VCN • configurable CIDR - Public route table → Internet Gateway • security lists only • IMDSv2-only instances - - - - - - Internet Gateway - RDP 3389 + software downloads - - - - - - - Object Storage - Private bucket • PAR artifacts - PowerShell first-boot packages - - - - - - AOAG-LSN • native listener - TCP 1433 • multi-subnet IPs - No OCI Load Balancer in this POC - - - - - PUBLIC SUBNET • DC-VM - 10.0.10.0/24 • AD-1 - - - - DC-VM • 10.0.10.10 - AD DS + DNS - mssqlaoag.demo - ClusterWitness SMB share - Domain services → SQL1 / SQL2 - DNS 53 • LDAP/Kerberos • SMB 445 - Quorum witness: \\DC-VM.domain\ClusterWitness - - - - PUBLIC SUBNET • SQL1 - 10.0.20.0/24 • AD-2 - - - - SQL1 • 10.0.20.10 - MSSQLSERVER + SSMS - AOAG primary / secondary - F: 100 GB SQL data volume - Secondary IPs: WSFC + listener - 10.0.20.20 • 10.0.20.30 - HADR endpoint: TCP 5022 - - - - PUBLIC SUBNET • SQL2 - 10.0.30.0/24 • AD-3 / fallback - - - - SQL2 • 10.0.30.10 - MSSQLSERVER + SSMS - AOAG secondary / primary - F: 100 GB SQL data volume - Secondary IPs: WSFC + listener - 10.0.30.20 • 10.0.30.30 - HADR endpoint: TCP 5022 - - - - - - - - - - - AD / DNS / SMB witness / WSFC control bus - - - - - - - WSFC + HADR TCP 5022 / synchronous commit - - - - - - AOAG-LSN IP ownership follows primary - - - - BOOTSTRAP AND OPERATIONS AUTOMATION - - First-boot PowerShell - AD → domain join → WSFC → SQL - AOAG → listener → reconciliation - - Readiness markers + logs - DOMAIN_READY • WSFC_READY - TASK_5_4 • TASK_5_5 - - Manual seed workflow - SQL1 full/log backup → witness - SQL2 restore NORECOVERY → join AG - - Guarded failover - Synchronized → planned failover - Failback only after resync - - - - - - - - - OCI API - - RDP / SSMS - - - - HA contract - one writable - primary at a time - automatic failover - needs quorum + sync - - - Production hardening next - Private subnets, bastion, restricted RDP, backups, monitoring, DR, and patch governance - Reference implementation • region-neutral Terraform inputs • no OCI Load Balancer - Official OCI diagram toolkit: docs.oracle.com/en-us/iaas/Content/General/Reference/graphicsfordiagrams.htm - diff --git a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md index 6912e12..7079247 100644 --- a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md +++ b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md @@ -1,3 +1,5 @@ + + # Automated SQL Server Always On Availability Groups on OCI ## Overview @@ -55,13 +57,11 @@ Manual seeding is intentional. It makes the backup, restore, and `NORECOVERY` st ## Reference Architecture -![SQL Server Always On Availability Groups on OCI reference architecture](oci-sql-server-aoag-architecture.svg) +![SQL Server Always On Availability Groups on OCI reference architecture](oci-sql-server-aoag-architecture.png) -**Editable Draw.io source:** [OCI SQL Server AOAG architecture](oci-sql-server-aoag-architecture.drawio) +The PNG follows the actual execution order: Terraform provisions OCI, `DC-VM` is created and promoted first, SQL1 and SQL2 are created next, the SQL nodes join the domain, SQL runs under `MSSQLAOAG\\sqlsa`, SQL Server and SSMS are installed, WSFC and the file-share witness are configured, the sample database is backed up and restored with `NORECOVERY`, the AOAG is configured and synchronized, and only then is `AOAG-LSN` created and failover readiness validated. This POC uses a native SQL Server listener and does not use an OCI Load Balancer. -The diagram separates the operator/control plane, OCI region boundary, VCN and subnet placement, Windows domain and quorum path, SQL replication path, listener path, and staged automation path. It is intentionally explicit about the native AOAG listener and the fact that this POC does not use an OCI Load Balancer. - -For official OCI service stencils and templates, use Oracle's [OCI Architecture Diagram Toolkit](https://docs.oracle.com/en-us/iaas/Content/General/Reference/graphicsfordiagrams.htm). The editable source is kept as a portable Draw.io artifact so the service glyphs can be refreshed from the current OCI toolkit without changing the architecture or data flows. +For official OCI service stencils and templates, use Oracle's [OCI Architecture Diagram Toolkit](https://docs.oracle.com/en-us/iaas/Content/General/Reference/graphicsfordiagrams.htm). The published architecture artifact for this repository is the PNG above. ## End-to-End Flow @@ -312,16 +312,29 @@ This is a single-primary AOAG design. Both replicas participate in availability, cd terraform-sanjose-aoag cp terraform.tfvars.example terraform.tfvars -# Prefer environment variables or a protected local tfvars file. +# Edit terraform.tfvars and replace every REPLACE_ME value. Choose one +# credential method below; do not use both methods for the same variable. + +# Option A: Prefer environment variables. export TF_VAR_domain_admin_password='' export TF_VAR_windows_admin_password='' export TF_VAR_sql_service_account_password='' +# Option B: Uncomment the password settings in the local, gitignored +# terraform.tfvars file. Empty Windows and SQL service password values reuse +# domain_admin_password for this POC. + terraform init terraform plan terraform apply ``` +### OCI Resource Manager deployment + +The same Terraform can be deployed through an OCI Resource Manager stack. Create the stack from the Git repository or a clean ZIP of this directory, set `execution_environment = "resource_manager"`, and provide the target region, compartment, Windows image, network values, and passwords through the Stack variables page. Resource Manager supplies OCI authentication and manages state, so users do not run `terraform init` or set `TF_VAR_*` shell variables for this deployment path. + +Do not upload `.terraform`, `terraform.tfstate*`, `terraform.tfvars`, plans, or logs. Run a Resource Manager **Plan** job, then an **Apply** job after review; use a **Destroy** job for cleanup. The stack operator requires compartment permissions to manage networking, compute, block volumes, private IPs, and the Object Storage automation artifacts. Treat stack state and job logs as sensitive because the bootstrap uses account passwords. + The same directory can be used for a clean POC recreation: ```bash diff --git a/automation-mssql-server-aoag-sample/docs/post-provisioning-runbook.md b/automation-mssql-server-aoag-sample/docs/post-provisioning-runbook.md index c52a3dc..01f1ba0 100644 --- a/automation-mssql-server-aoag-sample/docs/post-provisioning-runbook.md +++ b/automation-mssql-server-aoag-sample/docs/post-provisioning-runbook.md @@ -1,3 +1,5 @@ + + # Post-Provisioning Runbook Terraform creates the OCI layer, then Windows first-boot automation continues asynchronously. When Terraform prints the instance IPs, wait at least 10-15 minutes before testing. A fresh DC promotion can take roughly 20-25 minutes, and SQL Server/SSMS downloads can extend the SQL node time. Use the ready-marker checks below as the completion signal; do not treat the Terraform apply timestamp as bootstrap completion. diff --git a/automation-mssql-server-aoag-sample/schema.yaml b/automation-mssql-server-aoag-sample/schema.yaml new file mode 100644 index 0000000..0177a27 --- /dev/null +++ b/automation-mssql-server-aoag-sample/schema.yaml @@ -0,0 +1,189 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ +title: SQL Server Always On Availability Groups on OCI +description: Terraform deployment of a Windows domain controller, two SQL Server nodes, WSFC, file-share witness, and a native multi-subnet AOAG listener. +informationalText: This POC deploys public subnets and public RDP. Restrict access and use a production password and secret-management policy before production use. +schemaVersion: 1.1.0 +version: "1.0.0" +locale: en + +variableGroups: + - title: Target OCI environment + variables: + - region + - compartment_id + - windows_image_ocid + - execution_environment + - title: Network and remote access + variables: + - vcn_name + - vcn_cidr + - dc_subnet_cidr + - sql1_subnet_cidr + - sql2_subnet_cidr + - dc_rdp_source_cidr + - sql_rdp_source_cidr + - title: Domain and service accounts + variables: + - domain_name + - domain_netbios_name + - domain_admin_user + - domain_admin_password + - sql_service_account_user + - sql_service_account_password + - local_admin_user + - windows_admin_password + - title: Compute and storage + variables: + - shape + - ocpus + - memory_in_gbs + - sql_ocpus + - sql_memory_in_gbs + - boot_volume_size_in_gbs + - sql_data_volume_size_in_gbs + - title: SQL Server Always On configuration + variables: + - wsfc_cluster_name + - aoag_database_name + - aoag_availability_group_name + - aoag_listener_name + - aoag_listener_port + - title: Automation controls + variables: + - auto_configure_domain_controller + - auto_configure_windows_nodes + - auto_install_sql_server + - install_ssms + - auto_configure_wsfc + - skip_cluster_validation + +variables: + region: + type: oci:identity:region:name + title: Region + required: true + compartment_id: + type: oci:identity:compartment:id + title: Deployment compartment + required: true + windows_image_ocid: + type: oci:core:image:id + title: Windows Server image + required: true + dependsOn: + compartmentId: ${compartment_id} + execution_environment: + type: enum + title: Execution environment + description: Select resource_manager for an OCI Resource Manager stack. Select local only for a workstation deployment using ~/.oci/config. + enum: + - resource_manager + - local + default: resource_manager + required: true + vcn_name: + type: string + title: VCN name + vcn_cidr: + type: string + title: VCN CIDR + dc_subnet_cidr: + type: string + title: Domain controller subnet CIDR + sql1_subnet_cidr: + type: string + title: SQL1 subnet CIDR + sql2_subnet_cidr: + type: string + title: SQL2 subnet CIDR + dc_rdp_source_cidr: + type: string + title: DC RDP source CIDR + sql_rdp_source_cidr: + type: string + title: SQL RDP source CIDR + domain_name: + type: string + title: Active Directory DNS domain + domain_netbios_name: + type: string + title: Active Directory NetBIOS name + domain_admin_user: + type: string + title: Domain administrator username + domain_admin_password: + type: password + title: Domain administrator password + required: true + confirmation: false + sql_service_account_user: + type: string + title: SQL Server service account username + sql_service_account_password: + type: password + title: SQL Server service account password + description: Optional. Leave blank to reuse the domain administrator password for this POC. + confirmation: false + local_admin_user: + type: string + title: Local Windows administrator username + windows_admin_password: + type: password + title: Local Windows administrator password + description: Optional. Leave blank to reuse the domain administrator password for this POC. + confirmation: false + shape: + type: string + title: Compute shape + ocpus: + type: number + title: DC OCPUs + memory_in_gbs: + type: number + title: DC memory in GB + sql_ocpus: + type: number + title: SQL node OCPUs + sql_memory_in_gbs: + type: number + title: SQL node memory in GB + boot_volume_size_in_gbs: + type: number + title: Boot volume size in GB + sql_data_volume_size_in_gbs: + type: number + title: SQL data volume size in GB + wsfc_cluster_name: + type: string + title: WSFC cluster name + aoag_database_name: + type: string + title: Sample database name + aoag_availability_group_name: + type: string + title: Availability group name + aoag_listener_name: + type: string + title: Native listener DNS name + aoag_listener_port: + type: number + title: Listener TCP port + auto_configure_domain_controller: + type: boolean + title: Automatically configure the domain controller + auto_configure_windows_nodes: + type: boolean + title: Automatically configure the SQL nodes + auto_install_sql_server: + type: boolean + title: Automatically install SQL Server + install_ssms: + type: boolean + title: Automatically install SSMS + auto_configure_wsfc: + type: boolean + title: Automatically configure WSFC and AOAG + skip_cluster_validation: + type: boolean + title: Skip full WSFC validation diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/04-prepare-sample-database.ps1 b/automation-mssql-server-aoag-sample/scripts/aoag/04-prepare-sample-database.ps1 index 215398e..5de6706 100644 --- a/automation-mssql-server-aoag-sample/scripts/aoag/04-prepare-sample-database.ps1 +++ b/automation-mssql-server-aoag-sample/scripts/aoag/04-prepare-sample-database.ps1 @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ [CmdletBinding()] param( [string]$SecondaryNode = "SQL2", diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/05-configure-availability-group.ps1 b/automation-mssql-server-aoag-sample/scripts/aoag/05-configure-availability-group.ps1 index 9f94ab7..7733591 100644 --- a/automation-mssql-server-aoag-sample/scripts/aoag/05-configure-availability-group.ps1 +++ b/automation-mssql-server-aoag-sample/scripts/aoag/05-configure-availability-group.ps1 @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ [CmdletBinding()] param( [string]$PrimaryNode = "SQL1", diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/06-safe-planned-failover.ps1 b/automation-mssql-server-aoag-sample/scripts/aoag/06-safe-planned-failover.ps1 index 44ff282..6447cd8 100644 --- a/automation-mssql-server-aoag-sample/scripts/aoag/06-safe-planned-failover.ps1 +++ b/automation-mssql-server-aoag-sample/scripts/aoag/06-safe-planned-failover.ps1 @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ [CmdletBinding()] param( [string]$AvailabilityGroupName = "TestAOAG", diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/07-reconcile-availability-group.ps1 b/automation-mssql-server-aoag-sample/scripts/aoag/07-reconcile-availability-group.ps1 index 54a62ac..5b03e84 100644 --- a/automation-mssql-server-aoag-sample/scripts/aoag/07-reconcile-availability-group.ps1 +++ b/automation-mssql-server-aoag-sample/scripts/aoag/07-reconcile-availability-group.ps1 @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ [CmdletBinding()] param( [string]$AvailabilityGroupName = "TestAOAG", diff --git a/automation-mssql-server-aoag-sample/scripts/aoag/README.md b/automation-mssql-server-aoag-sample/scripts/aoag/README.md index 2d6dbff..44e18de 100644 --- a/automation-mssql-server-aoag-sample/scripts/aoag/README.md +++ b/automation-mssql-server-aoag-sample/scripts/aoag/README.md @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ # Availability Group Automation This folder contains the database and availability-group automation phase: diff --git a/automation-mssql-server-aoag-sample/scripts/dc/01-configure-domain-controller.ps1 b/automation-mssql-server-aoag-sample/scripts/dc/01-configure-domain-controller.ps1 index f9f749b..76fa788 100644 --- a/automation-mssql-server-aoag-sample/scripts/dc/01-configure-domain-controller.ps1 +++ b/automation-mssql-server-aoag-sample/scripts/dc/01-configure-domain-controller.ps1 @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ <# .SYNOPSIS Configures DC-VM as the first domain controller for the AOAG lab. diff --git a/automation-mssql-server-aoag-sample/scripts/sql/02-configure-sql-node.ps1 b/automation-mssql-server-aoag-sample/scripts/sql/02-configure-sql-node.ps1 index 1bfe859..cf800f0 100644 --- a/automation-mssql-server-aoag-sample/scripts/sql/02-configure-sql-node.ps1 +++ b/automation-mssql-server-aoag-sample/scripts/sql/02-configure-sql-node.ps1 @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ [CmdletBinding()] param( [string]$DomainName = "mssqlaoag.demo", diff --git a/automation-mssql-server-aoag-sample/scripts/wsfc/03-configure-wsfc.ps1 b/automation-mssql-server-aoag-sample/scripts/wsfc/03-configure-wsfc.ps1 index 61fdc35..9924951 100644 --- a/automation-mssql-server-aoag-sample/scripts/wsfc/03-configure-wsfc.ps1 +++ b/automation-mssql-server-aoag-sample/scripts/wsfc/03-configure-wsfc.ps1 @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ [CmdletBinding()] param( [string]$DomainName = "mssqlaoag.demo", diff --git a/automation-mssql-server-aoag-sample/sql-rebuild.tfplan b/automation-mssql-server-aoag-sample/sql-rebuild.tfplan deleted file mode 100644 index cbd1ff94217d17f3026358d1ed899b449199440c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106346 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

>kKaHt0V$1y!PHO|9; zjqPBFf#Vz>j&e`Sb(s9aE|&bCq3D80sBEbbyln{{1Gru!^#jWaBd}rU*P{7g;@Zf0 zmfBLm$YNMDqjX8NIoJV>Kyx4U;apyLa-*xt&Iw7Tp_}j*U8U$hdh+8EEDRYHEso(0Tks+FqRnT{JbLBTv?HqzjN_JCJ>na7ghcwHZdbkP{2VGlO5|%|Qtk5A*ads11P5|j zczB)<_Il4b#3>-HkhZe}T#v=4Ch`d*cnGNUt9|xW;EmL&x7Rfc{bQg;EuyBWmkHFcS&MWH zt9a7Es7E7ZP$LSO0*LuGYbZ`RlrLsiojaF)jY6izxuTrQ+)KI_Z8Tb;yOC6iB{e3T z{NDDV({MbK-i%HMQ9<+wDKwsFy@|3>#jAZ~Xlpf9=Lp5oO$RpSLKU`L?nT2^n3R)< z*%Kr^mHS5?R-sEo>+IsrX&QlwYnbk(o@dF?{bY58R35$7A$4qVp zcNv+4d8q{|Uiec3&lOa}IT~&0ZxUP&-W7pOG(kkEhVD4!Sq0Hd37enky2>I6JCRFx z+3l^`5Mo*(d8RI~ZbrY<$+g4Rf+<`35Piu-q=Q!kpgrhmsS?50f3hkz0m8%Qf=wBk z>F(4E$YS%GE@ul82(+TxEPZ1!e!oip@Tuy=kg;v@oJg~|gpAySoEP5Ky%x;&$29dU zG_tAcBqvitYF`@`m)`f2NI-WNj#R27il#}Q zPdhaMo0v}{LD3{W)5%{ejHI&+m0Ed{Q7hfs$BY)zM6Ra1IngD@X2uwa;1%NUjtK># z>nf9Lq!vCRog8}Ik4?TtB&%DqzpRis@F5Ev&8sMewkbs^xt;G-P+ql3h$NnWd6Y%u ztovWcT=C@=L97N4w#z2G7Y8g#%H{}7qA-TJiR3tNL^4bnAvc6hsNJ@zMx27PKlQ44 zRKrpvZ>Drxf-Yv_XqL0XE4d+n*pnH@oWDJMEs|HGVdVAh({PY~)WlKO=oyC1$o{T) zEYYeA<9EHx*m(CsB40_xy=iIQHMI*nqJ}4(O*$Io0hC{*lOdJYdII&lG1;OD5)lR? zY-h@l^loGlUS1ABe@lbKvh_f3;>s#yXyVjLp%jW78ew=kNk$93TXoVaaTk}zCXOKN zlF690`qOavUEMNyS&r_tY-1X@sz&sZX{dAt8T$-$yKCq3u`1Q{vYGM0ALM0>k2ao9 z0OrGmosrI6N6aK;0w(4O{X3YS8Zs1%Q_1TkXBY)+!iuEgL6Z+5G&|u^%@54m4(DBwD>A1g%jRj;c!MTzeQ-1+Bbu-C990y2P!Qz(p{WXe$WKzeU=DA7qYC z(W#j%0B92bMI)pLvhBAG^%;<~l>UL1Y&p_RH;GEQ-kqHJhd^Eqms|ePjZ^i)I;1(i zfjYkkLQJ+oTtJ?F%L?H)8$;KR^`x=~r_)Q3P*iJG+g=C?1hHRtKl9&|;Uw2x4r@+1 zRkC+3Ck{JtRl-QAwTB5dScUBd9CWpCe>6m3sWrhQh+=cbc}}H}oGlbf7r;&ws$k;F zhhJ$$ju$!126Y0@ez_}|6Y(0w*lsSM-Mo;%H;$64Y=*0Ym8aV^rwE6HV;`OP@G%ez zNEx6JLgvv*hNuj)7eV7?^N1j2CYd*vmq6G8h8gRlGEmtE+s@Iu!-_foL6ocT8E7(r z4OL;2FDxy}L~CVpcF(TbLDi^i6%@A7-!%%v&D7b;0jqS zfwy!(n)u3pryextMr8^`Rup92Lf)!XluXY9O$xadmNhkALixCLt+$l)&{p9wUY4^x zZ5d;HnTxw2B+RDGg~Wz5tw*8cnsj1ha@`_@$~M7v2@*jo3Fgw0bvDYb`-jd<)eM~; z1DEco`X`J+*;JbwCBlWnb*5wRZ6ceL zpbw|EnPM$7tvr7yOKYYD0o;&zHQbE5LohSs;D1t@CUluHS+>yziqV%P+&) z?SdLof@0}9r81%>52YI>`~}p`=muS6>0v2R@ri{F0nOMiS%uM5^I* z1g-)^Y(^O2;I72@QG6nSQp`(!gDabDsk*enNxkM8X6tsUj_)L~H;l%#&|13~cR6C> z#l`UKreKGP#>Mwuw9dP88{dh=r|5zwT~zGSYlMg) zt$Q2I8YgnDAYx_034d+;ytvF2k;MAI?oGVKNCCu$AEkih5LO1Fj?}}4l1L}GSkP|X z5w;-I#2#iwF6JhSV6ei&BmIEHtlbW8_^WS%Z;oS+VK|zj+0ITTZ#qc$iFVawC#eTS z$(R+b)gEd!F2mdzYBd>%+Ss_>a zjheJL0L;FZ2LQNQR2(iw-m7}s*n`1ET>ofK87A(XbZ>t{?S__nebr*3KVG7FaRZKEo!h<(91o*lQdDY%v#gTz^u zatRw`hJysNO4PBw>qHRWZLhk_FIiKjOK3tlo*|vQDp%#CJ>blH)v`^O60A?cy%StW z;1 ztywNniwy6waaHy(D;5ygS*E%n6HaANDy4OrY#3kAIKi3LFG@`^)ZR)?s&IY~y`q;W zc9l{U&q&RGWK%2JTP9SnOQsh6s*!LUB$GG72$13=B-lGBxL zR0BsbLP43GBF|vw;*XqPNRi=2r>oP$**XuiXsQTnb-wA=w$CY$Oj{tKq?sTG;qGLP`mXUES4=Q#chvM{80^`+ZK z{goiY%zkmL-*`(T7F+9op&{5e1L2geQ-`X&I$xzV$dgC|2^p(JWc$m^wqJNe4VQy5 zFoLBHimEAUyhh?ot^=X%UU2moUSl!na&2dBLLptEBVQ)b&1f7`gx-WtS{}Q>_*$kF zX{|)|Wcd2Zp5U^dQFO!NWNAn0PqxW1i}E7lfBxfS#@-O;5XiKMkkM_ycZ8U9yJh}rxj$qSNw$?Ob9ZZP_ zktL1~4QEzmyTD?O_KbNZ(4j!G8B113MB>ud<{U$q0kK#V_HxsvOC%X^u5+3lDw}{v zl|P!aNt|B94u=|p3lzm{!;Q4{-dv6k0eB{ox)$=(D^0xwI8H+X#(XLV?fF4xD6RIq z{@3+y$}TgnG{Lkk4}Jr4^HvPl&X6y@woQYIe#Hlke+abhVR*U4gKGaHvf1Ntu7!o3 zmI-W2weROuTkr z4MueT9Gs0oMeh_1?TZ;z7(%w}|Jd zIb>7W0AE9>I2!w(^Djm#$an@M0{&v<_H>G2SRMv`FT2VI?lAO#V~qH?xVUP z!S7$$8M)-=RE)dmrIJZ=Mv!!zDJTe9?T`$c1i&K}<)|`S6<@^`;o=R-6{pQOW%&;_ zns}Z91^lZaiwvL>m=9+Q&Dx47uv;Hx^t~X8#yw~Ny6MOoJ3rG4VV(RBaB-g0+K!`C zuG&S>-AO4wKF1g$s{+qJCZ`pHV(EmIF9n29`7(;*m8-;9Seu}A;HS=AgB zR}5E?Kc$FE$k`+wTT5C_oxuQ6HtvION(d~-@hv$&8x+-{f6RjVIn?$m@7He2q`>g! zP{RgKc190aX@vSTiAKbjE+UfJVMJQlqq;SuPOWeIm8Gq1m{tb8%iVJI9WzmS{(BJw zS{0G|I?hD&%<0r{ylB}r9F6~Fr@bo4sM_OH>;o%_Rs1?MnR=XSRZgfBN-z)y!l1qv z&ias-h$einX7-F6r>wz`-!?HWlrnlUC}jLQ*4q!T}e#s znA6wHtJAB^cgu#%M5^VHbnUkFgk{wwo#><`QUrE7k+zIH!M!?JXKH~4+j>%zwFe@k zcYoOfQigw2{B%PUaL^<}a8JNJyBWK+lX;#3Xu{GN=BTJIT7DPAiYD&HkH~c(7MTk6 zrQ{qi+QmZ`mb7aTq|fNl`pKr(!T^qJsd|!@ZZgnum`r_(BipQ$aQnOZ)L_F3i^J9g z?@C&X9PuQMV$&RRsTt;mXA;vQkY8+*wttCpK_`xd!dFjbH1#~|{2a%~Ig!@wfugaO zx5JayFQPRb+-T1<+P#cr|0gn8Ga$1eB4oWW$c+WMyBFCO1B!EJ7>|`3^sabMS#^eQ z(=)DR8_N8f7kIMSvKS6Nc3=aWRDo5nhG)f4T8oz2Xq;`+cwgovU(SJgP$Ep0NaJ-b zDpA`sL*}Scur%S1K{8x$WP*B%TId5gj|{cM#rB{5wfbe729LeE*OPijC>;MCnUhR; zErgLcK(edSM6%}aH>6xD4@{(#H*7_5lx413HGTDSk4N86GEOCX65>~N>K0W zkN?naStFGuY~&m!jVn{LYY&MeOkPN_A~>UA%wH!Yf0Y|4(t!=r7QAiEsQKZdCS&N9 zy{0wo&ruem@`*y~HM0ip9aBh*h->8_!Rn_Py~M$iiQ4-DNKdt`5XJZ%FpbABQ<%jq z0lBno%A?f5esgzf_=(OFlmNtymfdtiJQ48H3AMi zL}Mhf-^HcXsIZtCGWmRse{57Ll6{Y8aiS{rmW{Z5UvQl13_&N#qL5m7r{hVj-pZxC zu`{$4V_=CHSb(A#W;IbM0CP&Ta+<4+Ax0-wx#e?Ckwb?eBHwLeKJ_Ey`WUWlz0x1a zebds-%lOOn4e7)(RNF2kIWB2B@&cciFFh{0Sd^VuEa?gc@`A6Q6>)9@6x=hl+MOBrVC zyh_;Yt(j>VO%Y@@kHDQWFJt9OKqm#Jg|=m|_R;16D$#5mG#(;teTqu-Tk=0H1D=&V z6akxgB`P`0W@=m81Q=a=w~T5XplI!O$aM2RRr)NK>?57L$*IkHY>M2xOP*4S3r<1C&JfrchK+>`# zuD$~nY}t!s9lO4EJt?)(5eaJ{SYqfAq%zlw@@^PvbW+i&rLAt*RW4%S(h|(_OD^IF z=n>U{l2WZxjSZ18#;M9Xk>h^hiOOTN?5Uds%fM{4ZNo;NWmrgXw618WNa}dunS{m( zpx@c#EI|giaBMX!hle$VosuhYhmPPd?t5>9cS%ny{g&Gg33$IW&UW4HhQ~1~m^-lv zWG;;E(4w@UwPs9JqcSw8wqgW2lj~M3Icrm|QIxP1?i8L|RRxVW z7gHtq-5TjOwcbU#?QpO+S5}7k0C6Igq!fvJ(#D`@4dQuGk_siFIX;CoatL41t+nw% zzo*=-K&$q8#CdBoMfwo7Qmb?c>4yvBt{=m^s|fKD^=RR<0>E9@nB6>Etxz!9-V`cM z!v5>Nmm2eIW9LHgQ`&^0FsW~Gf)0gHv7YB#)^amx_w_;E9304Di#mcTQew|?TD9&x zR+mwkhcxO}&{UEMZ(373LFch-z1SrEItpiYLub}rJ3;RdG?&4y6YE-ag@KoZMg63! z4o*j3OW}pSxinpgqo$P+K;Tg)V#wKCKK%>(b0Cm$m8~UugIG6qv4OYe!Sy6`)9jrz z^@DyIQz%6*ApOF3j|mz`n$7bCt8$!WbKaim9oV~udv9{p0oO1s=3$MLyE=Rb>ih5H zkj3k-s4tacs}nE@U6*i6z0OXXLWzYCM9=)~wTb?T=m!e|M7s3Q8omG;lt1hK**$-& zI8qtn&+84(t~qAbh~YP%-+ZnKUC$FsL;8r^D?MB@^Nema%U7v5g8g^y#eL1p_Xszo zj!KLM_o#(`rZ0g-{}=X-r&w~Bv;&iqdlaw#Y;-vL!l7X8>)AC}9TzQj&_8*5+sJhz ztw_F_pJLJeyDjDN_M__t^m$=FLRZ}=tY5yRddQn|H1VVwPt2(*U!CyVB78{8Q}?zg z)Bi5g;!4MqvC3KAj&=9r*rsMptdADupw0J`f*Ve^K+Re)j&-u8=7Y)iu_QmdZn&eVRJ9pi1`)+b6DahK7$nzK9mtS;NN+P~c@)o@*yd#-2-g(X@J zBE_xmIJ{hWidI^yv88nlq21T}c=FLGMVYa0UT_{ivQ^!J)^+qdPpFewA+<8NXr+86 z^A9d=>FpS8{e*U20!{uXV4nJfBLR3Qf)>o-@zr&*BW@F_2?INYq_Z;jR z*Rd+tD|PpZc|Hkw{ux2%9I#m#MW)n3O#5L&w`Que&1Q1p9do{fiZd+gXK6CHcK;J_ zTz?N0F!T?#5V^H=15r>vxH2jm!-#A8E4ox@1Wz_GI0b`ga@!O-#f zB`qE=={^anyQf^M#kcUa;h=}3Ql)qNcNTg*M%%}Kn8C{cMZD@m?D>3wsJ>?O0sQEg zsa|)g2#dUakv&nZ{hxbTJ6Y2(Z*Dja!wR!m)jdr0j6a6W(Ka4}wSVgQ-UQ7-F}wLZ zhR%Bzs2Ni_NG4G)|cqN6I*dXy0(t zu)WO#l z$Pb5F*RFQ$`a7AUIofDQS+sON%Zz*XeA$S%7iPyM=Enp!Ja@Ufsehv_r`X5O?u__- z;NTxb=MJN><=?P2_hkkwMwD!afZOx9a4|wa3vKMr!LCv+S@D zM3=^_?<_*#F5Fm_c4xw*Zyzo(Jc-G65I?dJ7|)vaU|VB~o~g(+dm6f9c1_Y~pQrKU zu@{jY{T-?vg9C;2`m+@5kZ1b^&GjX#-DWm$Hx_dv$U%+S6E<33drs3gPIx@*5`!-# z`>ej~8@U1%gkO(%Pvws7yR$YwiYh;{%c;6*Th-jh*()8~7Dc6he!yF|sMlQT0HLVu z@^%rHBotF`-PW{kr@{|gey#H=MX7qtcwT!F-Xa$mZnmAe)MVf$Z}UKZS{&+%IzN7C zqL%;SqVR&9Sa;jVwpMYgqzelM7Hy4i&a1J~xdq@iFdLih8`djU*UHPB(%E(lnqIV+ zxr~cs^=+>zRxqXyfbHv{MInJ#z8_tOB5VzLyR?nfsjKbJVh z8Jb|K_?bHnU}zRUD&&^G$~g8~=;i|s28F4*yzzDK;;J7Hid-@6WMp$?Sj8BEdy{qIz%=M2sa(nz+?^jL`M__PZE|_M9TA5%SJ%9NyiPtsf6kw0 z$GAxb6(?&UdoR8=U$MA9Z+>dqe#->5C#U1XSF25UdF+oy%Xj}}nbXqOv;BhUgLHhJ zSHbhj>e!$W>_F&^Ss*?gfE<4TGG_0BdQZOEmWt<(7tQ2j>)_+d3=-=4ij7-0k+9YF zv^STNBlc+BJDBc$Bd|sD0>r_|9mG?<-Tg)M3j8{Lc`MGvLVjJqxL+jBhCi)-QyzVB zu-bU$u-@nfPg9ZM@DeTV0)KG#mrx+cnk)G7S$(h48BDF3y#J<_m&#_%$9LfYrTc{J zA!o1QnB74+2ms*P4NpT>EBe)4UMw-UZ{LOZ3T-JE}{>=VPr)e~xeHOs(D4PFf zVYydvAi->L`cwZM-OqynlBc1*so)N$XGP8@X}w6G-;VYf#gCAZ178K9nn34wA=%_nqeP)J z{~RyigYi{T@H_4m%@iDc@K zzLKXwI`fIV5{DH^Q?7=5k}j)MS}wqZ z9gniI@aoyGZrN+gi+iz2I@T)CDxxsigh2Lt$%|f#4zQqVk;s1lN zh11=4jZ9>Aq8JPKcB-`=oEJVRf)uf^bl-aC(ZNdn^S!Qj`*_AZmspQIX~i7zS%S=U9P`uYaZ22KQzFcD z40q#WO2-_1e$IC|D*j_*lPLsWFtZOZaT6h5>dLds=wc@OrjM}HiL!$;} zvGv!1aPqwoD@RV}j1q=5;w$K88}ki}}$6`KSvEEj`71ikU^pLmuxeJZQW~veG8`SE`wmO=<$GHy;jz=AQY%y}s zR!StF(dVbi=t_O^&Edo;meljqz-h=7;dx-uJO01D3_Q%dFt8&{jgc*(A+_n=h*7jL>?B@5%X5%TpR z*&I~cj`_{a)>QkB(}^TGZHO@*+v#Ty)^^hBWO4z?=}Gmt6V(gDb)EK%+w+5;#xLo| zsdbi{MkwNa<{iv!$d8U4 z_BS^LWgoy(yBvD=65`)$1)sGx8IHerFELqC8iGk$L>tPyI&~Ph{YzU4iV{bz z5^laOobqbS_kh+fGl0I$ z%caD2lKIQxR;|Ll(*)PiYATqT3#1Nr-a;MIocszJi*?;IR}BRzMlL>U5LPz{dO$_L z#OE3^MNO3eZxRV4uNaB#()_bt?xa_!lQTF3)xppK&w|?=?=gQMEm6IhTsUh=glmd@ zuBN*CARjzrE}B7P)VaCA75I&XUr{RZthvbE1~rvJT-*PRy4h&O#ufWW1MmL?uA0fI zyoV?r&pGgtIO}==6`>hdx~nS)N74AhEVVMcDA`g~cQUlk?W~>x6U+QvJ8!nprNRRX zVFh)1Y_1};yU`la^llRrvKAiJUTI0?FmkZK)Egh4^SJT0s=M@*(JbEhX0Dh%5ftBh z{|kFTOJyZD$mDvOo|ECt4sO;=Ue$awK_cENup*S7j8q02|59lkYX&OEg{I9%wliHU5@ZY8cIo)m5|s-S8uD^ToB7IRN+9_M-f6*|yVTK1IZxxGW4#HspB;q%MM#wV?^5$gF1BPBp zoVh&gqJ4^e*+iCWF2wZIP~9iF6>^PiJe6a2*=?6fq{TPRA+E6$y|ASo3-S^VdhBcK zzta}5Ef*>&eOpQ&_B%W>m`tJPwQg9^v1b`Gr82M_nS#=_(i_ zShCR(9k`_vM$0qww_0<=z0;t@TEU~L4n8^4Jif9FWE-ukHc>S&IE^1Wv%VQam=*Aw zIW-gfRIwu1BVDjm^|buOa5`lC=bdQ#6k3}3ik29=mOkmwSU~j`Kzf4aFMHhPN`6J7 z^M{VLK$P=P%dv)`RxViO<)g6yd&LS4pK;8p%a)#DM}RqUaK0Jmnbt?D3B=YwHlELl z7yGh+MKa1ne$)day#B_@k+nxV*1Mz^h9{asqF}SYX(S{{Enn%QE@b0=m(3N65C!6T zhREmITFP6jSAr>=^jrL`C(`hGLwO;{Y*|fT)bnW?xV&s+ zxd!j%&_aN%FwZU|qor65P0{;vFVCcKei$=CuQTpuG2xkTxc*8dqDv=Y4m~s*n&n6g%~RA zZWWdC+BzMHKn+QI=)hW4`cj5OQB5TITCi+FtKz!FvS@EM=xe>CT=zZo zZb8_ytQjeBj!bLn@4OBn_Sn_M*(2e@Yhfuc9)!}*Ym9&OaJpju7lL7;Un@Adt#8V? zmFpG$f(_*{i~rcF`io0(get|(x~xVNZd~wr71|ARfQ_7e{UY7xBmdKxnyKHJ9bi`p zC{bB!}aXi%AgVd z7T~TPY3O`6Q*772+QeQxOKgLxL*GQKN4C8@;gXA5Uc%qv^&!H~*x=B~D3-|%gvG)0 zq8?v$swpVPdP}@;RN}T)8c{!i2o^j$eFseYQB%BU;Li`C--}4%i2O@!f4_8!f82K* zahZ=ga$;&@2YTf@%ISvje4^2H{a)V9L0l~(C$)ZmhrN8;qSW(>%18?b%uvjyP+B)y zN5}pd;V@oesD6Gzr^JM6$BrD%h?A}nPc$7Q^q09G}e>015pSdSML6)PErjuT^p<#mDBnX-!V%Ah*f?DR*YDW{ZxQh!SL&6I#P5@t&|w^>ag$lVXDP~qKe zEy-x?e*ZV~f^*P6NqvuYPWXtV-E4eB2d|k-@GNlG+Pk|{MXrRS;?h}6#Po5 zyNnS>Ov(p+OT+WG8UXcd`>D9$i?_?#txF5{VZi0;O897jQ+EQG$%3&n=CO+IjKJOu9)RWOuF(UngX;Mp;rZaS6enc zSK0`ch4g?W?8K36vk2|bgqdw1nTXaUIex7~(}6pL_&zOUrljj=5m@?_tkhp*H1@*F z29##gOtLU*eNM_Bx&3Uy%KVQ)Z;%KeYKJ<#DaOpRT7=sct`7r8` z(BtVzs<1d*8F#w!LT!;#5K2F0sdESgS7&k3o0sT?z0490!}%hZ#yt7LZxsKpfb%E$DydO`{YFmE$BIpS*&TB_ zyd5+WB1Dz)C^oFUpveke^Umsv7nkfc;p)CM_N|3|5j8p=-VPo!e>1mccw?JOk6Rwo zR8J=fK}qxhe=_GQedv_ncem$dVjAopnRiK~{SjbZ-yJbMzfuMNawi26{lhu;5*GuP z0mJ?@&ckdjM`Z?KB`06S8cv*^Jh4cwL@`P7QYvMFJxhkkrspmzTlBL|NjQUOi-k-( zf^{MiFMBTMJs-#o9Kssze{12%M$|*0y;-fgi4@NY zYCEg$;Ffn@`6Xi+<}e%-6zL=1jjP2h`2w@3`Ko}WKvRg{V?b)>w?fp`Ny?Vu%}VZg zh0b1TiYUDRLY*-H_ngpiU~VQV6$|EHhx7Ycydq07S6rRqSDjNul2#J3Wg8+xW?{2CIGyC; zYt(#4+LBf{UdA&9mbedHPmzrpY}^bQa|dt4%@UQf@%**L%Vw5anFGDOHdyp0ZHvnH%R6H z(4>cp6*<~NP|uxWT(S`U*Z~KSXY4UH1K`Go(USXq@rC&?m zt#S^}FB<)j(_XXF?iq8RQbrl47}xz@Hh9{5ah09MCu;Ay@49GEIJvDaRzee24|FE3tdl;7IxuemnRf27wnm3{M6m!7A#$zB5g(eV4r=XT*y zOixKFQn?99ZT%D?$0Jv>Aq{Oun6{E5GuR?a7TfU^Jy(t3X_1btNsl$>mW`v^hh8?v zfnAd#D-II>nYczepDE5Ak1R7tmUaA@5(wWqHcUo#c{ZEZ?I9w|F4Ik3af?{0v_J5# zqAk50iU!n3eMCMjN!L?sW$Cy1m?)l%JT+leLQak}Hl9x(eSv0^42yr_$GP^fouMmT zgHJTzY=&Dk8JuzUzJ!o1ha&v;Xx1y0^CZX5U(f(Lc2QnQ`B@MUm84F#!;##lO&ge$ zl@I%pi~m&oyBg>|&C*R_vVri=f8o6qs@z@STaj0)AU3UEx}84!$$E+5O{erg=|D4d zYEYg!rLS|=9QnFdE<$6BUWV9{lS4O_FW4O&gN$32OeQ+Mm*aiL9oZr3_V#{Y1?A46 z?&^Mj#E+!m#9JokfiW$V1vRP<7I!z@{!uYm>B2x8HMn(7xy)v;=#&foHs zWsRmE>P*}SA0^MGi5T(ouVMDlH4hT*zJ2qpRSP;<%x#6}<)?-wymBf&JkEuN7l|^%EnswkuMje;-5jq1FLXelZ z7aBIrX4n%*7lYe+Ya_WjrtLJLp5ktX@6ALZoB@~^)isLdT`2dG^W|o z6SCk@4CACqUugtL8?<~ahKj~M5`Mf->6H^~8I?n7S3q7-ZJv|>V)=&>6ehS33||Z{ z#`hY+6RF!-;L)cEu$^@ELSqi=KJDZEAg8ZNIIBGy)p_KfR>3wq4RF0VIsA;jnJ zBB_;3?u5z7QN>zGuUWGJJS=A^P*AL5yB5?{1WRr;LqGhDv}QPy1UeyMhTll_!DvsKP51bIQNI$+eU=BhbWwF zGG9Whp&OKGX1#=_{;&-Ve0gb6ZP%!R1SPnhH&P^^xm>=z)AUI?aO=3iS4Nc@VO8qL8uJV-b4mq@5ZB_aA$cvXx1y*pP+k4;d zYmU(GM-dpc@HF0XtBL|#Q)&LqzC4T%PeG}$tGnQ(BW;?+mP7JoSb5@ejqnMqRSb6N zEEnt912uSC9S#vl85_(p|0E9hRfY5OpsSiyHeuHpa_q4NxXrImB}qrZc3VMi{OjKqQ3rl{s%iZX$>)QXe=6977Uad_YRKy3!Ip32 zBbV(K6v1M3PiYw{+4_v_`nCM#aCx}o)ArXKfQspz%SeHqz=R9mr5p)0~J6 zUkNFI_rZWc<9dp)prhePE(s3o2Cj)ibI+n5hJSJ$s{V- z+Tzj;`G>)+)eL9f$`8Wvb7VIeP^B$AvzSg&13C{l8Da<=uDB8X+YaI>g&N z<=uf3bX^&AKz??{Py5foW4A4U{BenT4#`LuG#}vsTUZ|vSc0fHeKXJXHM9Pcj8JNgQ8BlqEG)d?BIfnGpVXJBr4aar@{PMqq{jm zdY0K;9}TF{TGP!+(8{cE3}iudYy*bq;d~28_v%g%8xrZDP+sfF-U0{ z(3m``2_(KJo~~qDUjzk1v5@O!%{BtZHo8%9cc|K**#37`**@;5Tz!;X=$^lnUb2PM zD)IU8#m?)Do@~;&%SC6`QRWEyArZveelhU3wC^U8*1Khz{&NUM4pFgXc269Fvs)$F zQ#G=V#NV4K*;SSJY@vhnj2f#rvYCNS#44BGVo{ZL@(vHeWGQTyfmCQ;SxJW(e4J$? zP)?t?S)IkIPe7K;W+FZgR6ud?-)ugL<>(3?Y;thFYX08@e=h#|IOVkmx#MZssRr4@ z(Ij+F^WpxVLa*tKHURmnjX;iO0?Xh}Ern4CIM?fM6j$;VI27cBvdSx$7r{OLZUW%CV7c^_0pkbXH>ApJO&KGH}eWCqzZOgUi@+@6&wMi;S zxkxUpG0RhiCi@XYr_`1Au!c-+t(rvRzm-X+k#yD?MIryH?%Au1NgGD`_MamVFAbmo zgPOvnu<0*}_xWn*nS-P}{xRsOs5ZYpoWKT#C;kTN911B0f!-9Ye#RAv;w|m=Gn#L) zM0a%`bj%X2N4A1&q4?7lSp_?;Y-F-BSxZyk!f`$-cAF zj4akuYl~m!lV${p5Zj%pOY#@rz?N5}3%veFq@o9V#jh6w*q>HZIC%+1mt>-cgGrV+ zhD_nc99}DpGs?V0JmrH8pZKKvl;}=l0-FjIxE^8xoAF%uCz1@Tz!Pr;jQUGz4X>`I znVNk(rEvb->hlOa<=@V283$;@Su=Z;PFz_R+69QM5=63v|K4__oKpMMFNMux&{NZ3`>%H$uY!A1<& zip^@g4u`Tfs2OV=xsE3_06F?>VSd;qj5rG;1W|nNsvCdeXwAB;^LHmnQKJ z9>9$}f}L5CD_QOHF|~Vg%eJ4LzyB65KrwA_QpCq$A+uBe!1}kKyw%8SQYZf=Sf(od zXRO{n!KwYSq~ty5%I~Mz;WdU6HZ>zzCAr>^2h+M+1G@C#-S6t65I~ukxy=G%o4Pyh z{`MsagsNY?s|w5<26Fg>x|7h;tmdoQ_@1Vf(w3%VPL2`v=t0?&tEP9QMb&d0aY3+U z?5fnwDO}&6s5r(K97` zce=gJJf7_QNP-5884#?P)NCbm-1-5X^zGdrpoqa>T`K$am4ww6 zH)D>5*ugR3z1w$@{r2fG(KV=*RAANfbe?C``vB<>>j)71>5+J%ja5oxDA4%84u;QoG z?c;%m=|ZDF^^8Ma%(3#y^&{Mz?Wi~hv8nCI8W!c|5NG-aH(SXZ!o0W2V2?zBI!n!; z1q7i0QaI;VGTQEkTMyPhad|M==ZXypkoDeo6)>?W9_7rhPdey3@A~Oi>`F;%`hq}T z^$67!G5nd+L3n#@||FBn?}#T`rBh!9>xNM0_mCHYFUPOLh2$1=y`{xyWiWk2 zd`XS1DySZW&y(roHXOaBiRUz@ngs$$rY-*S9uha2J25yQ{L$~H3()9;ZuG}*sAyvy zEeSuPJ8k;Z;%GJh`f9JPbY!65gO)>{^Pc`xzwS*UuI8CZ+{w~7^iEYR3Fz#5QZ1NZ zw37a&UA^ma-iyBuCWHB2G|zd5X@|$XQ$j%VHOq`{(GWz%yfbke7RBKBLO9e#R~j8q z>`>2^zanyv5x}N@b%+XYnY{&foZgv&K_80A#?q!Q1Ich&w`Bgn8b^!4x0vUXouBX$ z{^2f_bE(?XrgJ!=+qNOYY@y?^Zd_p1+*{g-?Jz9@>G%7Wj`5rT|FV?&6%uhFsjIKM66Qy-Y4sbD1L{Xa?&!J^{Kwbg&9=N( zO_bUz6C23dl~KhFk`G7_P%3atMf}Tho%QP&?I&QH%%9)*guXxJZ?*xTKjGpof%6d} z!USvlm(#RR*Gg70X~4=)k``(7ciZb*oqes4EYOscOgWJ=hfHf%Bb4PhBCq~#=_c^| zH4qnl7;@LX){Tmns4$#udmvMA8>jpx_~3nBP%-Z8)Vih)3P9G9vPWGPoNw)W6X=2rgKGl-(!iG(9PeP0c(=&9HD9{q01* z?xd(#Tw;hWTc0tD$v7|;Ag1?5>~|7JOAif>daR-5fF+d!_@Qktf@rw+*<+^eB72Nw z*K$6Y)TM}$?nxG1&Wvp=;H7gM$HjWF^)HBq#$L1*tag;%?&{^qH(8t3#77@n(PKI4 zq_?LHWSJvw`q<1z^j%x%Ja|1ko)U@j;oH*=+>j+umb8pjBu5mK|C-XIk=1J{sW6AN zdH-QGycGJj(Rvj)dEE9mhK>`na0J5q|GmuWbDkS7T>OyEbq!gLdCs#>3K|uOWf8F= zZfu924xpnHJ^dID-W?M9aZFF1(W&7-y!!*Ue|@z_eFug6{@Roa zXo3*Q0c_=ehM;{`qx4ag-=J#6#pijzyoB=5y%b7c%!VCy1%?y(hJOxf(=Hs~tf*6d z(Y>aShsTY*gbX>}Ns53bpg@D`xipYjF|MSssIVZ)YaadT%yI9asUqze#*dBOREl@K z4!Ry3c9Gi6#MIb@8ie)%CJ_cAdH29t#lPo5{j`*Ql5fr0>Km2s8J%)qMy2Ctrx3Q; zHy&v|Fs3zdj4*h`Hk)4=yE9Qz-~HFzXZ=Udz_e$_N-TLZFb_Ha;}^1!mTx>CAw@e) z;nEh|c5FP+^~C6}louFIENISEy~)v->O*7taueh_@jau6YCT|53#zDQi$9~N<2%-= zQ@8@~HqFmQHrdST&t-a}v|3+0i z56Nll%y8Oq6mD+xrII>Q{|=L5;i_3)5HL^O_}Tgb82>-ajc{@ zwk6u9nJiXVO2AFmXKp$Q3eUuhT7=@p+^a#f6bl%N8`PZBo&`Vc3vDo-R1vQw^KTlA zM-Jkd&T0yGwY_8ISY{g(pfe0@7!6M5qKjL}0V6ujFp^ATR5KSh8jP=W0j(K4?l;)t zf8|}elXl{8x*v$!-2F0Fu41>E)@bnrSvGj!P=1ReOA$PwvGzQLp3WHSdskg7kPqwz(h{cWjjbem%_wo1%oXqFe$#BBDd zE-(z(m*%j&X_eW?oYJvAM|56wd_K6o#pXE@q3ZoCHNsUrx`erJ+9v&4MxoQDv%IUQ zs*Q6<*?Dz>3D>>32dATI8&BtGP>j^FiQ|h)t;=d0$!PO3=s&O+MwjtEyjgM894#1IpeoO-N zn;hT8ciT3@{aRtyM(+-~|LKn~0H?0OgQ9ge4D0OcS35+~A)Qsb(aC9bEFO)x9)T<< z0JEqoX<&SDAKrK_T zBkTxxl*aqrn2K8>i}e7JvM@}@qv8>!9F%t7Uc=#-VFFq=vPl|zlpdka=#z0j6qe85 zemjgtpJKlPI=9GM*jaQD7zEhxL(DAodDk7ckk$p`{@);3v!GKf%F*adr$oGj^0-|) zz`g5E1vHeJgoF^LchXRFhfEOr_plR4Zdtjj#Jx3)GPtL+qQxQS8~D0-^D~ta)y*)R z-7(VRQ!H&Z$4W^%7x@F+g`aUP`j=zCxOP!D;jg0S4KZzES-~OT!Hk38k+ksHCt-M_ zWM*KA&8NSXS#-Z`0qbx&Ysk$t25+-b5$?vS#~tHVPh`~!UKlX!NJTIKz)!TcWA-j z#!Iwy@hZSBf!|-(N|Wr+M)y|l$+-)yM;gvH&{dL8K)2;u^D999-GjR>tF=l$A5%CnFb5DMAPMNCj; zwk2;av)}q5CL@5dV{_8C9(y@42~Py~8EGWP2q7$Ai+ULC@moSzKZ7s~hF$LfkvKXR zH=d!7GL4}(5P94IF$gUhoza&S$O3~1a6L%hQ+FL{!l*11hS76zTt8bb>6)nIQ5p14 z73WG~m*7Glc^rq_c7{AV8jbaC!`M9hTbi@I6vY;@p}v{Nm$l^uhbRjXl^)r(G=!hL zKu{ZL-=Zynp=Zz#-$;X9k2cRK%Rmy-FTpN_>xl&@27>SsxqweSZ{7!Mnz154udg0i z1PA@8qRD+I4Z%CL*NF`CaJY|!^s(&c|9Ur>V}7);s?KjM`3X&`Vq2#d^2(c^oFle? z36i0@%YXFgV;d=yBn-R3j~S`Qjw#)vD`b{8APH_6GiFL+XC=3B zbXDC=<^w7ZhuF|-iA)xpe4v2)%S{hYaOs33v-&76D1g#Y)%vXEOVeTcqyvwD9Ba1> zPEz<&)1r?6wGsUnyx=dmVHRnvwcCU?H1 z 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�}5B6>&Jck#4ckp;Ok# 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�WX!7()APgI3Q+yq!~7 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 diff --git a/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl b/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl index 807df1e..8174fcf 100644 --- a/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl +++ b/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl @@ -1,4 +1,6 @@ #ps1_sysnative +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ $ErrorActionPreference = "Stop" $SetupDir = "C:\AOAGAutomation\DC" diff --git a/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl b/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl index 64cf5ad..f16dc22 100644 --- a/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl +++ b/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl @@ -1,4 +1,6 @@ #ps1_sysnative +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ $ErrorActionPreference = "Stop" $SetupDir = "C:\AOAGAutomation\Windows" diff --git a/automation-mssql-server-aoag-sample/terraform.tfstate b/automation-mssql-server-aoag-sample/terraform.tfstate deleted file mode 100644 index 90daf99..0000000 --- a/automation-mssql-server-aoag-sample/terraform.tfstate +++ /dev/null @@ -1,3541 +0,0 @@ -{ - "version": 4, - "terraform_version": "1.13.5", - "serial": 2478, - "lineage": "6f1489c1-58b1-4ed7-debe-29cff2433645", - "outputs": { - "automation_artifact_bucket": { - "value": "aoag-automation-e06fd2b8fa2f", - "type": "string" - }, - "availability_domains": { - "value": { - "dc": "RAVo:US-SANJOSE-1-AD-1", - "sql1": "RAVo:US-SANJOSE-1-AD-1", - "sql2": "RAVo:US-SANJOSE-1-AD-1" - }, - "type": [ - "object", - { - "dc": "string", - "sql1": "string", - "sql2": "string" - } - ] - }, - "post_provisioning_notes": { - "value": "Terraform apply completion means OCI instances, VNICs, and IPs were created; Windows first-boot automation continues afterward. Wait at least 10-15 minutes before testing, and on a fresh deployment allow the DC promotion cycle to finish first (often 20-25 minutes). Verify DOMAIN_READY.txt on DC-VM, WINDOWS_BOOTSTRAP_READY.txt on both SQL nodes, WSFC_READY.txt on SQL1, and TASK_5_5_LISTENER_READY.txt on both SQL nodes before using the RDP IPs or testing AOAG. DC-VM first-boot user_data configures mssqlaoag.demo, creates domainadmin, creates sqlsa, and creates \\\\DC-VM.mssqlaoag.demo\\ClusterWitness. SQL1/SQL2 first-boot user_data joins the domain, installs SQL Server/SSMS when enabled, prepares WSFC/Always On, creates the file-share witness, restores AdventureWorks2025 with NORECOVERY on SQL2, creates TestAOAG, waits for synchronization, and configures the native AOAG-LSN listener on port 1433 with 10.0.20.30 and 10.0.30.30 when auto_configure_wsfc is true. The next manual step is listener connectivity and failover validation.", - "type": "string" - }, - "primary_private_ips": { - "value": { - "dc": "10.0.10.10", - "sql1": "10.0.20.10", - "sql2": "10.0.30.10" - }, - "type": [ - "object", - { - "dc": "string", - "sql1": "string", - "sql2": "string" - } - ] - }, - "rdp_public_ips": { - "value": { - "dc": "163.192.63.56", - "sql1": "155.248.211.55", - "sql2": "170.9.30.132" - }, - "type": [ - "object", - { - "dc": "string", - "sql1": "string", - "sql2": "string" - } - ] - }, - "secondary_private_ips": { - "value": { - "sql1_agdemodb1": "10.0.20.30", - "sql1_agdemodb2": "10.0.20.31", - "sql1_wsfc": "10.0.20.20", - "sql2_agdemodb1": "10.0.30.30", - "sql2_agdemodb2": "10.0.30.31", - "sql2_wsfc": "10.0.30.20" - }, - "type": [ - "object", - { - "sql1_agdemodb1": "string", - "sql1_agdemodb2": "string", - "sql1_wsfc": "string", - "sql2_agdemodb1": "string", - "sql2_agdemodb2": "string", - "sql2_wsfc": "string" - } - ] - }, - "sql_data_volume_ids": { - "value": { - "sql1": "ocid1.volume.oc1.us-sanjose-1.abzwuljrq5jamfnsogm4vnml4vmjbsn4xbwwzfkaiohhyxqpjr44dok4pzaa", - "sql2": "ocid1.volume.oc1.us-sanjose-1.abzwuljrjp4twnvphag4u33stfimirqhtt2onjxrk2tmgkiqxyj6lxaf7raq" - }, - "type": [ - "object", - { - "sql1": "string", - "sql2": "string" - } - ] - }, - "subnet_ids": { - "value": { - "dc": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaqyaalgafielqf5cpgvvtkbq4qmb3xtix4n6m26ojww3nwuuu5axq", - "sql1": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", - "sql2": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha" - }, - "type": [ - "object", - { - "dc": "string", - "sql1": "string", - "sql2": "string" - } - ] - }, - "vcn_id": { - "value": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", - "type": "string" - } - }, - "resources": [ - { - "mode": "data", - "type": "oci_core_vnic_attachments", - "name": "sql1", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "filter": null, - "id": "CoreVnicAttachmentsDataSource-338867866", - "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicro5jzzgfjuljuqrgeudvsdt4husgjp4zcmpgn77vfepa", - "vnic_attachments": [ - { - "availability_domain": "RAVo:US-SANJOSE-1-AD-1", - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "create_vnic_details": [], - "display_name": "", - "id": "ocid1.vnicattachment.oc1.us-sanjose-1.anzwuljrfyadjyicqsnsrqrej6s6mev2uumfqdj6ipessy4fsmbuhfuc2wza", - "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicro5jzzgfjuljuqrgeudvsdt4husgjp4zcmpgn77vfepa", - "nic_index": 0, - "state": "ATTACHED", - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", - "time_created": "2026-08-10 12:05:30.326 +0000 UTC", - "vlan_id": "", - "vlan_tag": 933, - "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrvnj42teyjohtlqmhskrstpe46xeei5dbopezladpc7cqc7hgbzsq" - } - ], - "vnic_id": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0 - } - ] - }, - { - "mode": "data", - "type": "oci_core_vnic_attachments", - "name": "sql2", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "filter": null, - "id": "CoreVnicAttachmentsDataSource-2580728821", - "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyic7cfzmkslnkhtpv34tzzquvaqlqpj2vpyw74sq5uo3wpa", - "vnic_attachments": [ - { - "availability_domain": "RAVo:US-SANJOSE-1-AD-1", - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "create_vnic_details": [], - "display_name": "", - "id": "ocid1.vnicattachment.oc1.us-sanjose-1.anzwuljrfyadjyicy7n23sxli7zdyzyg27zj3w4xtaoembvif4ruqdku6dma", - "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyic7cfzmkslnkhtpv34tzzquvaqlqpj2vpyw74sq5uo3wpa", - "nic_index": 0, - "state": "ATTACHED", - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", - "time_created": "2026-08-10 12:05:30.304 +0000 UTC", - "vlan_id": "", - "vlan_tag": 1316, - "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrw2cjpuldcrm6uo3nluplqn3xhuk7b2nrbr7nzgwoupggar7oeiiq" - } - ], - "vnic_id": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0 - } - ] - }, - { - "mode": "data", - "type": "oci_identity_availability_domains", - "name": "region", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domains": [ - { - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "id": "ocid1.availabilitydomain.oc1..aaaaaaaavi2wyd6rjjffu5nzgb3gjq4thy46k7sgw5ibh7mu5sq5fyie6t5a", - "name": "RAVo:US-SANJOSE-1-AD-1" - } - ], - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "filter": null, - "id": "IdentityAvailabilityDomainsDataSource-429229913" - }, - "sensitive_attributes": [], - "identity_schema_version": 0 - } - ] - }, - { - "mode": "data", - "type": "oci_objectstorage_namespace", - "name": "automation", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "id": "ObjectStorageNamespaceDataSource-429229913", - "namespace": "idzxvkz1zdug" - }, - "sensitive_attributes": [], - "identity_schema_version": 0 - } - ] - }, - { - "mode": "managed", - "type": "oci_core_instance", - "name": "dc", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "agent_config": [ - { - "are_all_plugins_disabled": false, - "is_management_disabled": false, - "is_monitoring_disabled": false, - "plugins_config": [ - { - "desired_state": "ENABLED", - "name": "Compute Instance Run Command" - }, - { - "desired_state": "ENABLED", - "name": "Compute Instance Monitoring" - }, - { - "desired_state": "ENABLED", - "name": "Management Agent" - }, - { - "desired_state": "ENABLED", - "name": "Fleet Application Management Service" - }, - { - "desired_state": "ENABLED", - "name": "Cloud Guard Workload Protection" - } - ] - } - ], - "async": null, - "availability_config": [ - { - "is_live_migration_preferred": false, - "recovery_action": "RESTORE_INSTANCE" - } - ], - "availability_domain": "RAVo:US-SANJOSE-1-AD-1", - "boot_volume_id": "ocid1.bootvolume.oc1.us-sanjose-1.abzwuljry7gkeqnmxlrpjcvz6htx3rl5rawmnejhikzgnzkujaj4j3v56rpa", - "capacity_reservation_id": null, - "cluster_placement_group_id": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "compute_cluster_id": null, - "create_vnic_details": [ - { - "assign_ipv6ip": false, - "assign_private_dns_record": false, - "assign_public_ip": "true", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:12.227Z" - }, - "display_name": "DC-VM", - "freeform_tags": { - "Domain": "mssqlaoag.demo", - "Project": "sqlagtest", - "Role": "domain-controller", - "WitnessShare": "\\\\DC-VM.mssqlaoag.demo\\ClusterWitness" - }, - "hostname_label": "dc-vm", - "ipv6address_ipv6subnet_cidr_pair_details": [], - "nsg_ids": [], - "private_ip": "10.0.10.10", - "security_attributes": {}, - "skip_source_dest_check": false, - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaqyaalgafielqf5cpgvvtkbq4qmb3xtix4n6m26ojww3nwuuu5axq", - "vlan_id": "" - } - ], - "dedicated_vm_host_id": null, - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:12.132Z" - }, - "display_name": "DC-VM", - "extended_metadata": {}, - "fault_domain": "FAULT-DOMAIN-3", - "freeform_tags": { - "Domain": "mssqlaoag.demo", - "Project": "sqlagtest", - "Role": "domain-controller", - "WitnessShare": "\\\\DC-VM.mssqlaoag.demo\\ClusterWitness" - }, - "hostname_label": "dc-vm", - "id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicdbenpxxifme6zhoizya33w22xfxc6dliunl5mpk5ix6a", - "image": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", - "instance_configuration_id": null, - "instance_options": [ - { - "are_legacy_imds_endpoints_disabled": true - } - ], - "ipxe_script": null, - "is_cross_numa_node": false, - "is_pv_encryption_in_transit_enabled": null, - "launch_mode": "NATIVE", - "launch_options": [ - { - "boot_volume_type": "PARAVIRTUALIZED", - "firmware": "UEFI_64", - "is_consistent_volume_naming_enabled": false, - "is_pv_encryption_in_transit_enabled": false, - "network_type": "PARAVIRTUALIZED", - "remote_data_volume_type": "PARAVIRTUALIZED" - } - ], - "launch_volume_attachments": null, - "licensing_configs": [], - "metadata": { - "user_data": "I3BzMV9zeXNuYXRpdmUKJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICJTdG9wIgoKJFNldHVwRGlyID0gIkM6XEFPQUdBdXRvbWF0aW9uXERDIgokU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgIjAxLWNvbmZpZ3VyZS1kb21haW4tY29udHJvbGxlci5wczEiCiRMYXVuY2hlclBhdGggPSBKb2luLVBhdGggJFNldHVwRGlyICIwMC1sYXVuY2gtZG9tYWluLWNvbnRyb2xsZXItYm9vdHN0cmFwLnBzMSIKJFdyYXBwZXJMb2dQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAidXNlci1kYXRhLWJvb3RzdHJhcC5sb2ciCiRJbml0aWFsVGFza05hbWUgPSAiQU9BRy1Db25maWd1cmUtRG9tYWluQ29udHJvbGxlci1Jbml0aWFsIgpOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRTZXR1cERpciAtRm9yY2UgfCBPdXQtTnVsbAoKZnVuY3Rpb24gV3JpdGUtQm9vdHN0cmFwTG9nIHsKICAgIHBhcmFtKFtzdHJpbmddJE1lc3NhZ2UpCiAgICBBZGQtQ29udGVudCAtUGF0aCAkV3JhcHBlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQoKV3JpdGUtQm9vdHN0cmFwTG9nICJTdGFydGluZyBEQyB1c2VyX2RhdGEgYm9vdHN0cmFwIgoKJFNjcmlwdEJvZHlHemlwQmFzZTY0ID0gQCcKSDRzSUFBQUFBQUFBLyt3OC9YUGJOcksvNjYvQXNKcXJOR2VxeWIzN2V1cjVKb3BrcDc3bkQ1MGt0OWVYWkJLWVhFbG9LSUFCUUR1ZTFQLzdHM3lSSUVqS1NwUDIzUS9udTJsc2NyRlk3QzcyQ3d2KzdhdmVhUG5qNWRWOGViYnNUUmxkazAzQlFhRFpOUDcrQW1HQjVCYlFtbkFoVWNwMm1GQ1VNQ281eXpMZ2FNMjRmais1bXJ4QUdiNFo5WHFqMmNseXVqaWJyODZ1TG51ckxSRklKSnprRWhHQkNKVkFKV0VVWjlrOUVwQmpqaVdnTldjN3RBTE84WnJ4SFJMTXpaUmpJZTRZVHdYQ0hIcVVTU1FrNDVBaVFuMTRpU1dNMEpsRXZLQnFFdlZrQXdKaG1pSU9HeUlrY0lFd2tyRExHY2Y4dmljazVyTElrY1RpblpxUFNKUmdzekpDQzBCNExjR3ViSVptUzVSenRtT0tjTVRoaGpHcDFubnlyOG5GL1B5a2w3TTc0R0lMV1RhQ0Q0RGlrdytRRkFwMnpqS1MzS1BuOTJvWktENGxHYURScXlkUDQ4UnhPVGJyakN1T2puTHhGTVV6L1hpUzdnaWRXeGJNTThXUXIvOW1SbUQxcW1UUDM3L3VmZlgzWHUvbGRKZG1JSjhUbWhLNkdReGY5eFIvZDRNZVFnaTlGSklUdW5uZE43Z3Y4UTdRTVlwMlFyelBNTU9iVVFvN0ZoM1ZZUzlCM2hBbUhQREZjdm5QY3lYcUVNNmo5MW9BVjdBZW5TSDA4bjIyQkg1TEVwZ2tDU3VvZEdQRSswemdFUHFjSlRpcm9XWjVFZ0t0TU4rQW5MSmRYa2pnamw2dHdnMWFremtudDFqQ1dhNWduajRaUFJrOVZmOFBBWjh6Sm9Ya09KOVJvZWcxa3ovOTgzK1AvdkNuUDQ3c3YrR2dINGlrSU1RY3k2MkNubzVmVGJOQzZaOTkwUUcvM0dJT2p1ejlJNVlnaTN4R3VFV3Z4REVwSk50aHBYS3ZadE05c3FucDBtTkMyUWRjeWFRVjZvN0laUHU2ZnkxZ3FiZnJFaElPTW5oN3llZ1psY0J4SXNrdDlJYTlYditFYzhZbmlkNDdITmJBZ1NhYUkwdko4cWpYWDJIeHpqRkpyVHN1elpYZE1kTnlIMFc5L2hrVkVtY1pwRXR0ZjZ4SS9zRUlqZlh2RlNlangvZGsxT3N2bFZIWmgwVmJuWkg4SUJXd1h2SSthRytEeEc0amo5SWM1MFFOTDZYeE9DTHhQb3VGQVc0aU9tZWJmV085VlNlampHMmlYbjhCT0wzZk4yWjJkVEU1dTN5ek9Kbk1mclNyL1I0NFdSOHk2UHVUeGRucGo2T2ZCS01sazA0VW4vUDcwaHJGeWh6RmFSTGZ1QTBZM3lyK3o1bVFjMmVIbHlCbHBwakRhQ3JRTWZyemsxNXZYVkN0TytnSFRHUjh5bmk1Z3cwMCtxZzEwRE9LV2lIbjZtK1F3QWNYbUtaWU1uNC9mRjI5ZGpvLzMySUJSd2NQSTFTcXZhcnAwMCtIUGYzUEQ1eElpTS9aQmtYTDFXUjF2Undqb2FnamRCT2JPWkF3bzQ3ZDhDZ2NxTlpINkFZNUFEZEN1K01TaWRZSTR3Um5sMHZqSlpGa1pqb1lHYXhMNVFqalpRYVFvOWloSytsKzhKbGF6dSt6c1dUUEJRaUJOekRVN3k3aExqNlRzRVA2djZ2N0hOQ01jRWdVazFDb0cwcFNDYUNmMFZVaDQ4c2l5elNLU1pxcTdhM2lCVGZDNlhMOFBjNEtRSVBvNDVPeGVFQWZuejVFS0Y2andRdVE4UXhMR0I2aGloeC9DUk1oZ010NFVWQks2T1lrQStVR1VydWVQa2xWYkNLVklyNWNRbEp3SXU5SGMwNW9Rbktjalg0Z05HVjM0c3hDdlI2UFg0Q2NGcHdEbFFPejdIN3VvUGZqS0IrOEhvOHAzQTNLcVMwYUlyUnRSY2NleHRHWk9LTUxsc0ZnRCtMbkJjbWtBWHM5SG1za1JHMEF5WGlKZW5rdmxHU09xd1dQdEUyTjRUMktMbGRvY3IzNjdtcHh0dnJ4MWZMSDVlcmtJbXJvcmVXZmlnMzdnenFXNFFpZEdlS1B5MVdjMlNtUHk4a3RTckpHZzFnRmRZTVNObFlLN01DR1F5c2E5U08zbk4wcGw0NXc2ZTNRcmhBNjZFUGdaTW00SWt2N0o0UEU2dmxEVFJHV0lPT2w1Q1NSa3lScjEyZWxhWVpudjBNa3dVa21kSFNubjZOdkNOMENKeExUQk1ZY2ZiUGhtTW94UjVGaDJYaHdPb3hRVk9PL01BODlMYTlwWnByR211Z1huQlg1QmV4dWdEKy92d1RaWWJNY2xScjhxUG5jWVBEdFRuK2pRQmNnaWt5aVkzUkdiOWs3aUM5MTBMUlROaUtlOEUyeEF5b0ZlamFJTWtXTUhoSWRJVHNOc21pUFVQUU5UdE5vNkNtR3hYSlZ5THlRS0Q3SE41Q2hpSUpFRlNhbExSclRjQnloMklMNmRJM01NNTlnQzNXTUJpMkFLUDZKRVlxaXQ5VFMwc2NaVis3TDBOa1lkZktCeUNsTGphNC8vYSsvL0hXb0ZLN2szcUEyWmJ6RE10bWl5TzRYVUxHSkhoUWRNc29TZ2pEYUdWcllXcWNUaHFYRGFnUFVTZlkxM3R0eGx2RXFoV3BEYkxqNnJVdGZDTjJVV3EvK0M1a0FQVlU3THlpZ0p4M3phcFUwTk52cHhKYms2QTV6YlFDMHUzR2tVVXZHQ0ZHUWVxL0FCNVZXcVRuNjdYTVBXemZubkRNSmlZeDFTTG1DRDdKamc3clh3OUpmYUVjVEt5dS91OG51dFZXelJzQ1pUS01sTi9jU1ZORHdVZzBmbmRDRXFZVHA5WGg4dlRyOTYrZ0Z5T2NLWUJCTzBZY3lVbmxzWkMyeUtaMkRYaGVrTmVjdzVmZTVaQnVPODYweTZCWmtoaVYrUFI3YnY2dU5iMGl2TnJ3anlUTUI3WmdWUW90TlJVOEp5NVdIMFBLOXdNbVdVTERHUXVPWU1ub0xYTDRlajFmc09SYnc1ejh1TmRjSDFTTHFudldhNWdkS3pZMy9UTWxWRko1eXRxdlQyRExINTRwT0xlcTVtL3N3MlpVcytjMmwxN1hBVW9ibGF1cEN0RHlOTlExZ29GZXNTNkFhcUVwS3F5R1daemRDS2d2OGNsRlFTWFl3MHNrZXkyMWFJMFlYbUl1dERvSHE4ejFmcmhhREZvU1MzM3RHNmdDMGM4bFh6R0F3T0JWRlE4OHVyb21wUTMwUzF2OEZ6azQ1UUJObExjREF0eEFiVFRySWVuMkJnRm5GTkVIQTdPV09MbVp1R2xmdlY0OHFPMG1KdVlxV0dyaGJGaDVrci8rZkxHaExwTDg4TTFwbXFiRkZwU1lhbjZ1WFdKWm90OXhWb2ZHZHNxOVFQcEZkWTh1QkhHVEI2U09BRDFVOHNnSWhHeUwyS2JFSTJ5eCtYTE84SmlIYm81SUxmRGNNcHcvS1FpWWhDQXBKYldsQlY4SDBEZ3VrNjhaRm5tY0VVcDBPVSticXlMYldZOHFwd3JBWFBoQWhSUm1hR0d0bXpCMDZSZ3ZBYWZ3ZEUyYTF1MXlpcUpTcGpvZXErdXFyc0M0YUtSZm5XemJQdTZEalIrMXY3WVVqcWJkUE8vSlN3azROekpOUU5TdjliVlBTWU4vT1lJMkxUTllnL1lCMmZ5V3hxZFNoc2ZBWHNCOVhROGtQQU85UTlaWU4vQVdWdnRVSXRhbS9Ub2ZiT2R4VSt2MnJmVXoxbC84OGQwV2lmWnJ2MTZ1OEVkak1XQjVCTkdiN0ZuRW9oRkpVbGZhVU5OUTJYRm10akhxSHFVTWJZMnJxM1FyUTBIYUpOK0FaWUY4UFhJMjNSZml0a2kxcndscWNveFVudTRFZlkwUWNLTjVCMUZKK3FJZ0lOcGgrOWFzNnhZcHE0d25ORTkvTitXTFg3d1JJSkptRmpGb3FnL1VLd1A2eWhTNFBlRkV2dS9rSkV2bnk5ZXUrclFDZ3FuQ3haaHh3c2tXRGZrWW82RHpUQVBraTBvYUhGbG1tMDFrREdTdDlqL1R2a1g0Y1JmNlFZSldHSmpNMEtvRWVXbUs3WnVua00rckthczFsNGFWV3I4azUzQkpXaUs1RGtmYlRFak8yOHlCbGFnODRvNWFRdXM5Y3JlVjNaUXIvckNvSy9lSHZ2M3ZxWlM2dWZIQ00rdWVUNWVya1gyZXI2ZFhzWkc5NDNVblgvc1g2NXVobExwSkNTTFl6S3ZQNldZWDl4Q1BKa1ZlK3RHcUoxRXRXNlZoZHNpZFVGQnppNm5ScmtpUWd4Sjd3dGNYL09ZRHgrRXlvVFhqRmY5Z1NDY3NjSnpBSVJ1MHR1OWlhTHFyYnloWkRLOTZSUEZlV1ZwZmFRbmloekVNVUdMTU9DKy9PMHlwa3RScW05aURoZ2F3S2VzcVRHclNZelpWdkFDRnNrYmV2eVRtNDdsaW9NT2tvcUoxR1I2ak91Q01VZlpPeERhTnVsY2wyTTZZczBwVkpIVGlPNzBFY1dLQlVVOWJYNlpjblBmSkhubkV5cFR2dlhYYzl6WHJyVTB3eVNKVU5MUS9kMm5sc1BHdEhHYTF0eW1IZFkydlNBaUhGYlpMVE5ySE9hSi91dm1MTXB3b3VtT096QkhldzhQcmhlbXNGNW1vWnRmcHl5U3J2ZmJjUXJTcW4xNzhPVDNDYVJwL01tOFA1RXdoZVRWZlhjVzlkdnBiWCtGU0gycytxZHIzbmdLVlQrcENteDlTK2JXNm4rTzdud2ZQYjVhL2RSeXV4ZmhLZTAwUW90aVh0Z01SUHdMaUFIWk9BWmlEZVNaWWpOZm9SdkhWSHRMQk5TN0ZhOEE1V1dMeXpEUDdNZ05DWTVNU2NXcHErQ09VUjUwdXJRYnB3VVVxOERxZHRTT09oQ3JkYU9pMXFybTNLOG50TDlUbFJ1WDFtQ0ExUXpVQklRczNKWG12M2hoZWZXZ0czVm1OYWhqcGZ4RGNDSGFOblZaUVd4WmRzenRtYVpCQWRlVS9ibTdocUlMcWY2MjNVTnQzYnFBYnB0Vnk5amJ3Q1FRRG1kMXU5amZ6bXExWjgxZDRwa1phUGdnSHRIVmR2by9aV3JHQndzRkhmUm9IK0J1QXRyVmh2bzVZR3JYQk5YbHVXV2svMVp3RG9kMWk5amZ5R3EzYkFxcldxZ2k2ZmhYeHlPMGV4eHY0ZWdBUzFxTG9BYTdVclk1dUc3cEFTbFFHUjJlUEhlaTh2a3kya1JRYXAydU1tOEhVZGhJQ2lPYnNEdm5TdGhWSGxYb3dxRzN5U2s4MUduM1kyRUs3c3EzZ2lsNmJqVVE4cHpVc05HTVZsZjFYVmFSVmJtaHpWc1VOWlRodHJyYkFuM3hHS0Z3VTloMXZJMEhka3N3VWhPOUpTdjUvQWtnTXA0dHJlbWJiTWtvZ29zSTA3ZGd0TnkzaE4rU2NzUzBlNmZEZnVyM0VtQU1WZTRvR1dKQU1xczN1WExBVTVBcjdKUUxuWVJacmJxWlVWVXVadHpsa09YRHBESEgzM1ArY1g0MWZtSU91VmJSV3hMV3BMa0svc3I2OVd3SGNxVjBLbXl6QkNzYVl4V3MrQTNxK1dVMGFwT2ZoUlBzUWs3RS8wdkphV1M1Q25oTU1kenJKRmtRR0taMFRrR2I1dmRVYlIvclh1RVpPWkxVV0JjMXZicVJFdk1oRE5Rc2NzbWRFd2hiSXRnTVpvNllhellWbG5WU3hRUnRvcmpSc0l6NkU4Ry9nRzRnaEZULy93bDVGdTVJejg0Z3NvMFZhanZrSXpwbE9ubkJFcWRWMkt3aDJhVFJHV2lFZ0IyUnJkd0pweDBBMVR1bC9abXZZUldtMEJYVTNQUEdRY0JNdHVnYU4zQUxscGs5YndLcVhWSlF2RkxwU2FiR29OV0txSTMySTBUZzdUMU1PM3I5dllXM2l6TGJWV1JYd0JVaW5FSk1XNUJJNStSajlzZ1VOOHBkTmw5QkgxMzR5V0VzdENtSWFmNnp4Q0QraG5kTXI0Q1U2MkpWeVZ2ZFJxQkU3YloxUk1NNko4dDZaZ2txWmNKY3F4Tm45cm5NQVpUZUdEbW95c3phOXhEUkpFS2VxdWdzd1NwT2xic3hxaCtHVVgxUi8wMzVoMkkxMlNHcFJhWTB6dDEwZm82MkZZdzFFL2llN042Q3dCcWRtS1BGVXhxdXR3YUoxMGJINC8rWkJBcnFRMGNzMW0rK3RHdHJvd28rS1U4VHZNVTBYeHgzcnAxOVlZVFRKaEdXMFlWNDdadjMrN1NncHFiYmFKT2RGZDRycWxYdThHZkl0SnBuWDFIcVJYVFZpWE03cUVWV3Z0NkJmVUV0VHM2MnJScHJzK1VSdk5OdnA3UllxNnduWHg0R3p1ZE83Wm9ObVRqYUtuSS8yL2FLajkwNEl4K1IyaHN0M2NTNVpYb1dvR21GY3pUbkd5ZmN3N3RIQzc3RXRPdzZWTHBxd0krbjU2V2RrUEpldHB4b3AwbldGamUycnRPNkhXQmxMdEVKTlQ0VWVVdGE2aXVoTHUyVnc3YTEwa1o3dWNjUmxmTU9WaTBVVEhPbDRPMHNsYXBkcVRtY0dPWXRkSDZSK1lPU09CVFB2Wmxna1p1aXZsY1FJWGhiejZ2K1FGN0dHZEE5TmEwTEorMXpoc2lmem9DdEJvMENmb0dEMzlGdlVKaWpOQWYzMmlmdjM5NzhNYWRNakFQUVZuTzRlL2ZDS3F6VmpQYkwyZGh1cnBiVXRic0NMWU9CSU9PQ1VxNEVWWVN0amxVamRzRHNkV2FsN3FTRVRURm5nN3ZiVk4rT21mL0sxdjAzMHpjVXBTamU4R0VyYlQ3akM5UjRRaTNWd1J0WnJGS29IWjEyZ1NGRngvaVM3MmkxeEYzNDJjNlprbkNyUHl2ajRRVXl3OXR0cHI2bWJuczhuOGxHVEtpRVVETWJtd3VaTWFlQnhpSFVZSGFIVm9VdXBPb1NURDF5WVY2MXQ2M3RaVXhRU1BqU3M1QWRBUzd6eXFId1ZYejhwdVl6TkNjVEdBQ280aFVTbXRFTkNGa25xL2hpK25XMHczNElaTzVEbmJNTGRuRzdDWVVpYnJJenBBM2V0THVBVis4aUVuWEFVaGJRVE13TnhZVTZLSjNNMDI1Nmx3clY3YWF2eDFtY3NkZGRvS1hKSFRzQ1V6OEhLVFdjaStobzMwU3JjTEVDQlJmQWwzVFc1WEp5SW1QeWd4NzhYWWFiZXZhY2FTZDc4RVM1ZW5yQzNYWmtHaEVMcm4rQlJkT2x6b3YwU1RtRnpBKzRJb04rKzVsR3FGYmVRZXZLNVBJUDNYMlRDSDdmblAzQ3pYT3Q3dTNpek9BOXNqWU5PS1RLaUsrcXdEMVF3VUt1WTdVY2xIem9rQTcyRlEzRDNxS003VzR1WStFV1VIdWJIN1hxWFhGNkVoSjE0b0Z5VjB1MUl6V0tuNy8yWXlWamZFTVlIM1RkVjRxQjlaR0svZ2lBeGpqRW1hUGtxeGVTRSt4UXdFZ3B1a3FWTDdjTHpLeDB5UGUwditGVmk5QUdNRFYxZTNleXYraDdLNlpveFUzV1B2c1ZodHp0a1djZ2dJYTBQVEkzVE9rbmVRWGhYeUNMbU5ZM1psV2ozdzkrb1JhbXlnd0syN0l3OW53WFN2bTN0WVRsZC9IRXl0WDlheHRkcU5HbzdteG80Sk5idTdzN1d1dnBYTDlwOWI0R1JORXBOeHJQVkp6OGl4N0xnL0NKYzQvTFppby8rNmZEajhObVN1RHhhODhvRDl4YmFOOE44UHYwWFg4MHNmcXNHUTRFVDFON2MvaHEyUS9ydFpvYVlScWxNYW1xSkRWTWhsSG8wZFB1clk0cDdKK043T2Jqd1RFUWpjYmkxMDBLSitjNmVwOFMzT1NIcWtzKzN3Vmc1M2J0d2pVVEZTd1M1bWMzTURSclRtTFkwVGxOOHFlMms5dXZsQ09Vd3I3dUZ2a0xWMEhGVHR6MTBPR3ZSYlpqQ2ZtMm9zLzNudWluVkJ2K1hlaEtONzJHZm5IKzBzL3Z3c3BCVnZXeFQ5T0MxN21ONGwvQy9EZmhmQ0hzaitGaHZpbjBwK3dqbS9meExhZnNqV0Z4NnZNbTAydkZQbFYrMnNqTkR2VVRRZVhKME5COU96NGVEQ1ZncnIxMkQ5dVd1M1ljSGVobTFlZjNVSTlkM1ltdk1NM3AzY0FyOW5GR28waEd0cE5EVTRjMk80YUl6ZGNuZGovclRtcFhFay9IaSsyclJuZW5SbzFCNmZxVTFtUlpiWkZzT1dPS0VlWDdnMHo4RTdKaW5JZzRRYVQvVk5zYzBGU3dGZE10cFFsZzZyY21jb1JrSXY3OVdybHFQOFY0M2w3ckUxTDVSMmxQeXl5K25rbW0vb3F6WHI1eURFZ215MkVobkdkR3lCejV6eU1OWitFalYreGJiR1c1ZnNtRGI4OGFmeXVxT1FyL1ZueWtIYlR4emVkdi9pNFVsU3pYU3N1M1hMdiszSER2YlhYWStRUndVcVR3MGV6ZUs4QmZvay9LSURoZm9tY0toMCtHZ1NIVkVrQ1lES2Y3MGJQeDExNUlkZXJ6bysrUUx0L1A0SlF1MWJDUFlyVzBCMUo0VlJpdllQWHJpamR0M1hmMXhkaVRDUDg5b05vT1BtMVRVN1dtdU9CMmR2TDYxWWNFMnBqaStlQ08vcVROWFA1Vm4zZVFzQlhSZVU0cllMSDhHY0lmN2xvWlIza2RTNWhxenhXU1RYeDlEeHdhU2h5cjQ2M3FHSDZ1SitIdHdFQ3JuNllJMnNTN2k2VUlhOTQ2T28xalJzTkVMM0JTUnNsMmNnSWVvNlQ2N3Buck5jYnRTM2lFUENhRUl5eGNqeWpMY2VGS25rcXVaY3ZPaXFkZzduUlpLTm82SzRFbnBkSThOQnpUek5IOXFoSENFUzMvU1c3L2JZMnNlcE13bTB2cGZPZUtwMnJuK2xRZjBrMXZpL29jb2h1WjlqMUFkNk81NWVYY3l2VnllTHk4bkZTVzJVNFhsOWpCNVYyYVlhUERWdUxoaHdqSHovMXphQlRwamY2TEt0R1JCNHpQQUdaQTJIZUorOXNWcFJvVGcwU3ExaFVxUGZsTi9LY2FzNDZKRFAvVmhWZkdOOGNjV0JxTlVOajJyM1BOdGRzdnZoYWY3R2RVbTlzUlVLemR2eXROcVh0ZG8vNlp0Q0poNE4xYWVOUml0MlRja3RjSUd6RmRuQlFEMnhGL3NqNWpXSFB6UlU3R2ZQMFAxRE1JcCticnNiNW4zS3l6TnRTSGNONnNZNzQ3L0MyN3hIWGJjY2pSTTc3RnlvMGRwWFZZNC9FR21iM2p5RDlXemdydGNkb2NoMldPblEyVFJRS2VPbFArT0dDUlhXMy9ubXJPdTZUM0JUdThXcys0UzA5R3IzVUpYMm1rWkJuK1NjQ1JrN0NvOXFwbllmdFZVdm5kOWdzRCtuMS9BZHRUTjlwSytiYzZaQjU0aWVlbXhKaU5yOWcrVjdTS0M5UjJqK3FVUlNLeHcyREpkcEltL3VzVDNORXdzMXZTTGVXVWZ6RGRFbWFzbmFNTmYzcDBhbUwxRVlWUEVsM0xsKzBVWXZjN0FwekhqOU9WRVBRUlBHVTJBVUZqUVZVd1psRkRZMERDNTUxK0dBYmRlNTRvRnB1WERmZWVNczh6bGUxYTZyRmtUMGJCQk5abGFOWXZlUkM1MXpYaTUxaVhvNVdjV1QyYXo2WTNhNXRMRjB2VlN0Zml3cHNiMndkbXJuc1FtV216WStvMGxXcEhDQktkN0FEcWhjTVphSnRneXBmYW5tNjE2SmFkeUZ0THdmNXlad00vbGw0NDdkMEs2dWJrOCtLcHZLdkh4c2xzU2JQVUI3OU5oK3o1QnU5bjVodDlObkJSbmFiTGFjUVo2eGU5MGl2djhvendsTkRUcGxLZ2NNYXBOSTF5ZXI1aVMvVWFrYjBydkNVUHQ2Yk1zSVM0SFMyWmEzcHZ3d28ySUdHV3kwWVJxM25sTWpVeEpld3dWTG9WWkY2UXErMmhBWU45WHk0cEl0ZEEvdUZaMGFPNjBKMFo2N0J0eWlUcjZkLzN5RDBScUZ0L2VRdVVOVDE4eFZiK3BVb2k0N2pLTjkrNkd4Z0wyYndvYyswSEdoN2xpLzZ4dWVzZm04WmFSN1NOMjNXcXZsZUIreDdQNWVhQnNyNXhYNVNzSUlWSERnWlM4ZHJReS9LQ1U1Wk5xV2p5MDBadjI4bk9ZUUtqcnlzMzNwMEI2MHJvVFN3VlZVRlc2aXo4dXUvcE5lb2Yra1Y3OXlldlhGODZzVzRPcGJ6UGJlVDV2RjE4WitoTTdaaGxBa3RYWEhRaHhRbkJ4RmJTVFVmVUNabkxRZUVZUWQvRjRCeUQ3T05GVTd6TjhCUjNlY1NBazBxbmozbGQ4ZnIrd0NFVXJaMWtXbXFYZjNiemhLMlIzTkdFNEZ1aW5LbmdGM2JPK2hzNzNQcnNha3J4eXIrSWR4UjlGUGpGQnhoQVRUOTNZUWtZZ1ZVcEFVa055Q2h5bmhSSklFWnlpdldUR1VZN2tkTmV5L2Y2bWo5MitSTW5jVzYrb2lmZWc5OVB3MmVmL0MxMkp4dFhqay9vQXVPUFllZXY4SEFBRC8vd0VBQVAvL2lnVTFOVVppQUFBPQonQAoKJGNvbXByZXNzZWRCeXRlcyA9IFtDb252ZXJ0XTo6RnJvbUJhc2U2NFN0cmluZygkU2NyaXB0Qm9keUd6aXBCYXNlNjQuVHJpbSgpKQokbWVtb3J5U3RyZWFtID0gW0lPLk1lbW9yeVN0cmVhbV06Om5ldygkY29tcHJlc3NlZEJ5dGVzKQokZ3ppcFN0cmVhbSA9IFtJTy5Db21wcmVzc2lvbi5HemlwU3RyZWFtXTo6bmV3KCRtZW1vcnlTdHJlYW0sIFtJTy5Db21wcmVzc2lvbi5Db21wcmVzc2lvbk1vZGVdOjpEZWNvbXByZXNzKQokcmVhZGVyID0gW0lPLlN0cmVhbVJlYWRlcl06Om5ldygkZ3ppcFN0cmVhbSwgW1RleHQuRW5jb2RpbmddOjpVVEY4KQp0cnkgewogICAgJFNjcmlwdEJvZHkgPSAkcmVhZGVyLlJlYWRUb0VuZCgpCn0KZmluYWxseSB7CiAgICAkcmVhZGVyLkNsb3NlKCkKICAgICRnemlwU3RyZWFtLkNsb3NlKCkKICAgICRtZW1vcnlTdHJlYW0uQ2xvc2UoKQp9CgpTZXQtQ29udGVudCAtUGF0aCAkU2NyaXB0UGF0aCAtVmFsdWUgJFNjcmlwdEJvZHkgLUVuY29kaW5nIFVURjggLUZvcmNlCiYgaWNhY2xzLmV4ZSAkU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIldyb3RlICRTY3JpcHRQYXRoIgoKJExhdW5jaGVyQm9keSA9IEAnCiRFcnJvckFjdGlvblByZWZlcmVuY2UgPSAiU3RvcCIKCiRTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxEQyIKJFNjcmlwdFBhdGggPSBKb2luLVBhdGggJFNldHVwRGlyICIwMS1jb25maWd1cmUtZG9tYWluLWNvbnRyb2xsZXIucHMxIgokTGF1bmNoZXJMb2dQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAibGF1bmNoZXIubG9nIgokQ29uc29sZUxvZ1BhdGggPSBKb2luLVBhdGggJFNldHVwRGlyICJjb25maWd1cmUtZGMtY29uc29sZS5sb2ciCiRJbml0aWFsVGFza05hbWUgPSAiQU9BRy1Db25maWd1cmUtRG9tYWluQ29udHJvbGxlci1Jbml0aWFsIgoKZnVuY3Rpb24gV3JpdGUtTGF1bmNoZXJMb2cgewogICAgcGFyYW0oW3N0cmluZ10kTWVzc2FnZSkKICAgIE5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFNldHVwRGlyIC1Gb3JjZSB8IE91dC1OdWxsCiAgICBBZGQtQ29udGVudCAtUGF0aCAkTGF1bmNoZXJMb2dQYXRoIC1WYWx1ZSAoInswOnN9IHsxfSIgLWYgKEdldC1EYXRlKSwgJE1lc3NhZ2UpCn0KCnRyeSB7CiAgICBXcml0ZS1MYXVuY2hlckxvZyAiU3RhcnRpbmcgREMgY29uZmlndXJhdGlvbiBsYXVuY2hlciIKCiAgICAkcG93ZXJzaGVsbFBhdGggPSBKb2luLVBhdGggJGVudjpTeXN0ZW1Sb290ICJTeXN0ZW0zMlxXaW5kb3dzUG93ZXJTaGVsbFx2MS4wXHBvd2Vyc2hlbGwuZXhlIgogICAgJHNjcmlwdEFyZ3MgPSBAKAogICAgICAgICItTm9Qcm9maWxlIiwKICAgICAgICAiLUV4ZWN1dGlvblBvbGljeSIsICJCeXBhc3MiLAogICAgICAgICItRmlsZSIsICRTY3JpcHRQYXRoLAogICAgICAgICItRG9tYWluTmFtZSIsICdtc3NxbGFvYWcuZGVtbycsCiAgICAgICAgIi1OZXRiaW9zTmFtZSIsICdNU1NRTEFPQUcnLAogICAgICAgICItRG9tYWluQWRtaW5Vc2VyIiwgJ2RvbWFpbmFkbWluJywKICAgICAgICAiLVNxbFNlcnZpY2VBY2NvdW50VXNlciIsICdzcWxzYScsCiAgICAgICAgIi1Mb2NhbEFkbWluVXNlciIsICdvcGMnLAogICAgICAgICItVGFyZ2V0Q29tcHV0ZXJOYW1lIiwgJ0RDLVZNJywKICAgICAgICAiLURjUHJpdmF0ZUlwIiwgJzEwLjAuMTAuMTAnLAogICAgICAgICItV2l0bmVzc1BhdGgiLCAnQzpcQ2x1c3RlcldpdG5lc3MnLAogICAgICAgICItV2l0bmVzc1NoYXJlTmFtZSIsICdDbHVzdGVyV2l0bmVzcycsCiAgICAgICAgIi1Eb21haW5BZG1pblBhc3N3b3JkUGxhaW4iLCAnUEBzc3cwcmRAMTIzJywKICAgICAgICAiLVNxbFNlcnZpY2VBY2NvdW50UGFzc3dvcmRQbGFpbiIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItTG9jYWxBZG1pblBhc3N3b3JkUGxhaW4iLCAnUEBzc3cwcmRAMTIzJywKICAgICAgICAiLU5vbkludGVyYWN0aXZlIgogICAgKQoKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJJbnZva2luZyAkU2NyaXB0UGF0aCIKICAgICYgJHBvd2Vyc2hlbGxQYXRoIEBzY3JpcHRBcmdzICo+ICRDb25zb2xlTG9nUGF0aAogICAgJGV4aXRDb2RlID0gJExBU1RFWElUQ09ERQogICAgV3JpdGUtTGF1bmNoZXJMb2cgIkRDIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGV4aXQgY29kZTogJGV4aXRDb2RlIgoKICAgIGlmICgkZXhpdENvZGUgLW5lIDApIHsKICAgICAgICB0aHJvdyAiREMgY29uZmlndXJhdGlvbiBzY3JpcHQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICRleGl0Q29kZS4gU2VlICRDb25zb2xlTG9nUGF0aCBhbmQgQzpcQU9BR0F1dG9tYXRpb25cRENcY29uZmlndXJlLWRjLmxvZy4iCiAgICB9Cn0KY2F0Y2ggewogICAgV3JpdGUtTGF1bmNoZXJMb2cgIkVSUk9SOiAkKCRfLkV4Y2VwdGlvbi5NZXNzYWdlKSIKICAgIHRocm93Cn0KZmluYWxseSB7CiAgICB0cnkgewogICAgICAgIFVucmVnaXN0ZXItU2NoZWR1bGVkVGFzayAtVGFza05hbWUgJEluaXRpYWxUYXNrTmFtZSAtQ29uZmlybTokZmFsc2UgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUKICAgICAgICBXcml0ZS1MYXVuY2hlckxvZyAiUmVtb3ZlZCBpbml0aWFsIGxhdW5jaGVyIHRhc2sgaWYgaXQgc3RpbGwgZXhpc3RlZCIKICAgIH0KICAgIGNhdGNoIHsKICAgICAgICBXcml0ZS1MYXVuY2hlckxvZyAiSW5pdGlhbCBsYXVuY2hlciB0YXNrIGNsZWFudXAgd2FybmluZzogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICB9Cn0KJ0AKClNldC1Db250ZW50IC1QYXRoICRMYXVuY2hlclBhdGggLVZhbHVlICRMYXVuY2hlckJvZHkgLUVuY29kaW5nIFVURjggLUZvcmNlCiYgaWNhY2xzLmV4ZSAkTGF1bmNoZXJQYXRoIC9pbmhlcml0YW5jZTpyIC9ncmFudDpyICJTWVNURU06KEYpIiAiQWRtaW5pc3RyYXRvcnM6KEYpIiB8IE91dC1OdWxsCldyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJExhdW5jaGVyUGF0aCIKCiRhY3Rpb24gPSBOZXctU2NoZWR1bGVkVGFza0FjdGlvbiAtRXhlY3V0ZSAiUG93ZXJTaGVsbC5leGUiIC1Bcmd1bWVudCAiLU5vUHJvZmlsZSAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtRmlsZSBgIiRMYXVuY2hlclBhdGhgIiIKJHRyaWdnZXIgPSBOZXctU2NoZWR1bGVkVGFza1RyaWdnZXIgLU9uY2UgLUF0IChHZXQtRGF0ZSkuQWRkTWludXRlcygxKQpSZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1BY3Rpb24gJGFjdGlvbiAtVHJpZ2dlciAkdHJpZ2dlciAtVXNlciAiU1lTVEVNIiAtUnVuTGV2ZWwgSGlnaGVzdCAtRm9yY2UgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIlJlZ2lzdGVyZWQgJEluaXRpYWxUYXNrTmFtZSBhcyBTWVNURU0iCgpTdGFydC1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRlZCAkSW5pdGlhbFRhc2tOYW1lIgo=" - }, - "platform_config": [], - "preemptible_instance_config": [], - "preserve_boot_volume": null, - "preserve_data_volumes_created_at_launch": null, - "private_ip": "10.0.10.10", - "public_ip": "163.192.63.56", - "region": "us-sanjose-1", - "security_attributes": {}, - "security_attributes_state": "STABLE", - "shape": "VM.Standard.E5.Flex", - "shape_config": [ - { - "baseline_ocpu_utilization": "", - "gpu_description": "", - "gpus": 0, - "local_disk_description": "", - "local_disks": 0, - "local_disks_total_size_in_gbs": 0, - "max_vnic_attachments": 6, - "memory_in_gbs": 16, - "networking_bandwidth_in_gbps": 6, - "nvmes": 0, - "ocpus": 6, - "processor_description": "2.3 GHz AMD EPYCâ„¢ 9J14 (Genoa)", - "vcpus": 12 - } - ], - "source_details": [ - { - "boot_volume_size_in_gbs": "100", - "boot_volume_vpus_per_gb": "10", - "instance_source_image_filter_details": [], - "is_preserve_boot_volume_enabled": false, - "kms_key_id": "", - "source_id": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", - "source_type": "image" - } - ], - "state": "RUNNING", - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaqyaalgafielqf5cpgvvtkbq4qmb3xtix4n6m26ojww3nwuuu5axq", - "system_tags": {}, - "time_created": "2026-08-10 12:01:12.507 +0000 UTC", - "time_maintenance_reboot_due": "", - "timeouts": null, - "update_operation_constraint": null - }, - "sensitive_attributes": [ - [ - { - "type": "get_attr", - "value": "metadata" - }, - { - "type": "index", - "value": { - "value": "user_data", - "type": "string" - } - } - ] - ], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNzAwMDAwMDAwMDAwLCJkZWxldGUiOjQ1MDAwMDAwMDAwMDAsInVwZGF0ZSI6MjcwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_identity_availability_domains.region", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_subnet.dc", - "oci_core_vcn.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_instance", - "name": "sql1", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "agent_config": [ - { - "are_all_plugins_disabled": false, - "is_management_disabled": false, - "is_monitoring_disabled": false, - "plugins_config": [ - { - "desired_state": "ENABLED", - "name": "Compute Instance Run Command" - }, - { - "desired_state": "ENABLED", - "name": "Compute Instance Monitoring" - }, - { - "desired_state": "ENABLED", - "name": "Management Agent" - }, - { - "desired_state": "ENABLED", - "name": "Fleet Application Management Service" - }, - { - "desired_state": "ENABLED", - "name": "Cloud Guard Workload Protection" - } - ] - } - ], - "async": null, - "availability_config": [ - { - "is_live_migration_preferred": false, - "recovery_action": "RESTORE_INSTANCE" - } - ], - "availability_domain": "RAVo:US-SANJOSE-1-AD-1", - "boot_volume_id": "ocid1.bootvolume.oc1.us-sanjose-1.abzwuljrrbwsm2asjmm2ox3sijc5el7qaesxms3akfmfj3n5laiqljhzzrra", - "capacity_reservation_id": null, - "cluster_placement_group_id": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "compute_cluster_id": null, - "create_vnic_details": [ - { - "assign_ipv6ip": false, - "assign_private_dns_record": false, - "assign_public_ip": "true", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:05:24.120Z" - }, - "display_name": "SQL1", - "freeform_tags": { - "Domain": "mssqlaoag.demo", - "Project": "sqlagtest", - "Role": "sql-node" - }, - "hostname_label": "sql1", - "ipv6address_ipv6subnet_cidr_pair_details": [], - "nsg_ids": [], - "private_ip": "10.0.20.10", - "security_attributes": {}, - "skip_source_dest_check": false, - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", - "vlan_id": "" - } - ], - "dedicated_vm_host_id": null, - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:05:23.980Z" - }, - "display_name": "SQL1", - "extended_metadata": {}, - "fault_domain": "FAULT-DOMAIN-3", - "freeform_tags": { - "Domain": "mssqlaoag.demo", - "Project": "sqlagtest", - "Role": "sql-node" - }, - "hostname_label": "sql1", - "id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicro5jzzgfjuljuqrgeudvsdt4husgjp4zcmpgn77vfepa", - "image": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", - "instance_configuration_id": null, - "instance_options": [ - { - "are_legacy_imds_endpoints_disabled": true - } - ], - "ipxe_script": null, - "is_cross_numa_node": false, - "is_pv_encryption_in_transit_enabled": null, - "launch_mode": "NATIVE", - "launch_options": [ - { - "boot_volume_type": "PARAVIRTUALIZED", - "firmware": "UEFI_64", - "is_consistent_volume_naming_enabled": false, - "is_pv_encryption_in_transit_enabled": false, - "network_type": "PARAVIRTUALIZED", - "remote_data_volume_type": "PARAVIRTUALIZED" - } - ], - "launch_volume_attachments": null, - "licensing_configs": [], - "metadata": { - "user_data": "I3BzMV9zeXNuYXRpdmUKJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICJTdG9wIgoKJFNldHVwRGlyID0gIkM6XEFPQUdBdXRvbWF0aW9uXFdpbmRvd3MiCiRTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAiMDItY29uZmlndXJlLXNxbC1ub2RlLnBzMSIKJFdzZmNTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxXU0ZDIgokV3NmY1NjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDMtY29uZmlndXJlLXdzZmMucHMxIgokU2FtcGxlU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkV3NmY1NldHVwRGlyICIwNC1wcmVwYXJlLXNhbXBsZS1kYXRhYmFzZS5wczEiCiRBZ1NjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDUtY29uZmlndXJlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEiCiRTYWZlRmFpbG92ZXJTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA2LXNhZmUtcGxhbm5lZC1mYWlsb3Zlci5wczEiCiRSZWNvbmNpbGVTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA3LXJlY29uY2lsZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxIgokTGF1bmNoZXJQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAiMDAtbGF1bmNoLXNxbC1ub2RlLWJvb3RzdHJhcC5wczEiCiRXcmFwcGVyTG9nUGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgInVzZXItZGF0YS1ib290c3RyYXAubG9nIgokSW5pdGlhbFRhc2tOYW1lID0gIkFPQUctQ29uZmlndXJlLVdpbmRvd3NOb2RlLUluaXRpYWwiCk5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFNldHVwRGlyIC1Gb3JjZSB8IE91dC1OdWxsCk5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFdzZmNTZXR1cERpciAtRm9yY2UgfCBPdXQtTnVsbAoKZnVuY3Rpb24gV3JpdGUtQm9vdHN0cmFwTG9nIHsKICAgIHBhcmFtKFtzdHJpbmddJE1lc3NhZ2UpCiAgICBBZGQtQ29udGVudCAtUGF0aCAkV3JhcHBlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQoKdHJhcCB7CiAgICB0cnkgewogICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRVJST1I6ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIgogICAgfQogICAgY2F0Y2ggewogICAgICAgICMgUHJlc2VydmUgdGhlIG9yaWdpbmFsIGJvb3RzdHJhcCBlcnJvciBpZiBsb2dnaW5nIGl0c2VsZiBpcyB1bmF2YWlsYWJsZS4KICAgIH0KICAgIHRocm93Cn0KCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRpbmcgU1FMIG5vZGUgdXNlcl9kYXRhIGJvb3RzdHJhcCBmb3IgU1FMMSIKCiMgRXN0YWJsaXNoIHJlY292ZXJ5IGFjY2VzcyBiZWZvcmUgZG93bmxvYWRpbmcgYW55IGF1dG9tYXRpb24gYXJ0aWZhY3RzLiBJZiBhCiMgUEFSLCBETlMsIG9yIE9iamVjdCBTdG9yYWdlIHJlcXVlc3QgZmFpbHMsIHRoZSBvcGVyYXRvciBjYW4gc3RpbGwgUkRQIGluIHdpdGgKIyB0aGUgbG9jYWwgYWNjb3VudHMgYW5kIGluc3BlY3QgdGhlIGJvb3RzdHJhcCBsb2dzLgpmdW5jdGlvbiBTZXQtTG9jYWxCb290c3RyYXBBY2Nlc3MgewogICAgV3JpdGUtQm9vdHN0cmFwTG9nICJDb25maWd1cmluZyBsb2NhbCBib290c3RyYXAgYWNjb3VudHMiCiAgICAkcGFzc3dvcmQgPSAnUEBzc3cwcmRAMTIzJwogICAgaWYgKFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJHBhc3N3b3JkKSkgewogICAgICAgIHRocm93ICJ3aW5kb3dzX2FkbWluX3Bhc3N3b3JkIHdhcyBub3QgcmVuZGVyZWQgaW50byBTUUwgbm9kZSB1c2VyX2RhdGEuIgogICAgfQoKICAgICRhZG1pblJlc3VsdCA9ICYgbmV0LmV4ZSB1c2VyIEFkbWluaXN0cmF0b3IgJHBhc3N3b3JkIC9sb2dvbnBhc3N3b3JkY2hnOm5vIC9hY3RpdmU6eWVzIDI+JjEKICAgIGlmICgkTEFTVEVYSVRDT0RFIC1uZSAwKSB7CiAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBjb25maWd1cmUgbG9jYWwgQWRtaW5pc3RyYXRvciBiZWZvcmUgZG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdHM6ICQoJGFkbWluUmVzdWx0IC1qb2luICcgJykiCiAgICB9CiAgICBXcml0ZS1Cb290c3RyYXBMb2cgIlJlc2V0IGxvY2FsIEFkbWluaXN0cmF0b3IgcGFzc3dvcmQgYW5kIGVuYWJsZWQgYWNjb3VudCIKCiAgICBpZiAoJ29wYycgLWFuZCAnb3BjJyAtbmUgJ0FkbWluaXN0cmF0b3InKSB7CiAgICAgICAgJHVzZXJSZXN1bHQgPSAmIG5ldC5leGUgdXNlciAnb3BjJyAkcGFzc3dvcmQgL2xvZ29ucGFzc3dvcmRjaGc6bm8gL2FjdGl2ZTp5ZXMgMj4mMQogICAgICAgIGlmICgkTEFTVEVYSVRDT0RFIC1uZSAwKSB7CiAgICAgICAgICAgICR1c2VyUmVzdWx0ID0gJiBuZXQuZXhlIHVzZXIgJ29wYycgJHBhc3N3b3JkIC9hZGQgL2xvZ29ucGFzc3dvcmRjaGc6bm8gL2FjdGl2ZTp5ZXMgMj4mMQogICAgICAgICAgICBpZiAoJExBU1RFWElUQ09ERSAtbmUgMCkgewogICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBjcmVhdGUgbG9jYWwgb3BjIGJlZm9yZSBkb3dubG9hZGluZyBhdXRvbWF0aW9uIGFydGlmYWN0czogJCgkdXNlclJlc3VsdCAtam9pbiAnICcpIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiUmVzZXQgbG9jYWwgb3BjIHBhc3N3b3JkIGFuZCBlbmFibGVkIGFjY291bnQiCgogICAgICAgIGZvcmVhY2ggKCRncm91cCBpbiBAKCdBZG1pbmlzdHJhdG9ycycsICdSZW1vdGUgRGVza3RvcCBVc2VycycpKSB7CiAgICAgICAgICAgICRtZW1iZXJQYXR0ZXJuID0gIig/aSkoXnxcXCkkKFtyZWdleF06OkVzY2FwZSgnb3BjJykpJCIKICAgICAgICAgICAgJGFscmVhZHlNZW1iZXIgPSAkZmFsc2UKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRhbHJlYWR5TWVtYmVyID0gQCgKICAgICAgICAgICAgICAgICAgICBHZXQtTG9jYWxHcm91cE1lbWJlciAtR3JvdXAgJGdyb3VwIC1FcnJvckFjdGlvbiBTdG9wIHwKICAgICAgICAgICAgICAgICAgICAgICAgV2hlcmUtT2JqZWN0IHsgJF8uTmFtZSAtbWF0Y2ggJG1lbWJlclBhdHRlcm4gfQogICAgICAgICAgICAgICAgKS5Db3VudCAtZ3QgMAogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiQ291bGQgbm90IHByZS1jaGVjayBvcGMgbWVtYmVyc2hpcCBpbiAkZ3JvdXA7IHVzaW5nIG5ldC5leGUgcmVzdWx0IgogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGFscmVhZHlNZW1iZXIpIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAib3BjIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgJGdyb3VwOyBjb250aW51aW5nIgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGdyb3VwUmVzdWx0ID0gJiBuZXQuZXhlIGxvY2FsZ3JvdXAgJGdyb3VwICdvcGMnIC9hZGQgMj4mMQogICAgICAgICAgICAkZ3JvdXBFeGl0Q29kZSA9ICRMQVNURVhJVENPREUKICAgICAgICAgICAgJGdyb3VwT3V0cHV0ID0gKCRncm91cFJlc3VsdCAtam9pbiAiYG4iKQoKICAgICAgICAgICAgaWYgKCRncm91cEV4aXRDb2RlIC1lcSAwKSB7CiAgICAgICAgICAgICAgICBXcml0ZS1Cb290c3RyYXBMb2cgIkFkZGVkIG9wYyB0byAkZ3JvdXAiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZWlmICgkZ3JvdXBPdXRwdXQgLW1hdGNoICcoP2kpMTM3OHxhbHJlYWR5IGEgbWVtYmVyIG9mIHRoZSBncm91cCcpIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAib3BjIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgJGdyb3VwOyBjb250aW51aW5nIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBhZGQgb3BjIHRvICRncm91cCBiZWZvcmUgZG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdHMuIG5ldC5leGUgZXhpdCBjb2RlICRncm91cEV4aXRDb2RlLiBPdXRwdXQ6ICRncm91cE91dHB1dCIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBTZXQtSXRlbVByb3BlcnR5IC1QYXRoICJIS0xNOlxTeXN0ZW1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxUZXJtaW5hbCBTZXJ2ZXIiIC1OYW1lICJmRGVueVRTQ29ubmVjdGlvbnMiIC1WYWx1ZSAwCiAgICBFbmFibGUtTmV0RmlyZXdhbGxSdWxlIC1EaXNwbGF5R3JvdXAgIlJlbW90ZSBEZXNrdG9wIiAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IE91dC1OdWxsCiAgICBXcml0ZS1Cb290c3RyYXBMb2cgIkNvbmZpZ3VyZWQgbG9jYWwgQWRtaW5pc3RyYXRvciBhbmQgb3BjIGNyZWRlbnRpYWxzIGJlZm9yZSBhdXRvbWF0aW9uIGRvd25sb2FkcyIKfQoKU2V0LUxvY2FsQm9vdHN0cmFwQWNjZXNzCgpmdW5jdGlvbiBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IHsKICAgIHBhcmFtKFtzdHJpbmddJFVyaSwgW3N0cmluZ10kUGF0aCkKICAgIGlmIChbc3RyaW5nXTo6SXNOdWxsT3JXaGl0ZVNwYWNlKCRVcmkpKSB7IHJldHVybiB9CiAgICBbTmV0LlNlcnZpY2VQb2ludE1hbmFnZXJdOjpTZWN1cml0eVByb3RvY29sID0gW05ldC5TZWN1cml0eVByb3RvY29sVHlwZV06OlRsczEyCgogICAgZm9yICgkYXR0ZW1wdCA9IDE7ICRhdHRlbXB0IC1sZSAzMDsgJGF0dGVtcHQrKykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdCBhdHRlbXB0PSRhdHRlbXB0IHBhdGg9JFBhdGgiCiAgICAgICAgICAgIEludm9rZS1XZWJSZXF1ZXN0IC1Vc2VCYXNpY1BhcnNpbmcgLVVyaSAkVXJpIC1PdXRGaWxlICRQYXRoIC1FcnJvckFjdGlvbiBTdG9wCiAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRQYXRoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgIkF1dG9tYXRpb24gc2NyaXB0IGRvd25sb2FkIHJldHVybmVkIHdpdGhvdXQgY3JlYXRpbmcgJFBhdGgiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWRlZCBhdXRvbWF0aW9uIGFydGlmYWN0IHBhdGg9JFBhdGgiCiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KICAgICAgICBjYXRjaCB7CiAgICAgICAgICAgIGlmICgkYXR0ZW1wdCAtZ2UgMzApIHsKICAgICAgICAgICAgICAgIHRocm93ICJBdXRvbWF0aW9uIGFydGlmYWN0IGRvd25sb2FkIGZhaWxlZCBhZnRlciAkYXR0ZW1wdCBhdHRlbXB0cyBmb3IgJHtQYXRofTogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWQgd2FybmluZyBwYXRoPSR7UGF0aH0gYXR0ZW1wdD0kYXR0ZW1wdGA6ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIgogICAgICAgICAgICBTdGFydC1TbGVlcCAtU2Vjb25kcyAxMAogICAgICAgIH0KICAgIH0KfQoKRG93bmxvYWQtQXV0b21hdGlvblNjcmlwdCAtVXJpICdodHRwczovL29iamVjdHN0b3JhZ2UudXMtc2Fuam9zZS0xLm9yYWNsZWNsb3VkLmNvbS9wL1BMUFQtT09jYXpsYlJNMENCNnBKR3c0ZHMyMDVqQ1NWelpGTHhRRnYxOWVFQktRdkxINF9hdnp0dDFaa1ZJaVovbi9pZHp4dmt6MXpkdWcvYi9hb2FnLWF1dG9tYXRpb24tZTA2ZmQyYjhmYTJmL28vc2NyaXB0cy8wMi1jb25maWd1cmUtc3FsLW5vZGUucHMxJyAtUGF0aCAkU2NyaXB0UGF0aAomIGljYWNscy5leGUgJFNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKV3JpdGUtQm9vdHN0cmFwTG9nICJXcm90ZSAkU2NyaXB0UGF0aCIKCkRvd25sb2FkLUF1dG9tYXRpb25TY3JpcHQgLVVyaSAnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9iRFk4VVRyQ1FmVU15b0diaUdkVXhrMWtGV3plWFZKOTJXY2pjYXJYS05qNWQ0LTZ5aFpCOHdDRWh2VG5qWXlCL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDMtY29uZmlndXJlLXdzZmMucHMxJyAtUGF0aCAkV3NmY1NjcmlwdFBhdGgKJiBpY2FjbHMuZXhlICRXc2ZjU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIldyb3RlICRXc2ZjU2NyaXB0UGF0aCIKCmlmICgtbm90IFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvQ3NUaFhDVHF5M1BOYXpBR1lpMVg1RGdZWlFaa0RXemNnWC13UHhMa2lFRWZ3SG9GenBENzA5NERkWTdUWEVLaC9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA0LXByZXBhcmUtc2FtcGxlLWRhdGFiYXNlLnBzMScpKSB7CiAgICBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IC1VcmkgJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvQ3NUaFhDVHF5M1BOYXpBR1lpMVg1RGdZWlFaa0RXemNnWC13UHhMa2lFRWZ3SG9GenBENzA5NERkWTdUWEVLaC9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA0LXByZXBhcmUtc2FtcGxlLWRhdGFiYXNlLnBzMScgLVBhdGggJFNhbXBsZVNjcmlwdFBhdGgKICAgICYgaWNhY2xzLmV4ZSAkU2FtcGxlU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbAogICAgV3JpdGUtQm9vdHN0cmFwTG9nICJXcm90ZSAkU2FtcGxlU2NyaXB0UGF0aCIKfQoKaWYgKC1ub3QgW3N0cmluZ106OklzTnVsbE9yV2hpdGVTcGFjZSgnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9fVDJVRTVFVGxIeVd1ZUxkYW9PZElUZXpNRzF6dXpRdnMzYTJ2UzRna09YZzd3WThuV2lFOWFEVVpvd0owU2NwL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDUtY29uZmlndXJlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEnKSkgewogICAgRG93bmxvYWQtQXV0b21hdGlvblNjcmlwdCAtVXJpICdodHRwczovL29iamVjdHN0b3JhZ2UudXMtc2Fuam9zZS0xLm9yYWNsZWNsb3VkLmNvbS9wL19UMlVFNUVUbEh5V3VlTGRhb09kSVRlek1HMXp1elF2czNhMnZTNGdrT1hnN3dZOG5XaUU5YURVWm93SjBTY3Avbi9pZHp4dmt6MXpkdWcvYi9hb2FnLWF1dG9tYXRpb24tZTA2ZmQyYjhmYTJmL28vc2NyaXB0cy8wNS1jb25maWd1cmUtYXZhaWxhYmlsaXR5LWdyb3VwLnBzMScgLVBhdGggJEFnU2NyaXB0UGF0aAogICAgJiBpY2FjbHMuZXhlICRBZ1NjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJEFnU2NyaXB0UGF0aCIKfQoKaWYgKC1ub3QgW3N0cmluZ106OklzTnVsbE9yV2hpdGVTcGFjZSgnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9Cemp4WUNaX183SEtkbFB4WWMyTEdYV1NBcjFwSmRGc095TDM5aUcxN1UxNlZMZ3RpMjM2NUQ0bnQyd3VaOXRaL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDYtc2FmZS1wbGFubmVkLWZhaWxvdmVyLnBzMScpKSB7CiAgICBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IC1VcmkgJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvQnpqeFlDWl9fN0hLZGxQeFljMkxHWFdTQXIxcEpkRnNPeUwzOWlHMTdVMTZWTGd0aTIzNjVENG50Mnd1Wjl0Wi9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA2LXNhZmUtcGxhbm5lZC1mYWlsb3Zlci5wczEnIC1QYXRoICRTYWZlRmFpbG92ZXJTY3JpcHRQYXRoCiAgICAmIGljYWNscy5leGUgJFNhZmVGYWlsb3ZlclNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJFNhZmVGYWlsb3ZlclNjcmlwdFBhdGgiCn0KCmlmICgtbm90IFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvMERvUFI4NjBLdjRkQl8ya2d1LXpVRTJEWkdfcnFKaWpmY1BXME9mTDFFTXVVQzlnNXVhcVRING9MMFVQYjlKci9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA3LXJlY29uY2lsZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxJykpIHsKICAgIERvd25sb2FkLUF1dG9tYXRpb25TY3JpcHQgLVVyaSAnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC8wRG9QUjg2MEt2NGRCXzJrZ3UtelVFMkRaR19ycUppamZjUFcwT2ZMMUVNdVVDOWc1dWFxVEg0b0wwVVBiOUpyL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDctcmVjb25jaWxlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEnIC1QYXRoICRSZWNvbmNpbGVTY3JpcHRQYXRoCiAgICAmIGljYWNscy5leGUgJFJlY29uY2lsZVNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJFJlY29uY2lsZVNjcmlwdFBhdGgiCn0KCiRMYXVuY2hlckJvZHkgPSBAJwokRXJyb3JBY3Rpb25QcmVmZXJlbmNlID0gIlN0b3AiCiRTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxXaW5kb3dzIgokU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgIjAyLWNvbmZpZ3VyZS1zcWwtbm9kZS5wczEiCiRXc2ZjU2V0dXBEaXIgPSAiQzpcQU9BR0F1dG9tYXRpb25cV1NGQyIKJFNhbXBsZVNjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDQtcHJlcGFyZS1zYW1wbGUtZGF0YWJhc2UucHMxIgokQWdTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA1LWNvbmZpZ3VyZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxIgokUmVjb25jaWxlU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkV3NmY1NldHVwRGlyICIwNy1yZWNvbmNpbGUtYXZhaWxhYmlsaXR5LWdyb3VwLnBzMSIKJExhdW5jaGVyTG9nUGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgImxhdW5jaGVyLmxvZyIKJENvbnNvbGVMb2dQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAid2luZG93cy1ib290c3RyYXAtY29uc29sZS5sb2ciCiRJbml0aWFsVGFza05hbWUgPSAiQU9BRy1Db25maWd1cmUtV2luZG93c05vZGUtSW5pdGlhbCIKZnVuY3Rpb24gV3JpdGUtTGF1bmNoZXJMb2cgewogICAgcGFyYW0oW3N0cmluZ10kTWVzc2FnZSkKICAgIEFkZC1Db250ZW50IC1QYXRoICRMYXVuY2hlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQp0cnkgewogICAgV3JpdGUtTGF1bmNoZXJMb2cgIlN0YXJ0aW5nIFNRTCBub2RlIGNvbmZpZ3VyYXRpb24gbGF1bmNoZXIgZm9yIFNRTDEiCiAgICAkc2NyaXB0QXJncyA9IEAoCiAgICAgICAgIi1Ob1Byb2ZpbGUiLAogICAgICAgICItRXhlY3V0aW9uUG9saWN5IiwgIkJ5cGFzcyIsCiAgICAgICAgIi1GaWxlIiwgJFNjcmlwdFBhdGgsCiAgICAgICAgIi1Eb21haW5OYW1lIiwgJ21zc3FsYW9hZy5kZW1vJywKICAgICAgICAiLURvbWFpbk5ldGJpb3NOYW1lIiwgJ01TU1FMQU9BRycsCiAgICAgICAgIi1Eb21haW5BZG1pblVzZXIiLCAnZG9tYWluYWRtaW4nLAogICAgICAgICItRG9tYWluQWRtaW5QYXNzd29yZCIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItU3FsU2VydmljZUFjY291bnRVc2VyIiwgJ3NxbHNhJywKICAgICAgICAiLVNxbFNlcnZpY2VBY2NvdW50UGFzc3dvcmQiLCAnUEBzc3cwcmRAMTIzJywKICAgICAgICAiLUF1dG9JbnN0YWxsU3FsU2VydmVyIiwgJ3RydWUnLAogICAgICAgICItSW5zdGFsbFNzbXMiLCAndHJ1ZScsCiAgICAgICAgIi1TcWxTZXJ2ZXJEb3dubG9hZFVybCIsICdodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjM0NDYyNicsCiAgICAgICAgIi1Tc21zRG93bmxvYWRVcmwiLCAnaHR0cHM6Ly9ha2EubXMvc3Ntcy8yMi9yZWxlYXNlL3ZzX1NTTVMuZXhlJywKICAgICAgICAiLUF1dG9Db25maWd1cmVXc2ZjIiwgJ3RydWUnLAogICAgICAgICItV3NmY0NsdXN0ZXJOYW1lIiwgJ1NRTEFHQ0xVU1RFUicsCiAgICAgICAgIi1Xc2ZjUHJpbWFyeU5vZGUiLCAnU1FMMScsCiAgICAgICAgIi1Xc2ZjQ2x1c3Rlck5vZGVzIiwgJ1NRTDEsU1FMMicsCiAgICAgICAgIi1Xc2ZjQ2x1c3RlclN0YXRpY0FkZHJlc3NlcyIsICcxMC4wLjIwLjIwLDEwLjAuMzAuMjAnLAogICAgICAgICItV3NmY1dpdG5lc3NTaGFyZSIsICdcXERDLVZNLm1zc3FsYW9hZy5kZW1vXENsdXN0ZXJXaXRuZXNzJywKICAgICAgICAiLVNraXBDbHVzdGVyVmFsaWRhdGlvbiIsICd0cnVlJywKICAgICAgICAiLUFvYWdEYXRhYmFzZU5hbWUiLCAnQWR2ZW50dXJlV29ya3MyMDI1JywKICAgICAgICAiLUFvYWdBdmFpbGFiaWxpdHlHcm91cE5hbWUiLCAnVGVzdEFPQUcnLAogICAgICAgICItQW9hZ0xpc3RlbmVyTmFtZSIsICdBT0FHLUxTTicsCiAgICAgICAgIi1Bb2FnTGlzdGVuZXJQb3J0IiwgJzE0MzMnLAogICAgICAgICItQW9hZ0xpc3RlbmVySXBzIiwgJzEwLjAuMjAuMzAsMTAuMC4zMC4zMCcsCiAgICAgICAgIi1IYWRyRW5kcG9pbnROYW1lIiwgJ0hhZHJfZW5kcG9pbnQnLAogICAgICAgICItSGFkckVuZHBvaW50UG9ydCIsICc1MDIyJywKICAgICAgICAiLVNhbXBsZURhdGFiYXNlRG93bmxvYWRVcmwiLCAnaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9zcWwtc2VydmVyLXNhbXBsZXMvcmVsZWFzZXMvZG93bmxvYWQvYWR2ZW50dXJld29ya3MvQWR2ZW50dXJlV29ya3MyMDI1LmJhaycsCiAgICAgICAgIi1TYW1wbGVTY3JpcHRQYXRoIiwgJFNhbXBsZVNjcmlwdFBhdGgsCiAgICAgICAgIi1BZ1NjcmlwdFBhdGgiLCAkQWdTY3JpcHRQYXRoLAogICAgICAgICItTG9jYWxBZG1pblVzZXIiLCAnb3BjJywKICAgICAgICAiLUxvY2FsQWRtaW5QYXNzd29yZCIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItVGFyZ2V0Q29tcHV0ZXJOYW1lIiwgJ1NRTDEnLAogICAgICAgICItRGNIb3N0TmFtZSIsICJEQy1WTSIsCiAgICAgICAgIi1EY1ByaXZhdGVJcCIsICcxMC4wLjEwLjEwJywKICAgICAgICAiLVNxbERhdGFEcml2ZUxldHRlciIsICdGJywKICAgICAgICAiLVJlY29uY2lsZVNjcmlwdFBhdGgiLCAkUmVjb25jaWxlU2NyaXB0UGF0aAogICAgKQoKICAgICYgIiRlbnY6U3lzdGVtUm9vdFxTeXN0ZW0zMlxXaW5kb3dzUG93ZXJTaGVsbFx2MS4wXHBvd2Vyc2hlbGwuZXhlIiBAc2NyaXB0QXJncyAqPiAkQ29uc29sZUxvZ1BhdGgKICAgICRleGl0Q29kZSA9ICRMQVNURVhJVENPREUKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJTUUwgbm9kZSBjb25maWd1cmF0aW9uIHNjcmlwdCBleGl0IGNvZGU6ICRleGl0Q29kZSIKICAgIGlmICgkZXhpdENvZGUgLW5lIDApIHsKICAgICAgICB0aHJvdyAiU1FMIG5vZGUgYm9vdHN0cmFwIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAkZXhpdENvZGUuIFNlZSAkQ29uc29sZUxvZ1BhdGguIgogICAgfQp9CmNhdGNoIHsKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJFUlJPUjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICB0aHJvdwp9CmZpbmFsbHkgewogICAgVW5yZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1Db25maXJtOiRmYWxzZSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQogICAgV3JpdGUtTGF1bmNoZXJMb2cgIlJlbW92ZWQgaW5pdGlhbCBsYXVuY2hlciB0YXNrIGlmIGl0IHN0aWxsIGV4aXN0ZWQiCn0KJ0AKClNldC1Db250ZW50IC1QYXRoICRMYXVuY2hlclBhdGggLVZhbHVlICRMYXVuY2hlckJvZHkgLUVuY29kaW5nIFVURjggLUZvcmNlCiYgaWNhY2xzLmV4ZSAkTGF1bmNoZXJQYXRoIC9pbmhlcml0YW5jZTpyIC9ncmFudDpyICJTWVNURU06KEYpIiAiQWRtaW5pc3RyYXRvcnM6KEYpIiB8IE91dC1OdWxsCldyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJExhdW5jaGVyUGF0aCIKCiRhY3Rpb24gPSBOZXctU2NoZWR1bGVkVGFza0FjdGlvbiAtRXhlY3V0ZSAiUG93ZXJTaGVsbC5leGUiIC1Bcmd1bWVudCAiLU5vUHJvZmlsZSAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtRmlsZSBgIiRMYXVuY2hlclBhdGhgIiIKJHRyaWdnZXIgPSBOZXctU2NoZWR1bGVkVGFza1RyaWdnZXIgLU9uY2UgLUF0IChHZXQtRGF0ZSkuQWRkTWludXRlcygxKQpSZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1BY3Rpb24gJGFjdGlvbiAtVHJpZ2dlciAkdHJpZ2dlciAtVXNlciAiU1lTVEVNIiAtUnVuTGV2ZWwgSGlnaGVzdCAtRm9yY2UgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIlJlZ2lzdGVyZWQgJEluaXRpYWxUYXNrTmFtZSBhcyBTWVNURU0iCgpTdGFydC1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRlZCAkSW5pdGlhbFRhc2tOYW1lIgo=" - }, - "platform_config": [], - "preemptible_instance_config": [], - "preserve_boot_volume": null, - "preserve_data_volumes_created_at_launch": null, - "private_ip": "10.0.20.10", - "public_ip": "155.248.211.55", - "region": "us-sanjose-1", - "security_attributes": {}, - "security_attributes_state": "STABLE", - "shape": "VM.Standard.E5.Flex", - "shape_config": [ - { - "baseline_ocpu_utilization": "", - "gpu_description": "", - "gpus": 0, - "local_disk_description": "", - "local_disks": 0, - "local_disks_total_size_in_gbs": 0, - "max_vnic_attachments": 8, - "memory_in_gbs": 32, - "networking_bandwidth_in_gbps": 8, - "nvmes": 0, - "ocpus": 8, - "processor_description": "2.3 GHz AMD EPYCâ„¢ 9J14 (Genoa)", - "vcpus": 16 - } - ], - "source_details": [ - { - "boot_volume_size_in_gbs": "100", - "boot_volume_vpus_per_gb": "10", - "instance_source_image_filter_details": [], - "is_preserve_boot_volume_enabled": false, - "kms_key_id": "", - "source_id": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", - "source_type": "image" - } - ], - "state": "RUNNING", - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", - "system_tags": {}, - "time_created": "2026-08-10 12:05:25.702 +0000 UTC", - "time_maintenance_reboot_due": "", - "timeouts": null, - "update_operation_constraint": null - }, - "sensitive_attributes": [ - [ - { - "type": "get_attr", - "value": "metadata" - }, - { - "type": "index", - "value": { - "value": "user_data", - "type": "string" - } - } - ] - ], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNzAwMDAwMDAwMDAwLCJkZWxldGUiOjQ1MDAwMDAwMDAwMDAsInVwZGF0ZSI6MjcwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql1", - "oci_core_subnet.dc", - "oci_core_subnet.sql1", - "oci_core_vcn.sql", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_instance", - "name": "sql2", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "agent_config": [ - { - "are_all_plugins_disabled": false, - "is_management_disabled": false, - "is_monitoring_disabled": false, - "plugins_config": [ - { - "desired_state": "ENABLED", - "name": "Compute Instance Run Command" - }, - { - "desired_state": "ENABLED", - "name": "Compute Instance Monitoring" - }, - { - "desired_state": "ENABLED", - "name": "Management Agent" - }, - { - "desired_state": "ENABLED", - "name": "Fleet Application Management Service" - }, - { - "desired_state": "ENABLED", - "name": "Cloud Guard Workload Protection" - } - ] - } - ], - "async": null, - "availability_config": [ - { - "is_live_migration_preferred": false, - "recovery_action": "RESTORE_INSTANCE" - } - ], - "availability_domain": "RAVo:US-SANJOSE-1-AD-1", - "boot_volume_id": "ocid1.bootvolume.oc1.us-sanjose-1.abzwuljrgk5rv6a25vjjmnqun2wjzilwa4bqa2bkcngwb5l7mrahskmrowya", - "capacity_reservation_id": null, - "cluster_placement_group_id": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "compute_cluster_id": null, - "create_vnic_details": [ - { - "assign_ipv6ip": false, - "assign_private_dns_record": false, - "assign_public_ip": "true", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:05:24.120Z" - }, - "display_name": "SQL2", - "freeform_tags": { - "Domain": "mssqlaoag.demo", - "Project": "sqlagtest", - "Role": "sql-node" - }, - "hostname_label": "sql2", - "ipv6address_ipv6subnet_cidr_pair_details": [], - "nsg_ids": [], - "private_ip": "10.0.30.10", - "security_attributes": {}, - "skip_source_dest_check": false, - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", - "vlan_id": "" - } - ], - "dedicated_vm_host_id": null, - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:05:23.980Z" - }, - "display_name": "SQL2", - "extended_metadata": {}, - "fault_domain": "FAULT-DOMAIN-3", - "freeform_tags": { - "Domain": "mssqlaoag.demo", - "Project": "sqlagtest", - "Role": "sql-node" - }, - "hostname_label": "sql2", - "id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyic7cfzmkslnkhtpv34tzzquvaqlqpj2vpyw74sq5uo3wpa", - "image": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", - "instance_configuration_id": null, - "instance_options": [ - { - "are_legacy_imds_endpoints_disabled": true - } - ], - "ipxe_script": null, - "is_cross_numa_node": false, - "is_pv_encryption_in_transit_enabled": null, - "launch_mode": "NATIVE", - "launch_options": [ - { - "boot_volume_type": "PARAVIRTUALIZED", - "firmware": "UEFI_64", - "is_consistent_volume_naming_enabled": false, - "is_pv_encryption_in_transit_enabled": false, - "network_type": "PARAVIRTUALIZED", - "remote_data_volume_type": "PARAVIRTUALIZED" - } - ], - "launch_volume_attachments": null, - "licensing_configs": [], - "metadata": { - "user_data": "I3BzMV9zeXNuYXRpdmUKJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICJTdG9wIgoKJFNldHVwRGlyID0gIkM6XEFPQUdBdXRvbWF0aW9uXFdpbmRvd3MiCiRTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAiMDItY29uZmlndXJlLXNxbC1ub2RlLnBzMSIKJFdzZmNTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxXU0ZDIgokV3NmY1NjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDMtY29uZmlndXJlLXdzZmMucHMxIgokU2FtcGxlU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkV3NmY1NldHVwRGlyICIwNC1wcmVwYXJlLXNhbXBsZS1kYXRhYmFzZS5wczEiCiRBZ1NjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDUtY29uZmlndXJlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEiCiRTYWZlRmFpbG92ZXJTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA2LXNhZmUtcGxhbm5lZC1mYWlsb3Zlci5wczEiCiRSZWNvbmNpbGVTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA3LXJlY29uY2lsZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxIgokTGF1bmNoZXJQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAiMDAtbGF1bmNoLXNxbC1ub2RlLWJvb3RzdHJhcC5wczEiCiRXcmFwcGVyTG9nUGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgInVzZXItZGF0YS1ib290c3RyYXAubG9nIgokSW5pdGlhbFRhc2tOYW1lID0gIkFPQUctQ29uZmlndXJlLVdpbmRvd3NOb2RlLUluaXRpYWwiCk5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFNldHVwRGlyIC1Gb3JjZSB8IE91dC1OdWxsCk5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFdzZmNTZXR1cERpciAtRm9yY2UgfCBPdXQtTnVsbAoKZnVuY3Rpb24gV3JpdGUtQm9vdHN0cmFwTG9nIHsKICAgIHBhcmFtKFtzdHJpbmddJE1lc3NhZ2UpCiAgICBBZGQtQ29udGVudCAtUGF0aCAkV3JhcHBlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQoKdHJhcCB7CiAgICB0cnkgewogICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRVJST1I6ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIgogICAgfQogICAgY2F0Y2ggewogICAgICAgICMgUHJlc2VydmUgdGhlIG9yaWdpbmFsIGJvb3RzdHJhcCBlcnJvciBpZiBsb2dnaW5nIGl0c2VsZiBpcyB1bmF2YWlsYWJsZS4KICAgIH0KICAgIHRocm93Cn0KCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRpbmcgU1FMIG5vZGUgdXNlcl9kYXRhIGJvb3RzdHJhcCBmb3IgU1FMMiIKCiMgRXN0YWJsaXNoIHJlY292ZXJ5IGFjY2VzcyBiZWZvcmUgZG93bmxvYWRpbmcgYW55IGF1dG9tYXRpb24gYXJ0aWZhY3RzLiBJZiBhCiMgUEFSLCBETlMsIG9yIE9iamVjdCBTdG9yYWdlIHJlcXVlc3QgZmFpbHMsIHRoZSBvcGVyYXRvciBjYW4gc3RpbGwgUkRQIGluIHdpdGgKIyB0aGUgbG9jYWwgYWNjb3VudHMgYW5kIGluc3BlY3QgdGhlIGJvb3RzdHJhcCBsb2dzLgpmdW5jdGlvbiBTZXQtTG9jYWxCb290c3RyYXBBY2Nlc3MgewogICAgV3JpdGUtQm9vdHN0cmFwTG9nICJDb25maWd1cmluZyBsb2NhbCBib290c3RyYXAgYWNjb3VudHMiCiAgICAkcGFzc3dvcmQgPSAnUEBzc3cwcmRAMTIzJwogICAgaWYgKFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJHBhc3N3b3JkKSkgewogICAgICAgIHRocm93ICJ3aW5kb3dzX2FkbWluX3Bhc3N3b3JkIHdhcyBub3QgcmVuZGVyZWQgaW50byBTUUwgbm9kZSB1c2VyX2RhdGEuIgogICAgfQoKICAgICRhZG1pblJlc3VsdCA9ICYgbmV0LmV4ZSB1c2VyIEFkbWluaXN0cmF0b3IgJHBhc3N3b3JkIC9sb2dvbnBhc3N3b3JkY2hnOm5vIC9hY3RpdmU6eWVzIDI+JjEKICAgIGlmICgkTEFTVEVYSVRDT0RFIC1uZSAwKSB7CiAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBjb25maWd1cmUgbG9jYWwgQWRtaW5pc3RyYXRvciBiZWZvcmUgZG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdHM6ICQoJGFkbWluUmVzdWx0IC1qb2luICcgJykiCiAgICB9CiAgICBXcml0ZS1Cb290c3RyYXBMb2cgIlJlc2V0IGxvY2FsIEFkbWluaXN0cmF0b3IgcGFzc3dvcmQgYW5kIGVuYWJsZWQgYWNjb3VudCIKCiAgICBpZiAoJ29wYycgLWFuZCAnb3BjJyAtbmUgJ0FkbWluaXN0cmF0b3InKSB7CiAgICAgICAgJHVzZXJSZXN1bHQgPSAmIG5ldC5leGUgdXNlciAnb3BjJyAkcGFzc3dvcmQgL2xvZ29ucGFzc3dvcmRjaGc6bm8gL2FjdGl2ZTp5ZXMgMj4mMQogICAgICAgIGlmICgkTEFTVEVYSVRDT0RFIC1uZSAwKSB7CiAgICAgICAgICAgICR1c2VyUmVzdWx0ID0gJiBuZXQuZXhlIHVzZXIgJ29wYycgJHBhc3N3b3JkIC9hZGQgL2xvZ29ucGFzc3dvcmRjaGc6bm8gL2FjdGl2ZTp5ZXMgMj4mMQogICAgICAgICAgICBpZiAoJExBU1RFWElUQ09ERSAtbmUgMCkgewogICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBjcmVhdGUgbG9jYWwgb3BjIGJlZm9yZSBkb3dubG9hZGluZyBhdXRvbWF0aW9uIGFydGlmYWN0czogJCgkdXNlclJlc3VsdCAtam9pbiAnICcpIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiUmVzZXQgbG9jYWwgb3BjIHBhc3N3b3JkIGFuZCBlbmFibGVkIGFjY291bnQiCgogICAgICAgIGZvcmVhY2ggKCRncm91cCBpbiBAKCdBZG1pbmlzdHJhdG9ycycsICdSZW1vdGUgRGVza3RvcCBVc2VycycpKSB7CiAgICAgICAgICAgICRtZW1iZXJQYXR0ZXJuID0gIig/aSkoXnxcXCkkKFtyZWdleF06OkVzY2FwZSgnb3BjJykpJCIKICAgICAgICAgICAgJGFscmVhZHlNZW1iZXIgPSAkZmFsc2UKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRhbHJlYWR5TWVtYmVyID0gQCgKICAgICAgICAgICAgICAgICAgICBHZXQtTG9jYWxHcm91cE1lbWJlciAtR3JvdXAgJGdyb3VwIC1FcnJvckFjdGlvbiBTdG9wIHwKICAgICAgICAgICAgICAgICAgICAgICAgV2hlcmUtT2JqZWN0IHsgJF8uTmFtZSAtbWF0Y2ggJG1lbWJlclBhdHRlcm4gfQogICAgICAgICAgICAgICAgKS5Db3VudCAtZ3QgMAogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiQ291bGQgbm90IHByZS1jaGVjayBvcGMgbWVtYmVyc2hpcCBpbiAkZ3JvdXA7IHVzaW5nIG5ldC5leGUgcmVzdWx0IgogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGFscmVhZHlNZW1iZXIpIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAib3BjIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgJGdyb3VwOyBjb250aW51aW5nIgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGdyb3VwUmVzdWx0ID0gJiBuZXQuZXhlIGxvY2FsZ3JvdXAgJGdyb3VwICdvcGMnIC9hZGQgMj4mMQogICAgICAgICAgICAkZ3JvdXBFeGl0Q29kZSA9ICRMQVNURVhJVENPREUKICAgICAgICAgICAgJGdyb3VwT3V0cHV0ID0gKCRncm91cFJlc3VsdCAtam9pbiAiYG4iKQoKICAgICAgICAgICAgaWYgKCRncm91cEV4aXRDb2RlIC1lcSAwKSB7CiAgICAgICAgICAgICAgICBXcml0ZS1Cb290c3RyYXBMb2cgIkFkZGVkIG9wYyB0byAkZ3JvdXAiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZWlmICgkZ3JvdXBPdXRwdXQgLW1hdGNoICcoP2kpMTM3OHxhbHJlYWR5IGEgbWVtYmVyIG9mIHRoZSBncm91cCcpIHsKICAgICAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAib3BjIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgJGdyb3VwOyBjb250aW51aW5nIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBhZGQgb3BjIHRvICRncm91cCBiZWZvcmUgZG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdHMuIG5ldC5leGUgZXhpdCBjb2RlICRncm91cEV4aXRDb2RlLiBPdXRwdXQ6ICRncm91cE91dHB1dCIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBTZXQtSXRlbVByb3BlcnR5IC1QYXRoICJIS0xNOlxTeXN0ZW1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxUZXJtaW5hbCBTZXJ2ZXIiIC1OYW1lICJmRGVueVRTQ29ubmVjdGlvbnMiIC1WYWx1ZSAwCiAgICBFbmFibGUtTmV0RmlyZXdhbGxSdWxlIC1EaXNwbGF5R3JvdXAgIlJlbW90ZSBEZXNrdG9wIiAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IE91dC1OdWxsCiAgICBXcml0ZS1Cb290c3RyYXBMb2cgIkNvbmZpZ3VyZWQgbG9jYWwgQWRtaW5pc3RyYXRvciBhbmQgb3BjIGNyZWRlbnRpYWxzIGJlZm9yZSBhdXRvbWF0aW9uIGRvd25sb2FkcyIKfQoKU2V0LUxvY2FsQm9vdHN0cmFwQWNjZXNzCgpmdW5jdGlvbiBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IHsKICAgIHBhcmFtKFtzdHJpbmddJFVyaSwgW3N0cmluZ10kUGF0aCkKICAgIGlmIChbc3RyaW5nXTo6SXNOdWxsT3JXaGl0ZVNwYWNlKCRVcmkpKSB7IHJldHVybiB9CiAgICBbTmV0LlNlcnZpY2VQb2ludE1hbmFnZXJdOjpTZWN1cml0eVByb3RvY29sID0gW05ldC5TZWN1cml0eVByb3RvY29sVHlwZV06OlRsczEyCgogICAgZm9yICgkYXR0ZW1wdCA9IDE7ICRhdHRlbXB0IC1sZSAzMDsgJGF0dGVtcHQrKykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWRpbmcgYXV0b21hdGlvbiBhcnRpZmFjdCBhdHRlbXB0PSRhdHRlbXB0IHBhdGg9JFBhdGgiCiAgICAgICAgICAgIEludm9rZS1XZWJSZXF1ZXN0IC1Vc2VCYXNpY1BhcnNpbmcgLVVyaSAkVXJpIC1PdXRGaWxlICRQYXRoIC1FcnJvckFjdGlvbiBTdG9wCiAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRQYXRoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgIkF1dG9tYXRpb24gc2NyaXB0IGRvd25sb2FkIHJldHVybmVkIHdpdGhvdXQgY3JlYXRpbmcgJFBhdGgiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWRlZCBhdXRvbWF0aW9uIGFydGlmYWN0IHBhdGg9JFBhdGgiCiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KICAgICAgICBjYXRjaCB7CiAgICAgICAgICAgIGlmICgkYXR0ZW1wdCAtZ2UgMzApIHsKICAgICAgICAgICAgICAgIHRocm93ICJBdXRvbWF0aW9uIGFydGlmYWN0IGRvd25sb2FkIGZhaWxlZCBhZnRlciAkYXR0ZW1wdCBhdHRlbXB0cyBmb3IgJHtQYXRofTogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiRG93bmxvYWQgd2FybmluZyBwYXRoPSR7UGF0aH0gYXR0ZW1wdD0kYXR0ZW1wdGA6ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIgogICAgICAgICAgICBTdGFydC1TbGVlcCAtU2Vjb25kcyAxMAogICAgICAgIH0KICAgIH0KfQoKRG93bmxvYWQtQXV0b21hdGlvblNjcmlwdCAtVXJpICdodHRwczovL29iamVjdHN0b3JhZ2UudXMtc2Fuam9zZS0xLm9yYWNsZWNsb3VkLmNvbS9wL1BMUFQtT09jYXpsYlJNMENCNnBKR3c0ZHMyMDVqQ1NWelpGTHhRRnYxOWVFQktRdkxINF9hdnp0dDFaa1ZJaVovbi9pZHp4dmt6MXpkdWcvYi9hb2FnLWF1dG9tYXRpb24tZTA2ZmQyYjhmYTJmL28vc2NyaXB0cy8wMi1jb25maWd1cmUtc3FsLW5vZGUucHMxJyAtUGF0aCAkU2NyaXB0UGF0aAomIGljYWNscy5leGUgJFNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKV3JpdGUtQm9vdHN0cmFwTG9nICJXcm90ZSAkU2NyaXB0UGF0aCIKCkRvd25sb2FkLUF1dG9tYXRpb25TY3JpcHQgLVVyaSAnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9iRFk4VVRyQ1FmVU15b0diaUdkVXhrMWtGV3plWFZKOTJXY2pjYXJYS05qNWQ0LTZ5aFpCOHdDRWh2VG5qWXlCL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDMtY29uZmlndXJlLXdzZmMucHMxJyAtUGF0aCAkV3NmY1NjcmlwdFBhdGgKJiBpY2FjbHMuZXhlICRXc2ZjU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIldyb3RlICRXc2ZjU2NyaXB0UGF0aCIKCmlmICgtbm90IFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJycpKSB7CiAgICBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IC1VcmkgJycgLVBhdGggJFNhbXBsZVNjcmlwdFBhdGgKICAgICYgaWNhY2xzLmV4ZSAkU2FtcGxlU2NyaXB0UGF0aCAvaW5oZXJpdGFuY2U6ciAvZ3JhbnQ6ciAiU1lTVEVNOihGKSIgIkFkbWluaXN0cmF0b3JzOihGKSIgfCBPdXQtTnVsbAogICAgV3JpdGUtQm9vdHN0cmFwTG9nICJXcm90ZSAkU2FtcGxlU2NyaXB0UGF0aCIKfQoKaWYgKC1ub3QgW3N0cmluZ106OklzTnVsbE9yV2hpdGVTcGFjZSgnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9fVDJVRTVFVGxIeVd1ZUxkYW9PZElUZXpNRzF6dXpRdnMzYTJ2UzRna09YZzd3WThuV2lFOWFEVVpvd0owU2NwL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDUtY29uZmlndXJlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEnKSkgewogICAgRG93bmxvYWQtQXV0b21hdGlvblNjcmlwdCAtVXJpICdodHRwczovL29iamVjdHN0b3JhZ2UudXMtc2Fuam9zZS0xLm9yYWNsZWNsb3VkLmNvbS9wL19UMlVFNUVUbEh5V3VlTGRhb09kSVRlek1HMXp1elF2czNhMnZTNGdrT1hnN3dZOG5XaUU5YURVWm93SjBTY3Avbi9pZHp4dmt6MXpkdWcvYi9hb2FnLWF1dG9tYXRpb24tZTA2ZmQyYjhmYTJmL28vc2NyaXB0cy8wNS1jb25maWd1cmUtYXZhaWxhYmlsaXR5LWdyb3VwLnBzMScgLVBhdGggJEFnU2NyaXB0UGF0aAogICAgJiBpY2FjbHMuZXhlICRBZ1NjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJEFnU2NyaXB0UGF0aCIKfQoKaWYgKC1ub3QgW3N0cmluZ106OklzTnVsbE9yV2hpdGVTcGFjZSgnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC9Cemp4WUNaX183SEtkbFB4WWMyTEdYV1NBcjFwSmRGc095TDM5aUcxN1UxNlZMZ3RpMjM2NUQ0bnQyd3VaOXRaL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDYtc2FmZS1wbGFubmVkLWZhaWxvdmVyLnBzMScpKSB7CiAgICBEb3dubG9hZC1BdXRvbWF0aW9uU2NyaXB0IC1VcmkgJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvQnpqeFlDWl9fN0hLZGxQeFljMkxHWFdTQXIxcEpkRnNPeUwzOWlHMTdVMTZWTGd0aTIzNjVENG50Mnd1Wjl0Wi9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA2LXNhZmUtcGxhbm5lZC1mYWlsb3Zlci5wczEnIC1QYXRoICRTYWZlRmFpbG92ZXJTY3JpcHRQYXRoCiAgICAmIGljYWNscy5leGUgJFNhZmVGYWlsb3ZlclNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJFNhZmVGYWlsb3ZlclNjcmlwdFBhdGgiCn0KCmlmICgtbm90IFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJ2h0dHBzOi8vb2JqZWN0c3RvcmFnZS51cy1zYW5qb3NlLTEub3JhY2xlY2xvdWQuY29tL3AvMERvUFI4NjBLdjRkQl8ya2d1LXpVRTJEWkdfcnFKaWpmY1BXME9mTDFFTXVVQzlnNXVhcVRING9MMFVQYjlKci9uL2lkenh2a3oxemR1Zy9iL2FvYWctYXV0b21hdGlvbi1lMDZmZDJiOGZhMmYvby9zY3JpcHRzLzA3LXJlY29uY2lsZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxJykpIHsKICAgIERvd25sb2FkLUF1dG9tYXRpb25TY3JpcHQgLVVyaSAnaHR0cHM6Ly9vYmplY3RzdG9yYWdlLnVzLXNhbmpvc2UtMS5vcmFjbGVjbG91ZC5jb20vcC8wRG9QUjg2MEt2NGRCXzJrZ3UtelVFMkRaR19ycUppamZjUFcwT2ZMMUVNdVVDOWc1dWFxVEg0b0wwVVBiOUpyL24vaWR6eHZrejF6ZHVnL2IvYW9hZy1hdXRvbWF0aW9uLWUwNmZkMmI4ZmEyZi9vL3NjcmlwdHMvMDctcmVjb25jaWxlLWF2YWlsYWJpbGl0eS1ncm91cC5wczEnIC1QYXRoICRSZWNvbmNpbGVTY3JpcHRQYXRoCiAgICAmIGljYWNscy5leGUgJFJlY29uY2lsZVNjcmlwdFBhdGggL2luaGVyaXRhbmNlOnIgL2dyYW50OnIgIlNZU1RFTTooRikiICJBZG1pbmlzdHJhdG9yczooRikiIHwgT3V0LU51bGwKICAgIFdyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJFJlY29uY2lsZVNjcmlwdFBhdGgiCn0KCiRMYXVuY2hlckJvZHkgPSBAJwokRXJyb3JBY3Rpb25QcmVmZXJlbmNlID0gIlN0b3AiCiRTZXR1cERpciA9ICJDOlxBT0FHQXV0b21hdGlvblxXaW5kb3dzIgokU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgIjAyLWNvbmZpZ3VyZS1zcWwtbm9kZS5wczEiCiRXc2ZjU2V0dXBEaXIgPSAiQzpcQU9BR0F1dG9tYXRpb25cV1NGQyIKJFNhbXBsZVNjcmlwdFBhdGggPSBKb2luLVBhdGggJFdzZmNTZXR1cERpciAiMDQtcHJlcGFyZS1zYW1wbGUtZGF0YWJhc2UucHMxIgokQWdTY3JpcHRQYXRoID0gSm9pbi1QYXRoICRXc2ZjU2V0dXBEaXIgIjA1LWNvbmZpZ3VyZS1hdmFpbGFiaWxpdHktZ3JvdXAucHMxIgokUmVjb25jaWxlU2NyaXB0UGF0aCA9IEpvaW4tUGF0aCAkV3NmY1NldHVwRGlyICIwNy1yZWNvbmNpbGUtYXZhaWxhYmlsaXR5LWdyb3VwLnBzMSIKJExhdW5jaGVyTG9nUGF0aCA9IEpvaW4tUGF0aCAkU2V0dXBEaXIgImxhdW5jaGVyLmxvZyIKJENvbnNvbGVMb2dQYXRoID0gSm9pbi1QYXRoICRTZXR1cERpciAid2luZG93cy1ib290c3RyYXAtY29uc29sZS5sb2ciCiRJbml0aWFsVGFza05hbWUgPSAiQU9BRy1Db25maWd1cmUtV2luZG93c05vZGUtSW5pdGlhbCIKZnVuY3Rpb24gV3JpdGUtTGF1bmNoZXJMb2cgewogICAgcGFyYW0oW3N0cmluZ10kTWVzc2FnZSkKICAgIEFkZC1Db250ZW50IC1QYXRoICRMYXVuY2hlckxvZ1BhdGggLVZhbHVlICgiezA6c30gezF9IiAtZiAoR2V0LURhdGUpLCAkTWVzc2FnZSkKfQp0cnkgewogICAgV3JpdGUtTGF1bmNoZXJMb2cgIlN0YXJ0aW5nIFNRTCBub2RlIGNvbmZpZ3VyYXRpb24gbGF1bmNoZXIgZm9yIFNRTDIiCiAgICAkc2NyaXB0QXJncyA9IEAoCiAgICAgICAgIi1Ob1Byb2ZpbGUiLAogICAgICAgICItRXhlY3V0aW9uUG9saWN5IiwgIkJ5cGFzcyIsCiAgICAgICAgIi1GaWxlIiwgJFNjcmlwdFBhdGgsCiAgICAgICAgIi1Eb21haW5OYW1lIiwgJ21zc3FsYW9hZy5kZW1vJywKICAgICAgICAiLURvbWFpbk5ldGJpb3NOYW1lIiwgJ01TU1FMQU9BRycsCiAgICAgICAgIi1Eb21haW5BZG1pblVzZXIiLCAnZG9tYWluYWRtaW4nLAogICAgICAgICItRG9tYWluQWRtaW5QYXNzd29yZCIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItU3FsU2VydmljZUFjY291bnRVc2VyIiwgJ3NxbHNhJywKICAgICAgICAiLVNxbFNlcnZpY2VBY2NvdW50UGFzc3dvcmQiLCAnUEBzc3cwcmRAMTIzJywKICAgICAgICAiLUF1dG9JbnN0YWxsU3FsU2VydmVyIiwgJ3RydWUnLAogICAgICAgICItSW5zdGFsbFNzbXMiLCAndHJ1ZScsCiAgICAgICAgIi1TcWxTZXJ2ZXJEb3dubG9hZFVybCIsICdodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjM0NDYyNicsCiAgICAgICAgIi1Tc21zRG93bmxvYWRVcmwiLCAnaHR0cHM6Ly9ha2EubXMvc3Ntcy8yMi9yZWxlYXNlL3ZzX1NTTVMuZXhlJywKICAgICAgICAiLUF1dG9Db25maWd1cmVXc2ZjIiwgJ3RydWUnLAogICAgICAgICItV3NmY0NsdXN0ZXJOYW1lIiwgJ1NRTEFHQ0xVU1RFUicsCiAgICAgICAgIi1Xc2ZjUHJpbWFyeU5vZGUiLCAnU1FMMScsCiAgICAgICAgIi1Xc2ZjQ2x1c3Rlck5vZGVzIiwgJ1NRTDEsU1FMMicsCiAgICAgICAgIi1Xc2ZjQ2x1c3RlclN0YXRpY0FkZHJlc3NlcyIsICcxMC4wLjIwLjIwLDEwLjAuMzAuMjAnLAogICAgICAgICItV3NmY1dpdG5lc3NTaGFyZSIsICdcXERDLVZNLm1zc3FsYW9hZy5kZW1vXENsdXN0ZXJXaXRuZXNzJywKICAgICAgICAiLVNraXBDbHVzdGVyVmFsaWRhdGlvbiIsICd0cnVlJywKICAgICAgICAiLUFvYWdEYXRhYmFzZU5hbWUiLCAnQWR2ZW50dXJlV29ya3MyMDI1JywKICAgICAgICAiLUFvYWdBdmFpbGFiaWxpdHlHcm91cE5hbWUiLCAnVGVzdEFPQUcnLAogICAgICAgICItQW9hZ0xpc3RlbmVyTmFtZSIsICdBT0FHLUxTTicsCiAgICAgICAgIi1Bb2FnTGlzdGVuZXJQb3J0IiwgJzE0MzMnLAogICAgICAgICItQW9hZ0xpc3RlbmVySXBzIiwgJzEwLjAuMjAuMzAsMTAuMC4zMC4zMCcsCiAgICAgICAgIi1IYWRyRW5kcG9pbnROYW1lIiwgJ0hhZHJfZW5kcG9pbnQnLAogICAgICAgICItSGFkckVuZHBvaW50UG9ydCIsICc1MDIyJywKICAgICAgICAiLVNhbXBsZURhdGFiYXNlRG93bmxvYWRVcmwiLCAnaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9zcWwtc2VydmVyLXNhbXBsZXMvcmVsZWFzZXMvZG93bmxvYWQvYWR2ZW50dXJld29ya3MvQWR2ZW50dXJlV29ya3MyMDI1LmJhaycsCiAgICAgICAgIi1TYW1wbGVTY3JpcHRQYXRoIiwgJFNhbXBsZVNjcmlwdFBhdGgsCiAgICAgICAgIi1BZ1NjcmlwdFBhdGgiLCAkQWdTY3JpcHRQYXRoLAogICAgICAgICItTG9jYWxBZG1pblVzZXIiLCAnb3BjJywKICAgICAgICAiLUxvY2FsQWRtaW5QYXNzd29yZCIsICdQQHNzdzByZEAxMjMnLAogICAgICAgICItVGFyZ2V0Q29tcHV0ZXJOYW1lIiwgJ1NRTDInLAogICAgICAgICItRGNIb3N0TmFtZSIsICJEQy1WTSIsCiAgICAgICAgIi1EY1ByaXZhdGVJcCIsICcxMC4wLjEwLjEwJywKICAgICAgICAiLVNxbERhdGFEcml2ZUxldHRlciIsICdGJywKICAgICAgICAiLVJlY29uY2lsZVNjcmlwdFBhdGgiLCAkUmVjb25jaWxlU2NyaXB0UGF0aAogICAgKQoKICAgICYgIiRlbnY6U3lzdGVtUm9vdFxTeXN0ZW0zMlxXaW5kb3dzUG93ZXJTaGVsbFx2MS4wXHBvd2Vyc2hlbGwuZXhlIiBAc2NyaXB0QXJncyAqPiAkQ29uc29sZUxvZ1BhdGgKICAgICRleGl0Q29kZSA9ICRMQVNURVhJVENPREUKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJTUUwgbm9kZSBjb25maWd1cmF0aW9uIHNjcmlwdCBleGl0IGNvZGU6ICRleGl0Q29kZSIKICAgIGlmICgkZXhpdENvZGUgLW5lIDApIHsKICAgICAgICB0aHJvdyAiU1FMIG5vZGUgYm9vdHN0cmFwIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAkZXhpdENvZGUuIFNlZSAkQ29uc29sZUxvZ1BhdGguIgogICAgfQp9CmNhdGNoIHsKICAgIFdyaXRlLUxhdW5jaGVyTG9nICJFUlJPUjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiCiAgICB0aHJvdwp9CmZpbmFsbHkgewogICAgVW5yZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1Db25maXJtOiRmYWxzZSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQogICAgV3JpdGUtTGF1bmNoZXJMb2cgIlJlbW92ZWQgaW5pdGlhbCBsYXVuY2hlciB0YXNrIGlmIGl0IHN0aWxsIGV4aXN0ZWQiCn0KJ0AKClNldC1Db250ZW50IC1QYXRoICRMYXVuY2hlclBhdGggLVZhbHVlICRMYXVuY2hlckJvZHkgLUVuY29kaW5nIFVURjggLUZvcmNlCiYgaWNhY2xzLmV4ZSAkTGF1bmNoZXJQYXRoIC9pbmhlcml0YW5jZTpyIC9ncmFudDpyICJTWVNURU06KEYpIiAiQWRtaW5pc3RyYXRvcnM6KEYpIiB8IE91dC1OdWxsCldyaXRlLUJvb3RzdHJhcExvZyAiV3JvdGUgJExhdW5jaGVyUGF0aCIKCiRhY3Rpb24gPSBOZXctU2NoZWR1bGVkVGFza0FjdGlvbiAtRXhlY3V0ZSAiUG93ZXJTaGVsbC5leGUiIC1Bcmd1bWVudCAiLU5vUHJvZmlsZSAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtRmlsZSBgIiRMYXVuY2hlclBhdGhgIiIKJHRyaWdnZXIgPSBOZXctU2NoZWR1bGVkVGFza1RyaWdnZXIgLU9uY2UgLUF0IChHZXQtRGF0ZSkuQWRkTWludXRlcygxKQpSZWdpc3Rlci1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lIC1BY3Rpb24gJGFjdGlvbiAtVHJpZ2dlciAkdHJpZ2dlciAtVXNlciAiU1lTVEVNIiAtUnVuTGV2ZWwgSGlnaGVzdCAtRm9yY2UgfCBPdXQtTnVsbApXcml0ZS1Cb290c3RyYXBMb2cgIlJlZ2lzdGVyZWQgJEluaXRpYWxUYXNrTmFtZSBhcyBTWVNURU0iCgpTdGFydC1TY2hlZHVsZWRUYXNrIC1UYXNrTmFtZSAkSW5pdGlhbFRhc2tOYW1lCldyaXRlLUJvb3RzdHJhcExvZyAiU3RhcnRlZCAkSW5pdGlhbFRhc2tOYW1lIgo=" - }, - "platform_config": [], - "preemptible_instance_config": [], - "preserve_boot_volume": null, - "preserve_data_volumes_created_at_launch": null, - "private_ip": "10.0.30.10", - "public_ip": "170.9.30.132", - "region": "us-sanjose-1", - "security_attributes": {}, - "security_attributes_state": "STABLE", - "shape": "VM.Standard.E5.Flex", - "shape_config": [ - { - "baseline_ocpu_utilization": "", - "gpu_description": "", - "gpus": 0, - "local_disk_description": "", - "local_disks": 0, - "local_disks_total_size_in_gbs": 0, - "max_vnic_attachments": 8, - "memory_in_gbs": 32, - "networking_bandwidth_in_gbps": 8, - "nvmes": 0, - "ocpus": 8, - "processor_description": "2.3 GHz AMD EPYCâ„¢ 9J14 (Genoa)", - "vcpus": 16 - } - ], - "source_details": [ - { - "boot_volume_size_in_gbs": "100", - "boot_volume_vpus_per_gb": "10", - "instance_source_image_filter_details": [], - "is_preserve_boot_volume_enabled": false, - "kms_key_id": "", - "source_id": "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa", - "source_type": "image" - } - ], - "state": "RUNNING", - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", - "system_tags": {}, - "time_created": "2026-08-10 12:05:24.399 +0000 UTC", - "time_maintenance_reboot_due": "", - "timeouts": null, - "update_operation_constraint": null - }, - "sensitive_attributes": [ - [ - { - "type": "get_attr", - "value": "metadata" - }, - { - "type": "index", - "value": { - "value": "user_data", - "type": "string" - } - } - ] - ], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNzAwMDAwMDAwMDAwLCJkZWxldGUiOjQ1MDAwMDAwMDAwMDAsInVwZGF0ZSI6MjcwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql2", - "oci_core_subnet.dc", - "oci_core_subnet.sql2", - "oci_core_vcn.sql", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_internet_gateway", - "name": "sql", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:06.246Z" - }, - "display_name": "Internet gateway-SQL_VCN", - "enabled": true, - "freeform_tags": { - "Project": "sqlagtest" - }, - "id": "ocid1.internetgateway.oc1.us-sanjose-1.aaaaaaaahuyvk6dw4fmunjpobspq6pv2zsnlmgaal5pr2jwo4il5lh6nfptq", - "route_table_id": null, - "state": "AVAILABLE", - "time_created": "2026-08-10 12:01:06.275 +0000 UTC", - "timeouts": null, - "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "oci_core_vcn.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_private_ip", - "name": "sql1_agdemodb1", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:08:24.865Z" - }, - "display_name": "sqlag-agdemodb1-sql1", - "freeform_tags": {}, - "hostname_label": null, - "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaaswefkiptkgnir2vhvdkyoxbnkcny62kj7mmrwrib3lqvimuxrfvq", - "ip_address": "10.0.20.30", - "ip_state": "ASSIGNED", - "is_primary": false, - "is_reserved": null, - "lifetime": "EPHEMERAL", - "route_table_id": null, - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", - "time_created": "2026-08-10 12:08:24.895 +0000 UTC", - "timeouts": null, - "vlan_id": null, - "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrvnj42teyjohtlqmhskrstpe46xeei5dbopezladpc7cqc7hgbzsq" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_core_vnic_attachments.sql1", - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_instance.sql1", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql1", - "oci_core_subnet.dc", - "oci_core_subnet.sql1", - "oci_core_vcn.sql", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_private_ip", - "name": "sql1_agdemodb2", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:08:24.516Z" - }, - "display_name": "sqlag-agdemodb2-sql1", - "freeform_tags": {}, - "hostname_label": null, - "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaajb5lvdo3fz7c6umq5kdhka37b5juqldegcwtczdfqi2d7snuxdca", - "ip_address": "10.0.20.31", - "ip_state": "ASSIGNED", - "is_primary": false, - "is_reserved": null, - "lifetime": "EPHEMERAL", - "route_table_id": null, - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", - "time_created": "2026-08-10 12:08:24.531 +0000 UTC", - "timeouts": null, - "vlan_id": null, - "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrvnj42teyjohtlqmhskrstpe46xeei5dbopezladpc7cqc7hgbzsq" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_core_vnic_attachments.sql1", - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_instance.sql1", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql1", - "oci_core_subnet.dc", - "oci_core_subnet.sql1", - "oci_core_vcn.sql", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_private_ip", - "name": "sql1_wsfc", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:08:24.525Z" - }, - "display_name": "sqlag-wsfc-sql1", - "freeform_tags": {}, - "hostname_label": null, - "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaa4v3v6i44tw3qywzwdrnxndcfdud5h47xvsebopa2am2ptovmzsaq", - "ip_address": "10.0.20.20", - "ip_state": "ASSIGNED", - "is_primary": false, - "is_reserved": null, - "lifetime": "EPHEMERAL", - "route_table_id": null, - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", - "time_created": "2026-08-10 12:08:24.535 +0000 UTC", - "timeouts": null, - "vlan_id": null, - "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrvnj42teyjohtlqmhskrstpe46xeei5dbopezladpc7cqc7hgbzsq" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_core_vnic_attachments.sql1", - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_instance.sql1", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql1", - "oci_core_subnet.dc", - "oci_core_subnet.sql1", - "oci_core_vcn.sql", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_private_ip", - "name": "sql2_agdemodb1", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:08:23.050Z" - }, - "display_name": "sqlag-agdemodb1-sql2", - "freeform_tags": {}, - "hostname_label": null, - "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaarkpwbc5mczzf652fopgdpucxnoo4u2tqu2xojlllrb7a374ngc3a", - "ip_address": "10.0.30.30", - "ip_state": "ASSIGNED", - "is_primary": false, - "is_reserved": null, - "lifetime": "EPHEMERAL", - "route_table_id": null, - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", - "time_created": "2026-08-10 12:08:23.074 +0000 UTC", - "timeouts": null, - "vlan_id": null, - "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrw2cjpuldcrm6uo3nluplqn3xhuk7b2nrbr7nzgwoupggar7oeiiq" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_core_vnic_attachments.sql2", - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_instance.sql2", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql2", - "oci_core_subnet.dc", - "oci_core_subnet.sql2", - "oci_core_vcn.sql", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_private_ip", - "name": "sql2_agdemodb2", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:08:23.517Z" - }, - "display_name": "sqlag-agdemodb2-sql2", - "freeform_tags": {}, - "hostname_label": null, - "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaahsoi2bbv4carra37rmxpz6s74kwuw4nvr5i52d5slaulk5on3o6q", - "ip_address": "10.0.30.31", - "ip_state": "ASSIGNED", - "is_primary": false, - "is_reserved": null, - "lifetime": "EPHEMERAL", - "route_table_id": null, - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", - "time_created": "2026-08-10 12:08:23.536 +0000 UTC", - "timeouts": null, - "vlan_id": null, - "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrw2cjpuldcrm6uo3nluplqn3xhuk7b2nrbr7nzgwoupggar7oeiiq" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_core_vnic_attachments.sql2", - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_instance.sql2", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql2", - "oci_core_subnet.dc", - "oci_core_subnet.sql2", - "oci_core_vcn.sql", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_private_ip", - "name": "sql2_wsfc", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:08:22.722Z" - }, - "display_name": "sqlag-wsfc-sql2", - "freeform_tags": {}, - "hostname_label": null, - "id": "ocid1.privateip.oc1.us-sanjose-1.aaaaaaaacgoj3q5vpdnr7zb7u6nggy2n22bu3n6fbsrfhoc2rszxcvubfbpa", - "ip_address": "10.0.30.20", - "ip_state": "ASSIGNED", - "is_primary": false, - "is_reserved": null, - "lifetime": "EPHEMERAL", - "route_table_id": null, - "subnet_id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", - "time_created": "2026-08-10 12:08:22.754 +0000 UTC", - "timeouts": null, - "vlan_id": null, - "vnic_id": "ocid1.vnic.oc1.us-sanjose-1.abzwuljrw2cjpuldcrm6uo3nluplqn3xhuk7b2nrbr7nzgwoupggar7oeiiq" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_core_vnic_attachments.sql2", - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_instance.sql2", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql2", - "oci_core_subnet.dc", - "oci_core_subnet.sql2", - "oci_core_vcn.sql", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_route_table", - "name": "public", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:07.614Z" - }, - "display_name": "public route table-SQL_VCN", - "freeform_tags": { - "Project": "sqlagtest" - }, - "id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaauh2ivarmf7gwb26megvsxiiwzdimffdxdjsuhu7z7qwzaonjbnya", - "route_rules": [ - { - "cidr_block": "", - "description": "", - "destination": "0.0.0.0/0", - "destination_type": "CIDR_BLOCK", - "network_entity_id": "ocid1.internetgateway.oc1.us-sanjose-1.aaaaaaaahuyvk6dw4fmunjpobspq6pv2zsnlmgaal5pr2jwo4il5lh6nfptq", - "route_type": "" - } - ], - "state": "AVAILABLE", - "time_created": "2026-08-10 12:01:07.637 +0000 UTC", - "timeouts": null, - "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "oci_core_internet_gateway.sql", - "oci_core_vcn.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_security_list", - "name": "dc", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:06.400Z" - }, - "display_name": "DC_SC_List", - "egress_security_rules": [ - { - "description": "", - "destination": "0.0.0.0/0", - "destination_type": "CIDR_BLOCK", - "icmp_options": [], - "protocol": "all", - "stateless": false, - "tcp_options": [], - "udp_options": [] - } - ], - "freeform_tags": { - "Project": "sqlagtest" - }, - "id": "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaanwz6l3qgmlu5yct3piyqcdflvdzk37pie3glug3goe5ebmeddtrq", - "ingress_security_rules": [ - { - "description": "DNS TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 53, - "min": 53, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "DNS UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 53, - "min": 53, - "source_port_range": [] - } - ] - }, - { - "description": "Global Catalog SSL TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 3269, - "min": 3269, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Global Catalog TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 3268, - "min": 3268, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "ICMP from lab CIDR", - "icmp_options": [], - "protocol": "1", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [] - }, - { - "description": "Kerberos TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 88, - "min": 88, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Kerberos UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 88, - "min": 88, - "source_port_range": [] - } - ] - }, - { - "description": "Kerberos password change TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 464, - "min": 464, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Kerberos password change UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 464, - "min": 464, - "source_port_range": [] - } - ] - }, - { - "description": "LDAP TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 389, - "min": 389, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "LDAP UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 389, - "min": 389, - "source_port_range": [] - } - ] - }, - { - "description": "LDAPS TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 636, - "min": 636, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "NetBIOS datagram UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 138, - "min": 138, - "source_port_range": [] - } - ] - }, - { - "description": "NetBIOS name UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 137, - "min": 137, - "source_port_range": [] - } - ] - }, - { - "description": "NetBIOS session TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 139, - "min": 139, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "RDP from client public IPv4", - "icmp_options": [], - "protocol": "6", - "source": "0.0.0.0/0", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 3389, - "min": 3389, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "RPC endpoint mapper TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 135, - "min": 135, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "SMB TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 445, - "min": 445, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "WinRM HTTP TCP inside lab", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 5985, - "min": 5985, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "WinRM HTTPS TCP inside lab", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 5986, - "min": 5986, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Windows Time UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 123, - "min": 123, - "source_port_range": [] - } - ] - }, - { - "description": "Windows dynamic RPC TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 65535, - "min": 49152, - "source_port_range": [] - } - ], - "udp_options": [] - } - ], - "state": "AVAILABLE", - "time_created": "2026-08-10 12:01:06.431 +0000 UTC", - "timeouts": null, - "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "oci_core_vcn.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_security_list", - "name": "sql1", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:06.400Z" - }, - "display_name": "SQL1_SC_List", - "egress_security_rules": [ - { - "description": "", - "destination": "0.0.0.0/0", - "destination_type": "CIDR_BLOCK", - "icmp_options": [], - "protocol": "all", - "stateless": false, - "tcp_options": [], - "udp_options": [] - } - ], - "freeform_tags": { - "Project": "sqlagtest" - }, - "id": "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaafz3uxnlaz4tczk5mxvvzpmk7u5puh5wlrasz5l2aurx5qa6xv7ea", - "ingress_security_rules": [ - { - "description": "DNS TCP responses and domain operations", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 53, - "min": 53, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "DNS UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 53, - "min": 53, - "source_port_range": [] - } - ] - }, - { - "description": "ICMP from lab CIDR", - "icmp_options": [], - "protocol": "1", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [] - }, - { - "description": "Kerberos TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 88, - "min": 88, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Kerberos UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 88, - "min": 88, - "source_port_range": [] - } - ] - }, - { - "description": "Kerberos password change TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 464, - "min": 464, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Kerberos password change UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 464, - "min": 464, - "source_port_range": [] - } - ] - }, - { - "description": "LDAP TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 389, - "min": 389, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "LDAP UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 389, - "min": 389, - "source_port_range": [] - } - ] - }, - { - "description": "NetBIOS datagram UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 138, - "min": 138, - "source_port_range": [] - } - ] - }, - { - "description": "NetBIOS name UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 137, - "min": 137, - "source_port_range": [] - } - ] - }, - { - "description": "NetBIOS session TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 139, - "min": 139, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "RDP from configured source", - "icmp_options": [], - "protocol": "6", - "source": "0.0.0.0/0", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 3389, - "min": 3389, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "RPC endpoint mapper TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 135, - "min": 135, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "SMB TCP for admin and file witness", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 445, - "min": 445, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "SQL Always On HADR endpoint TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 5022, - "min": 5022, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "SQL Browser UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 1434, - "min": 1434, - "source_port_range": [] - } - ] - }, - { - "description": "SQL Server and AG listener TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 1433, - "min": 1433, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "WSFC cluster service TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 3343, - "min": 3343, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "WSFC cluster service UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 3343, - "min": 3343, - "source_port_range": [] - } - ] - }, - { - "description": "WinRM HTTP TCP inside lab", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 5985, - "min": 5985, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "WinRM HTTPS TCP inside lab", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 5986, - "min": 5986, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Windows Time UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 123, - "min": 123, - "source_port_range": [] - } - ] - }, - { - "description": "Windows dynamic RPC TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 65535, - "min": 49152, - "source_port_range": [] - } - ], - "udp_options": [] - } - ], - "state": "AVAILABLE", - "time_created": "2026-08-10 12:01:06.845 +0000 UTC", - "timeouts": null, - "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "oci_core_vcn.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_security_list", - "name": "sql2", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:06.494Z" - }, - "display_name": "SQL2_SC_List", - "egress_security_rules": [ - { - "description": "", - "destination": "0.0.0.0/0", - "destination_type": "CIDR_BLOCK", - "icmp_options": [], - "protocol": "all", - "stateless": false, - "tcp_options": [], - "udp_options": [] - } - ], - "freeform_tags": { - "Project": "sqlagtest" - }, - "id": "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaamy3wvz7nujwpwegruq7i3k6f7k6rwzmgdv5iw2tupvbgnteurbja", - "ingress_security_rules": [ - { - "description": "DNS TCP responses and domain operations", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 53, - "min": 53, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "DNS UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 53, - "min": 53, - "source_port_range": [] - } - ] - }, - { - "description": "ICMP from lab CIDR", - "icmp_options": [], - "protocol": "1", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [] - }, - { - "description": "Kerberos TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 88, - "min": 88, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Kerberos UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 88, - "min": 88, - "source_port_range": [] - } - ] - }, - { - "description": "Kerberos password change TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 464, - "min": 464, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Kerberos password change UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 464, - "min": 464, - "source_port_range": [] - } - ] - }, - { - "description": "LDAP TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 389, - "min": 389, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "LDAP UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 389, - "min": 389, - "source_port_range": [] - } - ] - }, - { - "description": "NetBIOS datagram UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 138, - "min": 138, - "source_port_range": [] - } - ] - }, - { - "description": "NetBIOS name UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 137, - "min": 137, - "source_port_range": [] - } - ] - }, - { - "description": "NetBIOS session TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 139, - "min": 139, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "RDP from configured source", - "icmp_options": [], - "protocol": "6", - "source": "0.0.0.0/0", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 3389, - "min": 3389, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "RPC endpoint mapper TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 135, - "min": 135, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "SMB TCP for admin and file witness", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 445, - "min": 445, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "SQL Always On HADR endpoint TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 5022, - "min": 5022, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "SQL Browser UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 1434, - "min": 1434, - "source_port_range": [] - } - ] - }, - { - "description": "SQL Server and AG listener TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 1433, - "min": 1433, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "WSFC cluster service TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 3343, - "min": 3343, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "WSFC cluster service UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 3343, - "min": 3343, - "source_port_range": [] - } - ] - }, - { - "description": "WinRM HTTP TCP inside lab", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 5985, - "min": 5985, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "WinRM HTTPS TCP inside lab", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 5986, - "min": 5986, - "source_port_range": [] - } - ], - "udp_options": [] - }, - { - "description": "Windows Time UDP", - "icmp_options": [], - "protocol": "17", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [], - "udp_options": [ - { - "max": 123, - "min": 123, - "source_port_range": [] - } - ] - }, - { - "description": "Windows dynamic RPC TCP", - "icmp_options": [], - "protocol": "6", - "source": "10.0.0.0/16", - "source_type": "CIDR_BLOCK", - "stateless": false, - "tcp_options": [ - { - "max": 65535, - "min": 49152, - "source_port_range": [] - } - ], - "udp_options": [] - } - ], - "state": "AVAILABLE", - "time_created": "2026-08-10 12:01:06.516 +0000 UTC", - "timeouts": null, - "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "oci_core_vcn.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_subnet", - "name": "dc", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "cidr_block": "10.0.10.0/24", - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:08.535Z" - }, - "dhcp_options_id": "ocid1.dhcpoptions.oc1.us-sanjose-1.aaaaaaaavat3k3r4zukatfnknauauvcimzqb4ipwtzb4yknp57lfxzba5i4q", - "display_name": "sqlagtest-dc-public-subnet", - "dns_label": "dcsubnet", - "freeform_tags": { - "Project": "sqlagtest" - }, - "id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaqyaalgafielqf5cpgvvtkbq4qmb3xtix4n6m26ojww3nwuuu5axq", - "ipv6cidr_block": null, - "ipv6cidr_blocks": [], - "ipv6virtual_router_ip": null, - "prohibit_internet_ingress": false, - "prohibit_public_ip_on_vnic": false, - "route_table_id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaauh2ivarmf7gwb26megvsxiiwzdimffdxdjsuhu7z7qwzaonjbnya", - "security_list_ids": [ - "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaanwz6l3qgmlu5yct3piyqcdflvdzk37pie3glug3goe5ebmeddtrq" - ], - "state": "AVAILABLE", - "subnet_domain_name": "dcsubnet.sqlvcn.oraclevcn.com", - "time_created": "2026-08-10 12:01:08.569 +0000 UTC", - "timeouts": null, - "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", - "virtual_router_ip": "10.0.10.1", - "virtual_router_mac": "00:00:17:D8:7D:07" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_vcn.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_subnet", - "name": "sql1", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "cidr_block": "10.0.20.0/24", - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:08.646Z" - }, - "dhcp_options_id": "ocid1.dhcpoptions.oc1.us-sanjose-1.aaaaaaaavat3k3r4zukatfnknauauvcimzqb4ipwtzb4yknp57lfxzba5i4q", - "display_name": "sqlagtest-sql1-public-subnet", - "dns_label": "sql1subnet", - "freeform_tags": { - "Project": "sqlagtest" - }, - "id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaa4oizllv7ztjmasysv2nm22ufja3hckxr2dawcmoclghu35ydjska", - "ipv6cidr_block": null, - "ipv6cidr_blocks": [], - "ipv6virtual_router_ip": null, - "prohibit_internet_ingress": false, - "prohibit_public_ip_on_vnic": false, - "route_table_id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaauh2ivarmf7gwb26megvsxiiwzdimffdxdjsuhu7z7qwzaonjbnya", - "security_list_ids": [ - "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaafz3uxnlaz4tczk5mxvvzpmk7u5puh5wlrasz5l2aurx5qa6xv7ea" - ], - "state": "AVAILABLE", - "subnet_domain_name": "sql1subnet.sqlvcn.oraclevcn.com", - "time_created": "2026-08-10 12:01:09.239 +0000 UTC", - "timeouts": null, - "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", - "virtual_router_ip": "10.0.20.1", - "virtual_router_mac": "00:00:17:D8:7D:07" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.sql1", - "oci_core_vcn.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_subnet", - "name": "sql2", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "availability_domain": null, - "cidr_block": "10.0.30.0/24", - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:08.542Z" - }, - "dhcp_options_id": "ocid1.dhcpoptions.oc1.us-sanjose-1.aaaaaaaavat3k3r4zukatfnknauauvcimzqb4ipwtzb4yknp57lfxzba5i4q", - "display_name": "sqlagtest-sql2-public-subnet", - "dns_label": "sql2subnet", - "freeform_tags": { - "Project": "sqlagtest" - }, - "id": "ocid1.subnet.oc1.us-sanjose-1.aaaaaaaaezarlifjvuyx3pmuydqpo7tiusm7fu5hjtmtzfeqydk372prs6ha", - "ipv6cidr_block": null, - "ipv6cidr_blocks": [], - "ipv6virtual_router_ip": null, - "prohibit_internet_ingress": false, - "prohibit_public_ip_on_vnic": false, - "route_table_id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaauh2ivarmf7gwb26megvsxiiwzdimffdxdjsuhu7z7qwzaonjbnya", - "security_list_ids": [ - "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaamy3wvz7nujwpwegruq7i3k6f7k6rwzmgdv5iw2tupvbgnteurbja" - ], - "state": "AVAILABLE", - "subnet_domain_name": "sql2subnet.sqlvcn.oraclevcn.com", - "time_created": "2026-08-10 12:01:08.827 +0000 UTC", - "timeouts": null, - "vcn_id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", - "virtual_router_ip": "10.0.30.1", - "virtual_router_mac": "00:00:17:D8:7D:07" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.sql2", - "oci_core_vcn.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_vcn", - "name": "sql", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "byoipv6cidr_blocks": [], - "byoipv6cidr_details": null, - "cidr_block": "10.0.0.0/16", - "cidr_blocks": [ - "10.0.0.0/16" - ], - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "default_dhcp_options_id": "ocid1.dhcpoptions.oc1.us-sanjose-1.aaaaaaaavat3k3r4zukatfnknauauvcimzqb4ipwtzb4yknp57lfxzba5i4q", - "default_route_table_id": "ocid1.routetable.oc1.us-sanjose-1.aaaaaaaagzt6bmctup4lxewjfr6h4dwgvqb6mgnk6rddmyqn4jz2l426pn4q", - "default_security_list_id": "ocid1.securitylist.oc1.us-sanjose-1.aaaaaaaazpvn4um7lm7gsms4ysd3htb33yypsd7w5o7526f52sqa3jfw2uqa", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:05.178Z" - }, - "display_name": "SQL_VCN", - "dns_label": "sqlvcn", - "freeform_tags": { - "Project": "sqlagtest" - }, - "id": "ocid1.vcn.oc1.us-sanjose-1.amaaaaaafyadjyiaybothfmm7shogap6ckuuvqkijq2dfazqisp7d5jma6na", - "ipv6cidr_blocks": [], - "ipv6private_cidr_blocks": [], - "is_ipv6enabled": false, - "is_oracle_gua_allocation_enabled": null, - "security_attributes": {}, - "state": "AVAILABLE", - "time_created": "2026-08-10 12:01:05.235 +0000 UTC", - "timeouts": null, - "vcn_domain_name": "sqlvcn.oraclevcn.com" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19" - } - ] - }, - { - "mode": "managed", - "type": "oci_core_volume", - "name": "sql1_data", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "auto_tuned_vpus_per_gb": null, - "autotune_policies": [], - "availability_domain": "RAVo:US-SANJOSE-1-AD-1", - "backup_policy_id": null, - "block_volume_replicas": [], - "block_volume_replicas_deletion": null, - "cluster_placement_group_id": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:05.236Z" - }, - "display_name": "SQL1-data", - "freeform_tags": { - "Node": "SQL1", - "Project": "sqlagtest", - "Role": "sql-data" - }, - "id": "ocid1.volume.oc1.us-sanjose-1.abzwuljrq5jamfnsogm4vnml4vmjbsn4xbwwzfkaiohhyxqpjr44dok4pzaa", - "is_auto_tune_enabled": false, - "is_hydrated": true, - "is_reservations_enabled": false, - "kms_key_id": null, - "size_in_gbs": "100", - "size_in_mbs": "102400", - "source_details": [], - "state": "AVAILABLE", - "system_tags": {}, - "time_created": "2026-08-10 12:01:05.245 +0000 UTC", - "timeouts": null, - "volume_backup_id": null, - "volume_group_id": null, - "vpus_per_gb": "10", - "xrc_kms_key_id": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_identity_availability_domains.region" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_volume", - "name": "sql2_data", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "auto_tuned_vpus_per_gb": null, - "autotune_policies": [], - "availability_domain": "RAVo:US-SANJOSE-1-AD-1", - "backup_policy_id": null, - "block_volume_replicas": [], - "block_volume_replicas_deletion": null, - "cluster_placement_group_id": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:05.302Z" - }, - "display_name": "SQL2-data", - "freeform_tags": { - "Node": "SQL2", - "Project": "sqlagtest", - "Role": "sql-data" - }, - "id": "ocid1.volume.oc1.us-sanjose-1.abzwuljrjp4twnvphag4u33stfimirqhtt2onjxrk2tmgkiqxyj6lxaf7raq", - "is_auto_tune_enabled": false, - "is_hydrated": true, - "is_reservations_enabled": false, - "kms_key_id": null, - "size_in_gbs": "100", - "size_in_mbs": "102400", - "source_details": [], - "state": "AVAILABLE", - "system_tags": {}, - "time_created": "2026-08-10 12:01:05.31 +0000 UTC", - "timeouts": null, - "volume_backup_id": null, - "volume_group_id": null, - "vpus_per_gb": "10", - "xrc_kms_key_id": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_identity_availability_domains.region" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_volume_attachment", - "name": "sql1_data", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "attachment_type": "paravirtualized", - "availability_domain": "RAVo:US-SANJOSE-1-AD-1", - "chap_secret": null, - "chap_username": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "device": null, - "display_name": "SQL1-data-attachment", - "encryption_in_transit_type": null, - "id": "ocid1.volumeattachment.oc1.us-sanjose-1.anzwuljrfyadjyicm56zd3tj56qvja653qbntnqe6j46rctzmm4i2bliboqa", - "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyicro5jzzgfjuljuqrgeudvsdt4husgjp4zcmpgn77vfepa", - "ipv4": null, - "iqn": null, - "is_agent_auto_iscsi_login_enabled": null, - "is_multipath": null, - "is_pv_encryption_in_transit_enabled": false, - "is_read_only": false, - "is_shareable": false, - "is_volume_created_during_launch": false, - "iscsi_login_state": "", - "multipath_devices": [], - "port": null, - "state": "ATTACHED", - "time_created": "2026-08-10 12:08:24.398 +0000 UTC", - "timeouts": null, - "use_chap": null, - "volume_id": "ocid1.volume.oc1.us-sanjose-1.abzwuljrq5jamfnsogm4vnml4vmjbsn4xbwwzfkaiohhyxqpjr44dok4pzaa" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_instance.sql1", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql1", - "oci_core_subnet.dc", - "oci_core_subnet.sql1", - "oci_core_vcn.sql", - "oci_core_volume.sql1_data", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_core_volume_attachment", - "name": "sql2_data", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "attachment_type": "paravirtualized", - "availability_domain": "RAVo:US-SANJOSE-1-AD-1", - "chap_secret": null, - "chap_username": null, - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "device": null, - "display_name": "SQL2-data-attachment", - "encryption_in_transit_type": null, - "id": "ocid1.volumeattachment.oc1.us-sanjose-1.anzwuljrfyadjyicm4uqlzsuqhhopnqeglelvpnsunv2gwdcdxyjujz62nra", - "instance_id": "ocid1.instance.oc1.us-sanjose-1.anzwuljrfyadjyic7cfzmkslnkhtpv34tzzquvaqlqpj2vpyw74sq5uo3wpa", - "ipv4": null, - "iqn": null, - "is_agent_auto_iscsi_login_enabled": null, - "is_multipath": null, - "is_pv_encryption_in_transit_enabled": false, - "is_read_only": false, - "is_shareable": false, - "is_volume_created_during_launch": false, - "iscsi_login_state": "", - "multipath_devices": [], - "port": null, - "state": "ATTACHED", - "time_created": "2026-08-10 12:08:22.606 +0000 UTC", - "timeouts": null, - "use_chap": null, - "volume_id": "ocid1.volume.oc1.us-sanjose-1.abzwuljrjp4twnvphag4u33stfimirqhtt2onjxrk2tmgkiqxyj6lxaf7raq" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_identity_availability_domains.region", - "data.oci_objectstorage_namespace.automation", - "oci_core_instance.dc", - "oci_core_instance.sql2", - "oci_core_internet_gateway.sql", - "oci_core_route_table.public", - "oci_core_security_list.dc", - "oci_core_security_list.sql2", - "oci_core_subnet.dc", - "oci_core_subnet.sql2", - "oci_core_vcn.sql", - "oci_core_volume.sql2_data", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag", - "oci_objectstorage_object.reconcile", - "oci_objectstorage_object.safe_failover", - "oci_objectstorage_object.sample", - "oci_objectstorage_object.sql", - "oci_objectstorage_object.wsfc", - "oci_objectstorage_preauthrequest.ag", - "oci_objectstorage_preauthrequest.reconcile", - "oci_objectstorage_preauthrequest.safe_failover", - "oci_objectstorage_preauthrequest.sample", - "oci_objectstorage_preauthrequest.sql", - "oci_objectstorage_preauthrequest.wsfc" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_bucket", - "name": "automation", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "access_type": "NoPublicAccess", - "approximate_count": "0", - "approximate_size": "0", - "auto_tiering": "Disabled", - "bucket_id": "ocid1.bucket.oc1.us-sanjose-1.aaaaaaaa5uad73xt5t4kupfdfa6hlqx3aqowkr22hwdv4xb532ioqb6symra", - "compartment_id": "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q", - "created_by": "ocid1.user.oc1..aaaaaaaa7injenbwphtghs5zpscdbe6xa5zww2rjnkpp2zebozdwpmwah4iq", - "defined_tags": { - "Oracle-Tags.CreatedBy": "default/akarsha.i@oracle.com", - "Oracle-Tags.CreatedOn": "2026-08-10T12:01:05.219Z" - }, - "etag": "9695d89e-00db-4772-b2b1-60466769b63d", - "freeform_tags": { - "Project": "sqlagtest", - "Purpose": "terraform-first-boot-automation" - }, - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f", - "is_read_only": false, - "kms_key_id": null, - "metadata": null, - "name": "aoag-automation-e06fd2b8fa2f", - "namespace": "idzxvkz1zdug", - "object_events_enabled": false, - "object_lifecycle_policy_etag": null, - "replication_enabled": false, - "retention_rules": [], - "storage_tier": "Standard", - "time_created": "2026-08-10 12:01:05.37 +0000 UTC", - "timeouts": null, - "versioning": "Disabled" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_object", - "name": "ag", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "aoag-automation-e06fd2b8fa2f", - "cache_control": null, - "content": null, - "content_disposition": null, - "content_encoding": null, - "content_language": null, - "content_length": "16566", - "content_md5": "D61XM0Gdlrq9Yi74Uq5NTQ==", - "content_type": "text/plain", - "delete_all_object_versions": false, - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F05-configure-availability-group.ps1", - "metadata": null, - "namespace": "idzxvkz1zdug", - "object": "scripts/05-configure-availability-group.ps1", - "opc_sse_kms_key_id": null, - "source": "./scripts/aoag/05-configure-availability-group.ps1 2026-08-06 20:11:56.880137919 +0530 IST", - "source_uri_details": [], - "state": "COMPLETED", - "storage_tier": "Standard", - "timeouts": null, - "version_id": "01fd08a7-3699-40af-90d4-973299dde915", - "work_request_id": "" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_object", - "name": "reconcile", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "aoag-automation-e06fd2b8fa2f", - "cache_control": null, - "content": null, - "content_disposition": null, - "content_encoding": null, - "content_language": null, - "content_length": "9133", - "content_md5": "3QaueBDo6VHjoQL2P5/Jew==", - "content_type": "text/plain", - "delete_all_object_versions": false, - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F07-reconcile-availability-group.ps1", - "metadata": null, - "namespace": "idzxvkz1zdug", - "object": "scripts/07-reconcile-availability-group.ps1", - "opc_sse_kms_key_id": null, - "source": "./scripts/aoag/07-reconcile-availability-group.ps1 2026-08-06 20:18:18.715343415 +0530 IST", - "source_uri_details": [], - "state": "COMPLETED", - "storage_tier": "Standard", - "timeouts": null, - "version_id": "fc9ac2cc-cdf6-4a34-a967-42049c69e5e6", - "work_request_id": "" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_object", - "name": "safe_failover", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "aoag-automation-e06fd2b8fa2f", - "cache_control": null, - "content": null, - "content_disposition": null, - "content_encoding": null, - "content_language": null, - "content_length": "7747", - "content_md5": "8mh5Y2Z2xV/ytikuZxW16Q==", - "content_type": "text/plain", - "delete_all_object_versions": false, - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F06-safe-planned-failover.ps1", - "metadata": null, - "namespace": "idzxvkz1zdug", - "object": "scripts/06-safe-planned-failover.ps1", - "opc_sse_kms_key_id": null, - "source": "./scripts/aoag/06-safe-planned-failover.ps1 2026-08-04 17:23:54.141008916 +0530 IST", - "source_uri_details": [], - "state": "COMPLETED", - "storage_tier": "Standard", - "timeouts": null, - "version_id": "19511b64-8b68-4704-837e-1386bca16b4a", - "work_request_id": "" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_object", - "name": "sample", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "aoag-automation-e06fd2b8fa2f", - "cache_control": null, - "content": null, - "content_disposition": null, - "content_encoding": null, - "content_language": null, - "content_length": "10928", - "content_md5": "+DpNCi5CdmNIGp3CGvTleg==", - "content_type": "text/plain", - "delete_all_object_versions": false, - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F04-prepare-sample-database.ps1", - "metadata": null, - "namespace": "idzxvkz1zdug", - "object": "scripts/04-prepare-sample-database.ps1", - "opc_sse_kms_key_id": null, - "source": "./scripts/aoag/04-prepare-sample-database.ps1 2026-08-04 17:18:26.231865983 +0530 IST", - "source_uri_details": [], - "state": "COMPLETED", - "storage_tier": "Standard", - "timeouts": null, - "version_id": "ebb7e1a0-eb4d-4d7b-82c0-4ea5ec018cba", - "work_request_id": "" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_object", - "name": "sql", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "aoag-automation-e06fd2b8fa2f", - "cache_control": null, - "content": null, - "content_disposition": null, - "content_encoding": null, - "content_language": null, - "content_length": "48770", - "content_md5": "4hnqDofX4SoKLYnv/ESRTw==", - "content_type": "text/plain", - "delete_all_object_versions": false, - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F02-configure-sql-node.ps1", - "metadata": null, - "namespace": "idzxvkz1zdug", - "object": "scripts/02-configure-sql-node.ps1", - "opc_sse_kms_key_id": null, - "source": "./scripts/sql/02-configure-sql-node.ps1 2026-08-10 16:40:15.521319154 +0530 IST", - "source_uri_details": [], - "state": "COMPLETED", - "storage_tier": "Standard", - "timeouts": null, - "version_id": "070d6bb4-1bdc-445e-aff7-507a1588b27a", - "work_request_id": "" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_object", - "name": "wsfc", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "aoag-automation-e06fd2b8fa2f", - "cache_control": null, - "content": null, - "content_disposition": null, - "content_encoding": null, - "content_language": null, - "content_length": "29524", - "content_md5": "Fhp1QfvGOREryVGvXU8S6Q==", - "content_type": "text/plain", - "delete_all_object_versions": false, - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts%2F03-configure-wsfc.ps1", - "metadata": null, - "namespace": "idzxvkz1zdug", - "object": "scripts/03-configure-wsfc.ps1", - "opc_sse_kms_key_id": null, - "source": "./scripts/wsfc/03-configure-wsfc.ps1 2026-08-04 17:22:26.129887953 +0530 IST", - "source_uri_details": [], - "state": "COMPLETED", - "storage_tier": "Standard", - "timeouts": null, - "version_id": "500fa058-3ef9-424b-a6a6-5c8137a518f9", - "work_request_id": "" - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_preauthrequest", - "name": "ag", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "access_type": "ObjectRead", - "access_uri": "/p/_T2UE5ETlHyWueLdaoOdITezMG1zuzQvs3a2vS4gkOXg7wY8nWiE9aDUZowJ0Scp/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/05-configure-availability-group.ps1", - "bucket": "aoag-automation-e06fd2b8fa2f", - "bucket_listing_action": "", - "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/_T2UE5ETlHyWueLdaoOdITezMG1zuzQvs3a2vS4gkOXg7wY8nWiE9aDUZowJ0Scp/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/05-configure-availability-group.ps1", - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/0BPxYPhbyGdZgwfF9KaPTo3aU1c2LyUifBWaQst%2FO2vPnllc2d084B0ZIplFY%2Faa:scripts%2F05-configure-availability-group.ps1", - "name": "availability-group-bootstrap", - "namespace": "idzxvkz1zdug", - "object": "scripts/05-configure-availability-group.ps1", - "object_name": "scripts/05-configure-availability-group.ps1", - "par_id": "0BPxYPhbyGdZgwfF9KaPTo3aU1c2LyUifBWaQst/O2vPnllc2d084B0ZIplFY/aa:scripts/05-configure-availability-group.ps1", - "time_created": "2026-08-10 12:01:07.892 +0000 UTC", - "time_expires": "2030-01-01T00:00:00Z", - "timeouts": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.ag" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_preauthrequest", - "name": "reconcile", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "access_type": "ObjectRead", - "access_uri": "/p/0DoPR860Kv4dB_2kgu-zUE2DZG_rqJijfcPW0OfL1EMuUC9g5uaqTH4oL0UPb9Jr/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/07-reconcile-availability-group.ps1", - "bucket": "aoag-automation-e06fd2b8fa2f", - "bucket_listing_action": "", - "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/0DoPR860Kv4dB_2kgu-zUE2DZG_rqJijfcPW0OfL1EMuUC9g5uaqTH4oL0UPb9Jr/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/07-reconcile-availability-group.ps1", - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/eA9oLBJO%2FEZioXe0BsMpvmEcIZQRdD47GHUAeIDZcBMsrdAbGoGRujenZor+Yv5P:scripts%2F07-reconcile-availability-group.ps1", - "name": "availability-group-reconciliation", - "namespace": "idzxvkz1zdug", - "object": "scripts/07-reconcile-availability-group.ps1", - "object_name": "scripts/07-reconcile-availability-group.ps1", - "par_id": "eA9oLBJO/EZioXe0BsMpvmEcIZQRdD47GHUAeIDZcBMsrdAbGoGRujenZor+Yv5P:scripts/07-reconcile-availability-group.ps1", - "time_created": "2026-08-10 12:01:08.455 +0000 UTC", - "time_expires": "2030-01-01T00:00:00Z", - "timeouts": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.reconcile" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_preauthrequest", - "name": "safe_failover", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "access_type": "ObjectRead", - "access_uri": "/p/BzjxYCZ__7HKdlPxYc2LGXWSAr1pJdFsOyL39iG17U16VLgti2365D4nt2wuZ9tZ/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/06-safe-planned-failover.ps1", - "bucket": "aoag-automation-e06fd2b8fa2f", - "bucket_listing_action": "", - "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/BzjxYCZ__7HKdlPxYc2LGXWSAr1pJdFsOyL39iG17U16VLgti2365D4nt2wuZ9tZ/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/06-safe-planned-failover.ps1", - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/Qq1fVlx4ovBhub4TeM2i4Xe8LznvqyczHOHnTf3Jaa0CPFC0I%2FGZEe7fUOLO3SMG:scripts%2F06-safe-planned-failover.ps1", - "name": "safe-planned-failover", - "namespace": "idzxvkz1zdug", - "object": "scripts/06-safe-planned-failover.ps1", - "object_name": "scripts/06-safe-planned-failover.ps1", - "par_id": "Qq1fVlx4ovBhub4TeM2i4Xe8LznvqyczHOHnTf3Jaa0CPFC0I/GZEe7fUOLO3SMG:scripts/06-safe-planned-failover.ps1", - "time_created": "2026-08-10 12:01:07.984 +0000 UTC", - "time_expires": "2030-01-01T00:00:00Z", - "timeouts": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.safe_failover" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_preauthrequest", - "name": "sample", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "access_type": "ObjectRead", - "access_uri": "/p/CsThXCTqy3PNazAGYi1X5DgYZQZkDWzcgX-wPxLkiEEfwHoFzpD7094DdY7TXEKh/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/04-prepare-sample-database.ps1", - "bucket": "aoag-automation-e06fd2b8fa2f", - "bucket_listing_action": "", - "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/CsThXCTqy3PNazAGYi1X5DgYZQZkDWzcgX-wPxLkiEEfwHoFzpD7094DdY7TXEKh/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/04-prepare-sample-database.ps1", - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/+t9S+24Tm8a1OXDW6lWs8A7y+qk0ctJErh7OXDmYq+9kph62%2FCl04xF9pjlSrlhq:scripts%2F04-prepare-sample-database.ps1", - "name": "sample-database-bootstrap", - "namespace": "idzxvkz1zdug", - "object": "scripts/04-prepare-sample-database.ps1", - "object_name": "scripts/04-prepare-sample-database.ps1", - "par_id": "+t9S+24Tm8a1OXDW6lWs8A7y+qk0ctJErh7OXDmYq+9kph62/Cl04xF9pjlSrlhq:scripts/04-prepare-sample-database.ps1", - "time_created": "2026-08-10 12:01:07.931 +0000 UTC", - "time_expires": "2030-01-01T00:00:00Z", - "timeouts": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.sample" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_preauthrequest", - "name": "sql", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "access_type": "ObjectRead", - "access_uri": "/p/PLPT-OOcazlbRM0CB6pJGw4ds205jCSVzZFLxQFv19eEBKQvLH4_avztt1ZkVIiZ/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/02-configure-sql-node.ps1", - "bucket": "aoag-automation-e06fd2b8fa2f", - "bucket_listing_action": "", - "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/PLPT-OOcazlbRM0CB6pJGw4ds205jCSVzZFLxQFv19eEBKQvLH4_avztt1ZkVIiZ/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/02-configure-sql-node.ps1", - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/DhElMkxBoWKd9Zx1aUQoolT+dwg1nHXqqkdBytAPdr5cTErSc9mHYPnXPRg84YlE:scripts%2F02-configure-sql-node.ps1", - "name": "sql-node-bootstrap", - "namespace": "idzxvkz1zdug", - "object": "scripts/02-configure-sql-node.ps1", - "object_name": "scripts/02-configure-sql-node.ps1", - "par_id": "DhElMkxBoWKd9Zx1aUQoolT+dwg1nHXqqkdBytAPdr5cTErSc9mHYPnXPRg84YlE:scripts/02-configure-sql-node.ps1", - "time_created": "2026-08-10 12:01:07.69 +0000 UTC", - "time_expires": "2030-01-01T00:00:00Z", - "timeouts": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.sql" - ] - } - ] - }, - { - "mode": "managed", - "type": "oci_objectstorage_preauthrequest", - "name": "wsfc", - "provider": "provider[\"registry.terraform.io/oracle/oci\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "access_type": "ObjectRead", - "access_uri": "/p/bDY8UTrCQfUMyoGbiGdUxk1kFWzeXVJ92WcjcarXKNj5d4-6yhZB8wCEhvTnjYyB/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/03-configure-wsfc.ps1", - "bucket": "aoag-automation-e06fd2b8fa2f", - "bucket_listing_action": "", - "full_path": "https://idzxvkz1zdug.objectstorage.us-sanjose-1.oci.customer-oci.com/p/bDY8UTrCQfUMyoGbiGdUxk1kFWzeXVJ92WcjcarXKNj5d4-6yhZB8wCEhvTnjYyB/n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/o/scripts/03-configure-wsfc.ps1", - "id": "n/idzxvkz1zdug/b/aoag-automation-e06fd2b8fa2f/p/Pm3cwdQjiHO8xLVyVIKy%2FpnJ7OHI%2FD1LN0PZvBNYh2XRUHhYpZdUTs8I7MizxS%2FG:scripts%2F03-configure-wsfc.ps1", - "name": "wsfc-bootstrap", - "namespace": "idzxvkz1zdug", - "object": "scripts/03-configure-wsfc.ps1", - "object_name": "scripts/03-configure-wsfc.ps1", - "par_id": "Pm3cwdQjiHO8xLVyVIKy/pnJ7OHI/D1LN0PZvBNYh2XRUHhYpZdUTs8I7MizxS/G:scripts/03-configure-wsfc.ps1", - "time_created": "2026-08-10 12:01:08.45 +0000 UTC", - "time_expires": "2030-01-01T00:00:00Z", - "timeouts": null - }, - "sensitive_attributes": [], - "identity_schema_version": 0, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.oci_objectstorage_namespace.automation", - "oci_objectstorage_bucket.automation", - "oci_objectstorage_object.wsfc" - ] - } - ] - } - ], - "check_results": [ - { - "object_kind": "resource", - "config_addr": "oci_core_instance.sql1", - "status": "pass", - "objects": [ - { - "object_addr": "oci_core_instance.sql1", - "status": "pass" - } - ] - }, - { - "object_kind": "resource", - "config_addr": "oci_core_instance.sql2", - "status": "pass", - "objects": [ - { - "object_addr": "oci_core_instance.sql2", - "status": "pass" - } - ] - }, - { - "object_kind": "resource", - "config_addr": "oci_core_instance.dc", - "status": "pass", - "objects": [ - { - "object_addr": "oci_core_instance.dc", - "status": "pass" - } - ] - } - ] -} diff --git a/automation-mssql-server-aoag-sample/terraform.tfstate.backup b/automation-mssql-server-aoag-sample/terraform.tfstate.backup deleted file mode 100644 index 48bd0a2..0000000 --- a/automation-mssql-server-aoag-sample/terraform.tfstate.backup +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": 4, - "terraform_version": "1.13.5", - "serial": 2440, - "lineage": "6f1489c1-58b1-4ed7-debe-29cff2433645", - "outputs": {}, - "resources": [], - "check_results": [ - { - "object_kind": "resource", - "config_addr": "oci_core_instance.sql1", - "status": "unknown", - "objects": null - }, - { - "object_kind": "resource", - "config_addr": "oci_core_instance.sql2", - "status": "unknown", - "objects": null - }, - { - "object_kind": "resource", - "config_addr": "oci_core_instance.dc", - "status": "unknown", - "objects": null - } - ] -} diff --git a/automation-mssql-server-aoag-sample/terraform.tfvars.example b/automation-mssql-server-aoag-sample/terraform.tfvars.example index 6fd91f0..d7a9dd2 100644 --- a/automation-mssql-server-aoag-sample/terraform.tfvars.example +++ b/automation-mssql-server-aoag-sample/terraform.tfvars.example @@ -1,7 +1,12 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ # Copy this file to terraform.tfvars, then replace every REPLACE_ME value. # The values below are examples only; the module is not tied to San Jose. -oci_config_profile = "DEFAULT" +# For a local CLI deployment use "local". For an OCI Resource Manager stack, +# set this to "resource_manager" in the Stack variables page. +execution_environment = "local" +oci_config_profile = "DEFAULT" # Used only when execution_environment = "local". region = "REPLACE_WITH_OCI_REGION" compartment_id = "ocid1.compartment.oc1..REPLACE_ME" windows_image_ocid = "ocid1.image.REPLACE_WITH_REGION.REPLACE_ME" @@ -22,16 +27,20 @@ dc_private_ip = "10.0.10.10" sql1_private_ip = "10.0.20.10" sql2_private_ip = "10.0.30.10" -# Credentials are sensitive. Prefer TF_VAR_* environment variables or a -# local, uncommitted terraform.tfvars file. +# Credentials are sensitive. Choose one method after copying this file: +# 1. Keep the password lines commented and set the TF_VAR_* environment +# variables before running Terraform; or +# 2. Uncomment and populate the password lines in your local, uncommitted +# terraform.tfvars file. Never commit real passwords. domain_name = "mssqlaoag.demo" domain_netbios_name = "MSSQLAOAG" domain_admin_user = "domainadmin" -domain_admin_password = "" sql_service_account_user = "sqlsa" -sql_service_account_password = "" local_admin_user = "opc" -windows_admin_password = "" + +# domain_admin_password = "REPLACE_WITH_DOMAIN_ADMIN_PASSWORD" +# sql_service_account_password = "" # Empty reuses domain_admin_password for this POC. +# windows_admin_password = "" # Empty reuses domain_admin_password for local Administrator and opc. auto_configure_domain_controller = true auto_configure_windows_nodes = true From c8cea99d3177877b5bd18df184e8f9f3ff98cb36 Mon Sep 17 00:00:00 2001 From: Akarsha I Date: Fri, 21 Aug 2026 13:47:00 +0530 Subject: [PATCH 3/5] Updated the Oracle UPL license header Updated Oracle UPL license header to missing files --- .../.terraform.lock.hcl | 2 + .../05-compute.tf | 197 +++++++++--------- .../templates/dc-user-data.ps1.tftpl | 1 - .../windows-node-user-data.ps1.tftpl | 1 - .../terraform.tfvars | 30 --- 5 files changed, 106 insertions(+), 125 deletions(-) delete mode 100644 automation-mssql-server-aoag-sample/terraform.tfvars diff --git a/automation-mssql-server-aoag-sample/.terraform.lock.hcl b/automation-mssql-server-aoag-sample/.terraform.lock.hcl index c0aaa8d..7d70928 100644 --- a/automation-mssql-server-aoag-sample/.terraform.lock.hcl +++ b/automation-mssql-server-aoag-sample/.terraform.lock.hcl @@ -1,3 +1,5 @@ +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. +# The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ # This file is maintained automatically by "terraform init". # Manual edits may be lost in future updates. diff --git a/automation-mssql-server-aoag-sample/05-compute.tf b/automation-mssql-server-aoag-sample/05-compute.tf index 4cc832f..fa15f7a 100644 --- a/automation-mssql-server-aoag-sample/05-compute.tf +++ b/automation-mssql-server-aoag-sample/05-compute.tf @@ -18,99 +18,110 @@ locals { aoag_listener_ips = join(",", [var.aoag_listener_ip_sql1, var.aoag_listener_ip_sql2]) wsfc_witness_share = "\\\\DC-VM.${var.domain_name}\\${var.wsfc_witness_share_name}" - dc_user_data = var.auto_configure_domain_controller ? base64encode(templatefile("${path.module}/templates/dc-user-data.ps1.tftpl", { - script_body_gzip_base64 = base64gzip(file("${path.module}/scripts/dc/01-configure-domain-controller.ps1")) - domain_name = var.domain_name - domain_netbios_name = var.domain_netbios_name - domain_admin_user = var.domain_admin_user - sql_service_account_user = var.sql_service_account_user - local_admin_user = var.local_admin_user - target_computer_name = "DC-VM" - dc_private_ip = var.dc_private_ip - domain_admin_password = replace(local.effective_domain_admin_password, "'", "''") - sql_service_account_password = replace(local.effective_sql_service_password, "'", "''") - windows_admin_password = replace(local.effective_windows_admin_password, "'", "''") - witness_path = var.wsfc_witness_path - witness_share_name = var.wsfc_witness_share_name - })) : null - - sql1_user_data = var.auto_configure_windows_nodes ? base64encode(templatefile("${path.module}/templates/windows-node-user-data.ps1.tftpl", { - sql_script_url = local.automation_object_urls.sql - wsfc_script_url = local.automation_object_urls.wsfc - sample_script_url = local.automation_object_urls.sample - ag_script_url = local.automation_object_urls.ag - safe_failover_script_url = local.automation_object_urls.safe_failover - reconcile_script_url = local.automation_object_urls.reconcile - domain_name = var.domain_name - domain_netbios_name = var.domain_netbios_name - domain_admin_user = var.domain_admin_user - domain_admin_password = replace(local.effective_domain_admin_password, "'", "''") - sql_service_account_user = var.sql_service_account_user - sql_service_account_password = replace(local.effective_sql_service_password, "'", "''") - auto_install_sql_server = var.auto_install_sql_server - install_ssms = var.install_ssms - sql_server_download_url = var.sql_server_download_url - ssms_download_url = var.ssms_download_url - auto_configure_wsfc = var.auto_configure_wsfc - wsfc_cluster_name = var.wsfc_cluster_name - wsfc_primary_node = local.wsfc_primary_node - wsfc_cluster_nodes = local.wsfc_cluster_nodes - wsfc_cluster_static_addresses = local.wsfc_cluster_static_addresses - wsfc_witness_share = local.wsfc_witness_share - skip_cluster_validation = var.skip_cluster_validation - aoag_database_name = var.aoag_database_name - aoag_availability_group_name = var.aoag_availability_group_name - aoag_listener_name = var.aoag_listener_name - aoag_listener_port = var.aoag_listener_port - aoag_listener_ips = local.aoag_listener_ips - hadr_endpoint_name = var.hadr_endpoint_name - hadr_endpoint_port = var.hadr_endpoint_port - sample_database_download_url = var.sample_database_download_url - local_admin_user = var.local_admin_user - windows_admin_password = replace(local.effective_windows_admin_password, "'", "''") - target_computer_name = "SQL1" - dc_private_ip = var.dc_private_ip - sql_data_drive_letter = var.sql_data_drive_letter - })) : null - - sql2_user_data = var.auto_configure_windows_nodes ? base64encode(templatefile("${path.module}/templates/windows-node-user-data.ps1.tftpl", { - sql_script_url = local.automation_object_urls.sql - wsfc_script_url = local.automation_object_urls.wsfc - sample_script_url = "" - ag_script_url = local.automation_object_urls.ag - safe_failover_script_url = local.automation_object_urls.safe_failover - reconcile_script_url = local.automation_object_urls.reconcile - domain_name = var.domain_name - domain_netbios_name = var.domain_netbios_name - domain_admin_user = var.domain_admin_user - domain_admin_password = replace(local.effective_domain_admin_password, "'", "''") - sql_service_account_user = var.sql_service_account_user - sql_service_account_password = replace(local.effective_sql_service_password, "'", "''") - auto_install_sql_server = var.auto_install_sql_server - install_ssms = var.install_ssms - sql_server_download_url = var.sql_server_download_url - ssms_download_url = var.ssms_download_url - auto_configure_wsfc = var.auto_configure_wsfc - wsfc_cluster_name = var.wsfc_cluster_name - wsfc_primary_node = local.wsfc_primary_node - wsfc_cluster_nodes = local.wsfc_cluster_nodes - wsfc_cluster_static_addresses = local.wsfc_cluster_static_addresses - wsfc_witness_share = local.wsfc_witness_share - skip_cluster_validation = var.skip_cluster_validation - aoag_database_name = var.aoag_database_name - aoag_availability_group_name = var.aoag_availability_group_name - aoag_listener_name = var.aoag_listener_name - aoag_listener_port = var.aoag_listener_port - aoag_listener_ips = local.aoag_listener_ips - hadr_endpoint_name = var.hadr_endpoint_name - hadr_endpoint_port = var.hadr_endpoint_port - sample_database_download_url = var.sample_database_download_url - local_admin_user = var.local_admin_user - windows_admin_password = replace(local.effective_windows_admin_password, "'", "''") - target_computer_name = "SQL2" - dc_private_ip = var.dc_private_ip - sql_data_drive_letter = var.sql_data_drive_letter - })) : null + # Cloudbase-init identifies #ps1_sysnative from the first rendered user-data line. + # Keep that directive outside the UPL-headed template source. + dc_user_data = var.auto_configure_domain_controller ? base64encode(join("\r\n", [ + "#ps1_sysnative", + templatefile("${path.module}/templates/dc-user-data.ps1.tftpl", { + script_body_gzip_base64 = base64gzip(file("${path.module}/scripts/dc/01-configure-domain-controller.ps1")) + domain_name = var.domain_name + domain_netbios_name = var.domain_netbios_name + domain_admin_user = var.domain_admin_user + sql_service_account_user = var.sql_service_account_user + local_admin_user = var.local_admin_user + target_computer_name = "DC-VM" + dc_private_ip = var.dc_private_ip + domain_admin_password = replace(local.effective_domain_admin_password, "'", "''") + sql_service_account_password = replace(local.effective_sql_service_password, "'", "''") + windows_admin_password = replace(local.effective_windows_admin_password, "'", "''") + witness_path = var.wsfc_witness_path + witness_share_name = var.wsfc_witness_share_name + }), + ])) : null + + sql1_user_data = var.auto_configure_windows_nodes ? base64encode(join("\r\n", [ + "#ps1_sysnative", + templatefile("${path.module}/templates/windows-node-user-data.ps1.tftpl", { + sql_script_url = local.automation_object_urls.sql + wsfc_script_url = local.automation_object_urls.wsfc + sample_script_url = local.automation_object_urls.sample + ag_script_url = local.automation_object_urls.ag + safe_failover_script_url = local.automation_object_urls.safe_failover + reconcile_script_url = local.automation_object_urls.reconcile + domain_name = var.domain_name + domain_netbios_name = var.domain_netbios_name + domain_admin_user = var.domain_admin_user + domain_admin_password = replace(local.effective_domain_admin_password, "'", "''") + sql_service_account_user = var.sql_service_account_user + sql_service_account_password = replace(local.effective_sql_service_password, "'", "''") + auto_install_sql_server = var.auto_install_sql_server + install_ssms = var.install_ssms + sql_server_download_url = var.sql_server_download_url + ssms_download_url = var.ssms_download_url + auto_configure_wsfc = var.auto_configure_wsfc + wsfc_cluster_name = var.wsfc_cluster_name + wsfc_primary_node = local.wsfc_primary_node + wsfc_cluster_nodes = local.wsfc_cluster_nodes + wsfc_cluster_static_addresses = local.wsfc_cluster_static_addresses + wsfc_witness_share = local.wsfc_witness_share + skip_cluster_validation = var.skip_cluster_validation + aoag_database_name = var.aoag_database_name + aoag_availability_group_name = var.aoag_availability_group_name + aoag_listener_name = var.aoag_listener_name + aoag_listener_port = var.aoag_listener_port + aoag_listener_ips = local.aoag_listener_ips + hadr_endpoint_name = var.hadr_endpoint_name + hadr_endpoint_port = var.hadr_endpoint_port + sample_database_download_url = var.sample_database_download_url + local_admin_user = var.local_admin_user + windows_admin_password = replace(local.effective_windows_admin_password, "'", "''") + target_computer_name = "SQL1" + dc_private_ip = var.dc_private_ip + sql_data_drive_letter = var.sql_data_drive_letter + }), + ])) : null + + sql2_user_data = var.auto_configure_windows_nodes ? base64encode(join("\r\n", [ + "#ps1_sysnative", + templatefile("${path.module}/templates/windows-node-user-data.ps1.tftpl", { + sql_script_url = local.automation_object_urls.sql + wsfc_script_url = local.automation_object_urls.wsfc + sample_script_url = "" + ag_script_url = local.automation_object_urls.ag + safe_failover_script_url = local.automation_object_urls.safe_failover + reconcile_script_url = local.automation_object_urls.reconcile + domain_name = var.domain_name + domain_netbios_name = var.domain_netbios_name + domain_admin_user = var.domain_admin_user + domain_admin_password = replace(local.effective_domain_admin_password, "'", "''") + sql_service_account_user = var.sql_service_account_user + sql_service_account_password = replace(local.effective_sql_service_password, "'", "''") + auto_install_sql_server = var.auto_install_sql_server + install_ssms = var.install_ssms + sql_server_download_url = var.sql_server_download_url + ssms_download_url = var.ssms_download_url + auto_configure_wsfc = var.auto_configure_wsfc + wsfc_cluster_name = var.wsfc_cluster_name + wsfc_primary_node = local.wsfc_primary_node + wsfc_cluster_nodes = local.wsfc_cluster_nodes + wsfc_cluster_static_addresses = local.wsfc_cluster_static_addresses + wsfc_witness_share = local.wsfc_witness_share + skip_cluster_validation = var.skip_cluster_validation + aoag_database_name = var.aoag_database_name + aoag_availability_group_name = var.aoag_availability_group_name + aoag_listener_name = var.aoag_listener_name + aoag_listener_port = var.aoag_listener_port + aoag_listener_ips = local.aoag_listener_ips + hadr_endpoint_name = var.hadr_endpoint_name + hadr_endpoint_port = var.hadr_endpoint_port + sample_database_download_url = var.sample_database_download_url + local_admin_user = var.local_admin_user + windows_admin_password = replace(local.effective_windows_admin_password, "'", "''") + target_computer_name = "SQL2" + dc_private_ip = var.dc_private_ip + sql_data_drive_letter = var.sql_data_drive_letter + }), + ])) : null } resource "oci_core_instance" "dc" { diff --git a/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl b/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl index 8174fcf..b908fdb 100644 --- a/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl +++ b/automation-mssql-server-aoag-sample/templates/dc-user-data.ps1.tftpl @@ -1,4 +1,3 @@ -#ps1_sysnative # Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. # The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ $ErrorActionPreference = "Stop" diff --git a/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl b/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl index f16dc22..4e7100d 100644 --- a/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl +++ b/automation-mssql-server-aoag-sample/templates/windows-node-user-data.ps1.tftpl @@ -1,4 +1,3 @@ -#ps1_sysnative # Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. # The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ $ErrorActionPreference = "Stop" diff --git a/automation-mssql-server-aoag-sample/terraform.tfvars b/automation-mssql-server-aoag-sample/terraform.tfvars deleted file mode 100644 index 4b87a4e..0000000 --- a/automation-mssql-server-aoag-sample/terraform.tfvars +++ /dev/null @@ -1,30 +0,0 @@ -compartment_id = "ocid1.compartment.oc1..aaaaaaaac7ixtdbw32dnr55p4mjsjdmtbfcy5pa5rasdvuw57eup5w7xbu3q" -oci_config_profile = "DEFAULT" -region = "us-sanjose-1" -windows_image_ocid = "ocid1.image.oc1.us-sanjose-1.aaaaaaaak2hpkzblpxpmdezybtadyswgbkp7dus5yki55pv5uu4gfutupefa" -# Leave ADs empty to select AD-1 for DC/SQL1 and AD-2 for SQL2 when available. -dc_availability_domain = "" -sql1_availability_domain = "" -sql2_availability_domain = "" - -# Current San Jose lab shape. -shape = "VM.Standard.E5.Flex" -ocpus = 6 -memory_in_gbs = 16 -sql_ocpus = 8 -sql_memory_in_gbs = 32 -boot_volume_size_in_gbs = 100 -sql_data_volume_size_in_gbs = 100 -sql_data_drive_letter = "F" - -# Current lab public access posture. -dc_rdp_source_cidr = "0.0.0.0/0" -sql_rdp_source_cidr = "0.0.0.0/0" - -domain_name = "mssqlaoag.demo" -domain_netbios_name = "MSSQLAOAG" -domain_admin_user = "domainadmin" - -# Keep the password out of this file for testing: -# export TF_VAR_domain_admin_password='' -auto_configure_domain_controller = true From 65078d1df16fb3ac8c4af1d4b8480d029d25eb5c Mon Sep 17 00:00:00 2001 From: Akarsha I Date: Fri, 21 Aug 2026 15:24:05 +0530 Subject: [PATCH 4/5] Updated README file Updated README file --- automation-mssql-server-aoag-sample/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/automation-mssql-server-aoag-sample/README.md b/automation-mssql-server-aoag-sample/README.md index 548867f..67f3c63 100644 --- a/automation-mssql-server-aoag-sample/README.md +++ b/automation-mssql-server-aoag-sample/README.md @@ -137,3 +137,6 @@ Treat `terraform.tfvars`, rendered instance metadata, and Terraform state as sen The PowerShell payloads are uploaded to a private Object Storage bucket because OCI limits combined instance metadata to 32 KB. Terraform creates read-only, object-specific pre-authenticated requests expiring at `automation_artifact_expiration`; refresh that variable before a later deployment after the expiry date. The default shape sizing is 6 OCPUs and 16 GB RAM for `DC-VM`, and 8 OCPUs and 32 GB RAM for each SQL node through `sql_ocpus` and `sql_memory_in_gbs`. All boot volumes default to 100 GB. Each SQL node also receives a 100 GB local block volume, formatted as `F:` and used for SQL data, logs, and backup files. SQL binaries and SSMS remain on the boot volume. + +#Post-Deployment Readiness +##Terraform completes infrastructure provisioning before guest automation finishes. Allow approximately 15-30 minutes for Active Directory promotion, domain joins, SQL Server installation, WSFC, database restore, availability group creation, listener configuration, and synchronization before testing failover. \ No newline at end of file From 94d5a176712e34d871b146c7b5d7c473354ab68e Mon Sep 17 00:00:00 2001 From: Akarsha I Date: Mon, 24 Aug 2026 14:39:06 +0530 Subject: [PATCH 5/5] Updated the changes mentioned Updated the changes mentioned --- automation-mssql-server-aoag-sample/README.md | 23 +++++++++++++++---- .../docs/oci-sql-server-aoag-solution-hub.md | 17 +++++++++++--- .../terraform.tfvars.example | 22 +++++++++++++----- 3 files changed, 48 insertions(+), 14 deletions(-) diff --git a/automation-mssql-server-aoag-sample/README.md b/automation-mssql-server-aoag-sample/README.md index 67f3c63..8508f1b 100644 --- a/automation-mssql-server-aoag-sample/README.md +++ b/automation-mssql-server-aoag-sample/README.md @@ -43,14 +43,23 @@ This is a recreate configuration, not an import of the currently stopped VMs. If Terraform state, local variable files, plans, and the `.terraform` directory are local/generated artifacts. They are ignored by `.gitignore`; keep the active state file if Terraform still manages deployed resources. -## Deploy +## Deploy Locally + +Use this path only when the environment will be created and managed by Terraform on your workstation. Before continuing, install Terraform, configure an authorized OCI CLI profile in `~/.oci/config`, and select a Windows image OCID from the same OCI region as `region`. + +Local Terraform and OCI Resource Manager maintain separate state. Do not run a local `terraform apply` against resources created by a Resource Manager stack. For a separate local test, first destroy the Resource Manager stack or use a different compartment with unused CIDRs and static IPs. ```bash -cd terraform-sanjose-aoag +cd cp terraform.tfvars.example terraform.tfvars -# Edit terraform.tfvars and replace every REPLACE_ME value. Then choose one -# credential method below. Do not use both methods for the same variable. +# Review terraform.tfvars before applying. Replace every placeholder beginning +# with REPLACE_, keep intentionally blank values blank unless their comments +# say otherwise, and adjust example defaults such as CIDRs and sizing when +# needed. Keep execution_environment = "local" and set oci_config_profile to a +# profile that exists in ~/.oci/config. The region and windows_image_ocid must +# match. Then choose one credential method below. Do not use both methods for +# the same variable. # Option A: recommended for local deployment. Passwords are not written to # terraform.tfvars. @@ -67,6 +76,8 @@ terraform plan terraform apply ``` +The generated `terraform.tfvars` and local Terraform state are sensitive and are intentionally ignored by Git. Keep them only on the workstation that manages this deployment. + For a genuinely fresh lab test, destroy the previous stack first and then apply from this same directory: ```bash @@ -82,6 +93,8 @@ Do not delete `terraform.tfstate` before `terraform destroy`; doing so would orp This configuration can run as an OCI Resource Manager stack instead of from a local workstation. Resource Manager supplies OCI authentication and manages the Terraform state, so do not configure an OCI CLI profile or run `terraform init` locally for this path. +Resource Manager is an alternative deployment owner, not an extension of a local deployment. Do not switch between the two methods for the same resources unless the original owner has first destroyed its stack. + 1. In the OCI Console, go to **Developer Services** > **Resource Manager** > **Stacks** and create a stack from this Git repository or from a clean ZIP of this directory. 2. Use this directory as the stack working directory. Do not include `.terraform`, any `terraform.tfstate*` file, `terraform.tfvars`, plans, or logs in the uploaded source. 3. Set `execution_environment` to `resource_manager`. Set the region, compartment, Windows image, network values, and sizing in the Stack variables page. @@ -139,4 +152,4 @@ The PowerShell payloads are uploaded to a private Object Storage bucket because The default shape sizing is 6 OCPUs and 16 GB RAM for `DC-VM`, and 8 OCPUs and 32 GB RAM for each SQL node through `sql_ocpus` and `sql_memory_in_gbs`. All boot volumes default to 100 GB. Each SQL node also receives a 100 GB local block volume, formatted as `F:` and used for SQL data, logs, and backup files. SQL binaries and SSMS remain on the boot volume. #Post-Deployment Readiness -##Terraform completes infrastructure provisioning before guest automation finishes. Allow approximately 15-30 minutes for Active Directory promotion, domain joins, SQL Server installation, WSFC, database restore, availability group creation, listener configuration, and synchronization before testing failover. \ No newline at end of file +##Terraform completes infrastructure provisioning before guest automation finishes. Allow approximately 15-30 minutes for Active Directory promotion, domain joins, SQL Server installation, WSFC, database restore, availability group creation, listener configuration, and synchronization before testing failover. diff --git a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md index 7079247..1cf784d 100644 --- a/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md +++ b/automation-mssql-server-aoag-sample/docs/oci-sql-server-aoag-solution-hub.md @@ -308,12 +308,21 @@ This is a single-primary AOAG design. Both replicas participate in availability, ## Deployment +### Local Terraform CLI + +Use the local workflow only when the environment will be owned by Terraform on the workstation. Install Terraform, configure an authorized OCI CLI profile in `~/.oci/config`, and use a Windows image OCID from the same region specified by `region`. Keep `execution_environment = "local"` and set `oci_config_profile` to that local profile in `terraform.tfvars`. + +Local Terraform and OCI Resource Manager have separate state. Do not use a local `terraform apply` against a Resource Manager-created stack. Destroy the Resource Manager stack first, or deploy the local test into a different compartment with unused CIDRs and static IPs. + ```bash -cd terraform-sanjose-aoag +cd cp terraform.tfvars.example terraform.tfvars -# Edit terraform.tfvars and replace every REPLACE_ME value. Choose one -# credential method below; do not use both methods for the same variable. +# Review terraform.tfvars before applying. Replace every placeholder beginning +# with REPLACE_, keep intentionally blank values blank unless their comments +# say otherwise, and adjust example defaults when required. Confirm that the +# region and windows_image_ocid match, then choose one credential method below. +# Do not use both methods for the same variable. # Option A: Prefer environment variables. export TF_VAR_domain_admin_password='' @@ -333,6 +342,8 @@ terraform apply The same Terraform can be deployed through an OCI Resource Manager stack. Create the stack from the Git repository or a clean ZIP of this directory, set `execution_environment = "resource_manager"`, and provide the target region, compartment, Windows image, network values, and passwords through the Stack variables page. Resource Manager supplies OCI authentication and manages state, so users do not run `terraform init` or set `TF_VAR_*` shell variables for this deployment path. +Resource Manager is an alternative deployment owner, not an extension of a local deployment. Do not switch deployment methods for the same resources unless the original owner has destroyed its stack. + Do not upload `.terraform`, `terraform.tfstate*`, `terraform.tfvars`, plans, or logs. Run a Resource Manager **Plan** job, then an **Apply** job after review; use a **Destroy** job for cleanup. The stack operator requires compartment permissions to manage networking, compute, block volumes, private IPs, and the Object Storage automation artifacts. Treat stack state and job logs as sensitive because the bootstrap uses account passwords. The same directory can be used for a clean POC recreation: diff --git a/automation-mssql-server-aoag-sample/terraform.tfvars.example b/automation-mssql-server-aoag-sample/terraform.tfvars.example index d7a9dd2..942c0af 100644 --- a/automation-mssql-server-aoag-sample/terraform.tfvars.example +++ b/automation-mssql-server-aoag-sample/terraform.tfvars.example @@ -1,15 +1,25 @@ # Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. # The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ -# Copy this file to terraform.tfvars, then replace every REPLACE_ME value. -# The values below are examples only; the module is not tied to San Jose. +# This example is for a local Terraform CLI deployment. Copy it to the local, +# Git-ignored terraform.tfvars file, then review every input before applying. +# Replace every placeholder beginning with REPLACE_, keep intentionally blank +# values blank unless their comments say otherwise, and adjust the example +# defaults when they do not suit the target environment. The module is not +# tied to San Jose. +# Do not commit or upload a populated terraform.tfvars file. +# +# For OCI Resource Manager, leave this example in the source ZIP and set the +# equivalent values in the Stack variables page instead of creating a local +# terraform.tfvars file. -# For a local CLI deployment use "local". For an OCI Resource Manager stack, -# set this to "resource_manager" in the Stack variables page. +# For a local CLI deployment use "local" and ensure oci_config_profile exists +# in ~/.oci/config. For an OCI Resource Manager stack, set this to +# "resource_manager" in the Stack variables page. execution_environment = "local" oci_config_profile = "DEFAULT" # Used only when execution_environment = "local". region = "REPLACE_WITH_OCI_REGION" -compartment_id = "ocid1.compartment.oc1..REPLACE_ME" -windows_image_ocid = "ocid1.image.REPLACE_WITH_REGION.REPLACE_ME" +compartment_id = "REPLACE_WITH_COMPARTMENT_ID" +windows_image_ocid = "REPLACE_WITH_IMAGE_OCID" # Leave these empty for automatic placement: DC/SQL1 use AD-1, and SQL2 uses # AD-2 when available; in one-AD regions all three use AD-1.