compute/sqlserver/powershell/parameters-config.ps1 (155 lines of code) (raw):
#Requires -Version 5
# Copyright(c) 2020 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
##############################################################################
#.SYNOPSIS
# Specify parameters for these PowerShell scripts:
# create-sql-instance-availability-group.ps1, create-availability-group.ps1
#
#.DESCRIPTION
# This script is used to import parameter definitions into the scripts:
# create-sql-instance-availability-group.ps1 and create-availability-group.ps1
# Normally it will never be run by itself, but imported from another script.
#
#.NOTES
# AUTHOR: Anibal Santiago - @SQLThinker
##############################################################################
cls
Set-Location $PSScriptRoot
#####################################################################################
# We assume you have created a network in Google Cloud called wsfcnet
# with two subnetworks wsfcsubnet1 and wsfcsubnet2
#####################################################################################
$force_delete = $False # If $True delete the nodes if they exist
# Node and subnet parameters
$node1 = 'cluster-sql1' # Name of node 1
$node2 = 'cluster-sql2' # Name of node 2
$network = 'wsfcnet' # Name of the Custom network in GCP. Must already be created in Google Cloud
$subnet1_name = 'wsfcsubnet1' # Name of Subnet 1. Must already be created in Google Cloud. (Ex. 10.0.0.0/16)
$subnet2_name = 'wsfcsubnet2' # Name of Subnet 2. Must already be created in Google Cloud. (Ex. 10.1.0.0/16)
$size_gb = '200' # Size in GB for the boot disk of the nodes
$disk_type = 'pd-standard' # Type of disk: pd-ssd (recommended) or pd-standard (only option in free trial account)
# Windows Cluster parameters
$name_wsfc = 'cluster-dbclus' # Name for the Windows Failover Cluster (WSFC)
$ip_node1 = '10.0.0.4' # IP address of node 1 in Subnet 1
$ip_wsfc1 = '10.0.0.5' # IP address of WSFC in Subnet 1 (choose from $ip_alias1 address range)
$ip_ag_listener1 = '10.0.0.6' # IP address of AG listener in Subnet 1 (choose from $ip_alias1 address range)
$ip_node2 = '10.1.0.4' # IP address of node 2 in Subnet 2
$ip_wsfc2 = '10.1.0.5' # IP address of WSFC in Subnet 2 (choose from $ip_alias2 address range)
$ip_ag_listener2 = '10.1.0.6' # IP address of AG listener in Subnet 2 (choose from $ip_alias2 address range)
$name_ag = 'cluster-ag' # Name of the SQL Server Availability Group
$name_ag_listener= 'ag-listener' # Name of the SQL Server Availability Group Listener (15 characters maximum)
# Domain/user parameters
$config_user = 'Config.User' # Local user to create in the instance. It will be used for the initial remote connection.
$ip_domain_cntr = '10.2.0.100' # IP address of the Windows Domain controller. This will be used as the local DNS server.
$domain_cntr = 'dc-windows' # Hostname of the domain controller. Will be used when creating a shared folder for Quorum.
$domain = 'dbeng.com' # Name of the Windows Active Directory domain
$domain_netbios = 'dbeng' # Name of the Windows Active Directory domain in Netbios (15 characters max)
$domain_cred = 'dbeng\Administrator' # Account to use to add computers into the domain
#$domain_pwd = 'MyPassword' # Password for the $domain_cred account. Leave commented to prompt the user for a password.
# Database parameters
$db_name = 'TestDB' # Name of the database to create
$sql_data = 'C:\SQLData' # Directory to store the database data files
$sql_log = 'C:\SQLLog' # Directory to store the database transaction log files
$sql_backup = 'C:\SQLBackup' # Directory to store the backup of the database for the initial synchronization of Availability Groups
$share_name = 'SQLBackup' # Share name for the backup folder (\\node2\SQLBackup. Points to the $sql_backup variable)
$data_size = 1024 # Initial size of the database in MB
$data_growth = 256 # Auto growth size of the database in MB
$log_size = 1024 # Initial size of the transaction log in MB
$log_growth = 256 # Auto growth size of the transaction log in MB
# Image Family for the instance. Uncomment only one of the variables below
# Check the command: gcloud compute images list --format='table(family)' | findstr sql
$image_family = 'sql-std-2017-win-2019'
# 'sql-ent-2012-win-2012-r2'
# 'sql-std-2012-win-2012-r2'
# 'sql-web-2012-win-2012-r2'
# 'sql-ent-2014-win-2012-r2'
# 'sql-ent-2014-win-2016'
# 'sql-std-2014-win-2012-r2'
# 'sql-web-2014-win-2012-r2'
# 'sql-ent-2016-win-2012-r2'
# 'sql-ent-2016-win-2016'
# 'sql-ent-2016-win-2019'
# 'sql-std-2016-win-2012-r2'
# 'sql-std-2016-win-2016'
# 'sql-std-2016-win-2019'
# 'sql-web-2016-win-2012-r2'
# 'sql-web-2016-win-2016'
# 'sql-web-2016-win-2019'
# 'sql-ent-2017-win-2016'
# 'sql-ent-2017-win-2019'
# 'sql-exp-2017-win-2012-r2'
# 'sql-exp-2017-win-2016'
# 'sql-exp-2017-win-2019'
# 'sql-std-2017-win-2016'
# 'sql-std-2017-win-2019'
# 'sql-web-2017-win-2016'
# 'sql-web-2017-win-2019'
# Machine Type. Uncomment only one of the variables below.
# Check the command: gcloud compute machine-types list --filter="ZONE:us-central1-f" --format='table(name, description)'
$machine_type = 'n1-standard-4'
# 'f1-micro' # 1 vCPU (shared physical core) and 0.6 GB RAM
# 'g1-small' # 1 vCPU (shared physical core) and 1.7 GB RAM
# 'n1-highcpu-16' # 16 vCPUs, 14.4 GB RAM
# 'n1-highcpu-2' # 2 vCPUs, 1.8 GB RAM
# 'n1-highcpu-32' # 32 vCPUs, 28.8 GB RAM
# 'n1-highcpu-4' # 4 vCPUs, 3.6 GB RAM
# 'n1-highcpu-64' # 64 vCPUs, 57.6 GB RAM
# 'n1-highcpu-8' # 8 vCPUs, 7.2 GB RAM
# 'n1-highcpu-96' # 96 vCPUs, 86 GB RAM
# 'n1-highmem-16' # 16 vCPUs, 104 GB RAM
# 'n1-highmem-2' # 2 vCPUs, 13 GB RAM
# 'n1-highmem-32' # 32 vCPUs, 208 GB RAM
# 'n1-highmem-4' # 4 vCPUs, 26 GB RAM
# 'n1-highmem-64' # 64 vCPUs, 416 GB RAM
# 'n1-highmem-8' # 8 vCPUs, 52 GB RAM
# 'n1-highmem-96' # 96 vCPUs, 624 GB RAM
# 'n1-standard-1' # 1 vCPU, 3.75 GB RAM
# 'n1-standard-16' # 16 vCPUs, 60 GB RAM
# 'n1-standard-2' # 2 vCPUs, 7.5 GB RAM
# 'n1-standard-32' # 32 vCPUs, 120 GB RAM
# 'n1-standard-4' # 4 vCPUs, 15 GB RAM
# 'n1-standard-64' # 64 vCPUs, 240 GB RAM
# 'n1-standard-8' # 8 vCPUs, 30 GB RAM
# 'n1-standard-96' # 96 vCPUs, 360 GB RAM
# Zone where the instance will be located. Uncomment only one of the variables below.
# Check the command: gcloud compute zones list --format='table(name)'
$zone = 'us-east1-b'
# 'asia-east1-a'
# 'asia-east1-b'
# 'asia-east1-c'
# 'europe-west1-b'
# 'europe-west1-c'
# 'europe-west1-d'
# 'us-central1-a'
# 'us-central1-b'
# 'us-central1-c'
# 'us-central1-f'
# 'us-east1-b'
# 'us-east1-c'
# 'us-east1-d'
# 'us-west1-a'
# 'us-west1-b'
# Create a credential object for the domain admin account. It will be used to add the instances to the domain later on.
# Skip if running in Node 1 as we copy this file to Node 1 to create the WSFC locally. No need to create the Credential
# if running locally.
$hostname = [System.Net.Dns]::GetHostName()
if ( $hostname.ToLower() -ne $node1.ToLower() ) {
if (!($domain_pwd)) {
$cred = Get-Credential -Credential $domain_cred }
else {
$Pwd = ConvertTo-SecureString $domain_pwd -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential $domain_cred, $Pwd
}
}