{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "This template deploys SharePoint 2016 by deploying AD, SQL, and SharePoint CloudFormation stacks. **WARNING** This template creates Amazon EC2 Windows instance and related resources. You will be billed for the AWS resources used if you create a stack from this template.", "Metadata": { "AWS::CloudFormation::Interface": { "ParameterGroups": [ { "Label": { "default": "Network Configuration" }, "Parameters": [ "KeyPairName", "AvailabilityZones", "PrivateSubnet1CIDR", "PrivateSubnet2CIDR", "PublicSubnet1CIDR", "PublicSubnet2CIDR", "VPCCIDR" ] }, { "Label": { "default": "Microsoft SharePoint Configuration" }, "Parameters": [ "ELBConfiguration", "IncludeOfficeOnlineServer", "OOSInstanceType", "SPISOImageURI", "SPKey", "SPTopology", "SPFarmAccount", "SPFarmAccountPassword", "SPInstanceType" ] }, { "Label": { "default": "Microsoft Active Directory Configuration" }, "Parameters": [ "ADServer1InstanceType", "ADServer1NetBIOSName", "ADServer1PrivateIP", "ADServer2InstanceType", "ADServer2NetBIOSName", "ADServer2PrivateIP", "DomainAdminUser", "DomainAdminPassword", "DomainDNSName", "DomainNetBIOSName" ] }, { "Label": { "default": "Microsoft SQL Server Configuration" }, "Parameters": [ "HostType", "DedicatedHostAMI", "SQLServerVersion", "SQLServiceAccount", "SQLServiceAccountPassword", "SQLLicenseProvided", "Volume1Size", "Volume1Type", "Volume1Iops", "Volume2Size", "Volume2Type", "Volume2Iops", "Volume3Size", "Volume3Type", "Volume3Iops" ] }, { "Label": { "default": "WSFC Configuration" }, "Parameters": [ "WSFCFileServerPrivateIP", "WSFCNode1InstanceType", "WSFCNode1NetBIOSName", "WSFCNode1PrivateIP1", "WSFCNode1PrivateIP2", "WSFCNode1PrivateIP3", "WSFCNode2InstanceType", "WSFCNode2NetBIOSName", "WSFCNode2PrivateIP1", "WSFCNode2PrivateIP2", "WSFCNode2PrivateIP3", "WSFCNode3InstanceType", "WSFCNode3NetBIOSName", "WSFCNode3PrivateIP1", "WSFCNode3PrivateIP2", "WSFCNode3PrivateIP3", "DedicatedHostIDNode3" ] }, { "Label": { "default": "Microsoft Remote Desktop Gateway Configuration" }, "Parameters": [ "NumberOfRDGWHosts", "RDGWCIDR", "RDGWInstanceType" ] }, { "Label": { "default": "AWS Quick Start Configuration" }, "Parameters": [ "QSS3BucketName", "QSS3KeyPrefix" ] } ], "ParameterLabels": { "AvailabilityZones": { "default": "Availability Zones" }, "ADServer1InstanceType": { "default": "Domain Controller 1 Instance Type" }, "ADServer1NetBIOSName": { "default": "Domain Controller 1 NetBIOS Name" }, "ADServer1PrivateIP": { "default": "Domain Controller 1 Private IP Address" }, "ADServer2InstanceType": { "default": "Domain Controller 2 Instance Type" }, "ADServer2NetBIOSName": { "default": "Domain Controller 2 NetBIOS Name" }, "ADServer2PrivateIP": { "default": "Domain Controller 2 Private IP Address" }, "DomainAdminPassword": { "default": "Domain Admin Password" }, "DomainAdminUser": { "default": "Domain Admin User Name" }, "DomainDNSName": { "default": "Domain DNS Name" }, "DomainNetBIOSName": { "default": "Domain NetBIOS Name" }, "ELBConfiguration": { "default": "ELB Configuration" }, "IncludeOfficeOnlineServer": { "default": "Include Office Online Servers" }, "KeyPairName": { "default": "Key Pair Name" }, "NumberOfRDGWHosts": { "default": "Number of RDGW hosts" }, "OOSInstanceType": { "default": "Office Online Server Instance Type" }, "PrivateSubnet1CIDR": { "default": "Private Subnet 1 CIDR" }, "PrivateSubnet2CIDR": { "default": "Private Subnet 2 CIDR" }, "PublicSubnet1CIDR": { "default": "Public Subnet 1 CIDR" }, "PublicSubnet2CIDR": { "default": "Public Subnet 2 CIDR" }, "QSS3BucketName": { "default": "Quick Start S3 Bucket Name" }, "QSS3KeyPrefix": { "default": "Quick Start S3 Key Prefix" }, "RDGWCIDR": { "default": "Allowed Remote Desktop Gateway External Access CIDR" }, "RDGWInstanceType": { "default": "Remote Desktop Gateway Server Instance Type" }, "SPFarmAccount": { "default": "Farm Account Name" }, "SPFarmAccountPassword": { "default": "Farm Account Password" }, "SPInstanceType": { "default": "SharePoint Server Instance Type" }, "SPISOImageURI": { "default": "Installation Media ISO Image File URI" }, "SPKey": { "default": "Product Key" }, "SPTopology": { "default": "Farm Topology" }, "SQLServerVersion": { "default": "Version" }, "SQLServiceAccount": { "default": "Service Account Name" }, "SQLServiceAccountPassword": { "default": "Service Account Password" }, "SQLLicenseProvided": { "default": "Amazon-Provided SQL Server License" }, "Volume1Iops": { "default": "Data Volume IOPS" }, "Volume1Size": { "default": "Data Volume Size" }, "Volume1Type": { "default": "Data Volume Type" }, "Volume2Iops": { "default": "Logs Volume IOPS" }, "Volume2Size": { "default": "Logs Volume Size" }, "Volume2Type": { "default": "Logs Volume Type" }, "Volume3Iops": { "default": "TempDB Volume IOPS" }, "Volume3Size": { "default": "TempDB Volume Size" }, "Volume3Type": { "default": "TempDB Volume Type" }, "VPCCIDR": { "default": "VPC CIDR" }, "WSFCFileServerPrivateIP": { "default": "File Server Private IP Address" }, "WSFCNode1InstanceType": { "default": "WSFC Node 1 Instance Type" }, "WSFCNode1NetBIOSName": { "default": "WSFC Node 1 NetBIOS Name" }, "WSFCNode1PrivateIP1": { "default": "WSFC Node 1 Private IP Address 1" }, "WSFCNode1PrivateIP2": { "default": "WSFC Node 1 Private IP Address 2" }, "WSFCNode1PrivateIP3": { "default": "WSFC Node 1 Private IP Address 3" }, "WSFCNode2InstanceType": { "default": "WSFC Node 2 Instance Type" }, "WSFCNode2NetBIOSName": { "default": "WSFC Node 2 NetBIOS Name" }, "WSFCNode2PrivateIP1": { "default": "WSFC Node 2 Private IP Address 1" }, "WSFCNode2PrivateIP2": { "default": "WSFC Node 2 Private IP Address 2" }, "WSFCNode2PrivateIP3": { "default": "WSFC Node 2 Private IP Address 3" }, "WSFCNode3InstanceType": { "default": "Instance Type for Cluster Node 3" }, "WSFCNode3NetBIOSName": { "default": "Cluster Node 3 NetBIOS Name" }, "WSFCNode3PrivateIP1": { "default": "Cluster Node 3 Private IP Address 1" }, "WSFCNode3PrivateIP2": { "default": "Cluster Node 3 Private IP Address 2" }, "WSFCNode3PrivateIP3": { "default": "Cluster Node 3 Private IP Address 3" } } } }, "Parameters": { "AvailabilityZones": { "Description": "List of Availability Zones to use for the subnets in the VPC. Note: The logical order is preserved and only 2 AZs are used for this deployment.", "Type": "List" }, "ADServer1InstanceType": { "AllowedValues": [ "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge" ], "Default": "m4.xlarge", "Description": "Amazon EC2 instance type for the first Active Directory Instance", "Type": "String" }, "ADServer1NetBIOSName": { "AllowedPattern": "[a-zA-Z0-9]+", "Default": "DC1", "Description": "NetBIOS name of the first AD Server (up to 15 characters)", "MaxLength": "15", "MinLength": "1", "Type": "String" }, "ADServer1PrivateIP": { "Default": "10.0.0.10", "Description": "Fixed private IP for the first Active Directory server located in AZ1", "Type": "String" }, "ADServer2InstanceType": { "AllowedValues": [ "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge" ], "Default": "m4.xlarge", "Description": "Amazon EC2 instance type for the second Active Directory Instance", "Type": "String" }, "ADServer2NetBIOSName": { "AllowedPattern": "[a-zA-Z0-9]+", "Default": "DC2", "Description": "NetBIOS name of the second AD Server (up to 15 characters)", "MaxLength": "15", "MinLength": "1", "Type": "String" }, "ADServer2PrivateIP": { "Default": "10.0.64.10", "Description": "Fixed private IP for the second Active Directory server located in AZ2", "Type": "String" }, "DomainAdminPassword": { "AllowedPattern": "(?=^.{6,255}$)((?=.*\\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*", "Description": "Password for the domain admin user. Must be at least 8 characters containing letters, numbers and symbols", "MaxLength": "32", "MinLength": "8", "NoEcho": "true", "Type": "String" }, "DomainAdminUser": { "AllowedPattern": "[a-zA-Z0-9]*", "Default": "StackAdmin", "Description": "User name for the account that will be added as Domain Administrator. This is separate from the default \"Administrator\" account", "MaxLength": "25", "MinLength": "5", "Type": "String" }, "DomainDNSName": { "AllowedPattern": "[a-zA-Z0-9\\-]+\\..+", "Default": "example.com", "Description": "Fully qualified domain name (FQDN) of the forest root domain e.g. example.com", "MaxLength": "25", "MinLength": "2", "Type": "String" }, "DomainNetBIOSName": { "AllowedPattern": "[a-zA-Z0-9]+", "Default": "example", "Description": "NetBIOS name of the domain (up to 15 characters) for users of earlier versions of Windows e.g. EXAMPLE", "MaxLength": "15", "MinLength": "1", "Type": "String" }, "ELBConfiguration": { "AllowedValues": [ "internal", "external" ], "Default": "external", "Description": "Specify how to configure the Elastic Load Balancer. Allowed values are internal or external", "Type": "String" }, "IncludeOfficeOnlineServer": { "AllowedValues": [ "true", "false" ], "Default": "false", "Description": "To include an Office Online Server in each AZ, set this parameter to true.", "Type": "String" }, "KeyPairName": { "Description": "Public/private key pairs allow you to securely connect to your instance after it launches", "Type": "AWS::EC2::KeyPair::KeyName" }, "NumberOfRDGWHosts": { "AllowedValues": [ "1", "2", "3", "4" ], "Default": "1", "Description": "Enter the number of Remote Desktop Gateway hosts to create", "Type": "String" }, "OOSInstanceType": { "AllowedValues": [ "m4.large", "m4.xlarge" ], "Default": "m4.xlarge", "Description": "Amazon EC2 instance type for the Office Online Servers", "Type": "String" }, "PrivateSubnet1CIDR": { "AllowedPattern": "[a-zA-Z0-9]+\\..+", "Default": "10.0.0.0/19", "Description": "CIDR block for the AD Server tier located in AZ1.", "Type": "String" }, "PrivateSubnet2CIDR": { "AllowedPattern": "[a-zA-Z0-9]+\\..+", "Default": "10.0.64.0/19", "Description": "CIDR block for the AD Server tier located in AZ2.", "Type": "String" }, "PublicSubnet1CIDR": { "AllowedPattern": "[a-zA-Z0-9]+\\..+", "Default": "10.0.32.0/20", "Description": "CIDR Block for the Public DMZ Subnet located in AZ1", "Type": "String" }, "PublicSubnet2CIDR": { "AllowedPattern": "[a-zA-Z0-9]+\\..+", "Default": "10.0.96.0/20", "Description": "CIDR Block for the Public DMZ Subnet located in AZ2", "Type": "String" }, "QSS3BucketName": { "AllowedPattern": "^[0-9a-zA-Z]+([0-9a-zA-Z-]*[0-9a-zA-Z])*$", "ConstraintDescription": "Quick Start bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", "Default": "aws-quickstart", "Description": "S3 bucket name for the Quick Start assets. Quick Start bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", "Type": "String" }, "QSS3KeyPrefix": { "AllowedPattern": "^[0-9a-zA-Z-/]*$", "ConstraintDescription": "Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slash (/).", "Default": "quickstart-microsoft-sharepoint/", "Description": "S3 key prefix for the Quick Start assets. Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slash (/).", "Type": "String" }, "RDGWCIDR": { "AllowedPattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$", "ConstraintDescription": "CIDR block parameter must be in the form x.x.x.x/x", "Description": "Allowed CIDR Block for external access to the Remote Desktop Gateways", "Type": "String" }, "RDGWInstanceType": { "AllowedValues": [ "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge" ], "Default": "m4.xlarge", "Description": "Amazon EC2 instance type for the Remote Desktop Gatweway Instance", "Type": "String" }, "SPFarmAccount": { "AllowedPattern": "[a-zA-Z0-9]*", "Default": "spfarm", "Description": "User name for the SP Farm account.", "MaxLength": "25", "MinLength": "5", "Type": "String" }, "SPFarmAccountPassword": { "AllowedPattern": "(?=^.{6,255}$)((?=.*\\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*", "Description": "Password for the SP Farm account. Must be at least 8 characters containing letters, numbers and symbols", "MaxLength": "32", "MinLength": "8", "NoEcho": "true", "Type": "String" }, "SPInstanceType": { "AllowedValues": [ "c4.2xlarge", "c4.4xlarge" ], "ConstraintDescription": "Only Compute Optimized instance types c4.2xlarge, c4.4xlarge allowed", "Default": "c4.2xlarge", "Description": "Amazon EC2 instance type for the SharePoint Web Front-End Servers", "Type": "String" }, "SPISOImageURI": { "AllowedPattern": "^(?i)(s3|http|https):\\/\\/.+", "Description": "S3 URI to an S3 bucket containing the SharePoint Server 2016 installation media ISO image file (e.g., s3://sample-bucket/microsoft/sharepoint/installation-media.img). An HTTP/HTTPS URI can also be used (e.g., https://example.com/microsoft/sharepoint/installation-media.img)", "Type": "String" }, "SPKey": { "Default": "NQGJR-63HC8-XCRQH-MYVCH-3J3QR", "Description": "The Product Key for SharePoint 2016. The trial key is provided by default. You can replace with your own key", "Type": "String" }, "SPTopology": { "AllowedValues": [ "traditional", "streamlined" ], "Default": "traditional", "Description": "Specify the topology for the SharePoint farm to be deployed. Allowed values are traditional or streamlined", "Type": "String" }, "SQLServerVersion": { "AllowedValues": [ "2016", "2017" ], "Default": "2016", "Description": "Version of SQL Server to install on WSFC Nodes. Options include either \"2014\" or \"2012\"", "Type": "String" }, "SQLServiceAccount": { "AllowedPattern": "[a-zA-Z0-9]*", "Default": "sqlsa", "Description": "User name for the SQL Server Service Account. This Account is a Domain User.", "MaxLength": "25", "MinLength": "5", "Type": "String" }, "SQLServiceAccountPassword": { "AllowedPattern": "(?=^.{6,255}$)((?=.*\\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*", "Description": "Password for the SQL Service account. Must be at least 8 characters containing letters, numbers and symbols", "MaxLength": "32", "MinLength": "8", "NoEcho": "true", "Type": "String" }, "SQLLicenseProvided": { "AllowedValues": [ "yes", "no" ], "Default": "no", "Description": "License SQL Server from AWS Marketplace", "Type": "String" }, "Volume1Iops": { "Default": "1000", "Description": "Iops for the SQL Data drive (only used when volume type is io1)", "MaxValue": "20000", "MinValue": "100", "Type": "Number" }, "Volume1Size": { "Default": "500", "Description": "Volume size for the SQL Data drive, in GiB", "MaxValue": "16000", "MinValue": "100", "Type": "Number" }, "Volume1Type": { "AllowedValues": [ "gp2", "io1" ], "Default": "gp2", "Description": "Volume type for the SQL Data drive", "Type": "String" }, "Volume2Iops": { "Default": "1000", "Description": "Iops for the SQL Logs drive (only used when volume type is io1)", "MaxValue": "20000", "MinValue": "100", "Type": "Number" }, "Volume2Size": { "Default": "500", "Description": "Volume size for the SQL Logs drive, in GiB", "MaxValue": "16000", "MinValue": "100", "Type": "Number" }, "Volume2Type": { "AllowedValues": [ "gp2", "io1" ], "Default": "gp2", "Description": "Volume type for the SQL Logs drive", "Type": "String" }, "Volume3Iops": { "Default": "1000", "Description": "Iops for the SQL TempDB drive (only used when volume type is io1)", "MaxValue": "20000", "MinValue": "100", "Type": "Number" }, "Volume3Size": { "Default": "500", "Description": "Volume size for the SQL TempDB drive, in GiB", "MaxValue": "16000", "MinValue": "100", "Type": "Number" }, "Volume3Type": { "AllowedValues": [ "gp2", "io1" ], "Default": "gp2", "Description": "Volume type for the SQL TempDB drive", "Type": "String" }, "VPCCIDR": { "AllowedPattern": "[a-zA-Z0-9]+\\..+", "Default": "10.0.0.0/16", "Description": "CIDR Block for the VPC", "Type": "String" }, "WSFCFileServerPrivateIP": { "AllowedPattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", "Default": "10.0.0.200", "Description": "Primary private IP for the fileserver located in Availability Zone 1", "Type": "String" }, "WSFCNode1InstanceType": { "AllowedValues": [ "r4.xlarge", "r4.2xlarge", "r4.4xlarge", "r4.8xlarge", "r5.large", "r5.xlarge", "r5.2xlarge", "r5.4xlarge", "r5.12xlarge" ], "ConstraintDescription": "Only EBS Optimized instance types r3.xlarge, r3.2xlarge, r3.4xlarge allowed", "Default": "r4.xlarge", "Description": "Amazon EC2 instance type for the first WSFC Node", "Type": "String" }, "WSFCNode1NetBIOSName": { "AllowedPattern": "[a-zA-Z0-9]+", "Default": "WSFCNode1", "Description": "NetBIOS name of the first WSFC Node (up to 15 characters)", "MaxLength": "15", "MinLength": "1", "Type": "String" }, "WSFCNode1PrivateIP1": { "Default": "10.0.0.100", "Description": "Primary private IP for the first WSFC Node located in AZ1", "Type": "String" }, "WSFCNode1PrivateIP2": { "Default": "10.0.0.101", "Description": "Secondary private IP for WSFC cluster on first WSFC Node", "Type": "String" }, "WSFCNode1PrivateIP3": { "Default": "10.0.0.102", "Description": "Third private IP for Availability Group Listener on first WSFC Node", "Type": "String" }, "WSFCNode2InstanceType": { "AllowedValues": [ "r4.xlarge", "r4.2xlarge", "r4.4xlarge", "r4.8xlarge", "r5.large", "r5.xlarge", "r5.2xlarge", "r5.4xlarge", "r5.12xlarge" ], "ConstraintDescription": "Only EBS Optimized instance types r3.xlarge, r3.2xlarge, r3.4xlarge allowed", "Default": "r4.xlarge", "Description": "Amazon EC2 instance type for the second WSFC Node", "Type": "String" }, "WSFCNode2NetBIOSName": { "AllowedPattern": "[a-zA-Z0-9]+", "Default": "WSFCNode2", "Description": "NetBIOS name of the second WSFC Node (up to 15 characters)", "MaxLength": "15", "MinLength": "1", "Type": "String" }, "WSFCNode2PrivateIP1": { "Default": "10.0.64.100", "Description": "Primary private IP for the second WSFC Node located in AZ2", "Type": "String" }, "WSFCNode2PrivateIP2": { "Default": "10.0.64.101", "Description": "Secondary private IP for WSFC cluster on second WSFC Node", "Type": "String" }, "WSFCNode2PrivateIP3": { "Default": "10.0.64.102", "Description": "Third private IP for Availability Group Listener on second WSFC Node", "Type": "String" }, "WSFCNode3InstanceType": { "AllowedValues": [ "r4.xlarge", "r4.2xlarge", "r4.4xlarge", "r4.8xlarge" ], "ConstraintDescription": "Only EBS Optimized instance types r4.xlarge, r4.2xlarge, r4.4xlarge, r4.8xlarge allowed", "Default": "r4.2xlarge", "Description": "Amazon EC2 instance type for the third WSFC Node", "Type": "String" }, "WSFCNode3NetBIOSName": { "AllowedPattern": "[a-zA-Z0-9\\-]+", "Default": "WSFCNode3", "Description": "NetBIOS name of the third WSFC Node (up to 15 characters)", "MaxLength": "15", "MinLength": "1", "Type": "String" }, "WSFCNode3PrivateIP1": { "AllowedPattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", "Default": "10.0.64.100", "Description": "Primary private IP for the optional third WSFC Node located in Availability Zone 3", "Type": "String" }, "WSFCNode3PrivateIP2": { "AllowedPattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", "Default": "10.0.64.101", "Description": "Secondary private IP for WSFC cluster on optional third WSFC Node", "Type": "String" }, "WSFCNode3PrivateIP3": { "AllowedPattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", "Default": "10.0.64.102", "Description": "Third private IP for Availability Group Listener on optional third WSFC Node", "Type": "String" } }, "Conditions": { "GovCloudCondition": { "Fn::Equals": [ { "Ref": "AWS::Region" }, "us-gov-west-1" ] } }, "Resources": { "VPCStack": { "Type": "AWS::CloudFormation::Stack", "Properties": { "TemplateURL": { "Fn::Sub": [ "https://${QSS3BucketName}.${QSS3Region}.amazonaws.com/${QSS3KeyPrefix}submodules/quickstart-aws-vpc/templates/aws-vpc.template", { "QSS3Region": { "Fn::If": [ "GovCloudCondition", "s3-us-gov-west-1", "s3" ] } } ] }, "Parameters": { "AvailabilityZones": { "Fn::Join": [ ",", { "Ref": "AvailabilityZones" } ] }, "KeyPairName": { "Ref": "KeyPairName" }, "NumberOfAZs": "2", "PrivateSubnet1ACIDR": { "Ref": "PrivateSubnet1CIDR" }, "PrivateSubnet2ACIDR": { "Ref": "PrivateSubnet2CIDR" }, "PublicSubnet1CIDR": { "Ref": "PublicSubnet1CIDR" }, "PublicSubnet2CIDR": { "Ref": "PublicSubnet2CIDR" }, "VPCCIDR": { "Ref": "VPCCIDR" } } } }, "ADStack": { "Type": "AWS::CloudFormation::Stack", "DependsOn": "VPCStack", "Properties": { "TemplateURL": { "Fn::Sub": [ "https://${QSS3BucketName}.${QSS3Region}.amazonaws.com/${QSS3KeyPrefix}submodules/quickstart-microsoft-activedirectory/templates/ad-1.template", { "QSS3Region": { "Fn::If": [ "GovCloudCondition", "s3-us-gov-west-1", "s3" ] } } ] }, "Parameters": { "ADServer1PrivateIP": { "Ref": "ADServer1PrivateIP" }, "ADServer2InstanceType": { "Ref": "ADServer2InstanceType" }, "ADServer2PrivateIP": { "Ref": "ADServer2PrivateIP" }, "ADServer1InstanceType": { "Ref": "ADServer1InstanceType" }, "ADServer1NetBIOSName": { "Ref": "ADServer1NetBIOSName" }, "ADServer2NetBIOSName": { "Ref": "ADServer2NetBIOSName" }, "DomainAdminPassword": { "Ref": "DomainAdminPassword" }, "DomainAdminUser": { "Ref": "DomainAdminUser" }, "DomainDNSName": { "Ref": "DomainDNSName" }, "DomainNetBIOSName": { "Ref": "DomainNetBIOSName" }, "KeyPairName": { "Ref": "KeyPairName" }, "PrivateSubnet1ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PrivateSubnet1AID" ] }, "PrivateSubnet2ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PrivateSubnet2AID" ] }, "VPCID": { "Fn::GetAtt": [ "VPCStack", "Outputs.VPCID" ] }, "QSS3BucketName": { "Ref": "QSS3BucketName" }, "QSS3KeyPrefix": { "Fn::Sub": "${QSS3KeyPrefix}submodules/quickstart-microsoft-activedirectory/" }, "VPCCIDR": { "Fn::GetAtt": [ "VPCStack", "Outputs.VPCCIDR" ] } } } }, "RDGWStack": { "DependsOn": "ADStack", "Type": "AWS::CloudFormation::Stack", "Properties": { "TemplateURL": { "Fn::Sub": [ "https://${QSS3BucketName}.${QSS3Region}.amazonaws.com/${QSS3KeyPrefix}submodules/quickstart-microsoft-rdgateway/templates/rdgw-domain.template", { "QSS3Region": { "Fn::If": [ "GovCloudCondition", "s3-us-gov-west-1", "s3" ] } } ] }, "Parameters": { "DomainAdminPassword": { "Ref": "DomainAdminPassword" }, "DomainAdminUser": { "Ref": "DomainAdminUser" }, "DomainDNSName": { "Ref": "DomainDNSName" }, "DomainMemberSGID": { "Fn::GetAtt": [ "ADStack", "Outputs.DomainMemberSGID" ] }, "DomainNetBIOSName": { "Ref": "DomainNetBIOSName" }, "KeyPairName": { "Ref": "KeyPairName" }, "NumberOfRDGWHosts": { "Ref": "NumberOfRDGWHosts" }, "PublicSubnet1ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PublicSubnet1ID" ] }, "PublicSubnet2ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PublicSubnet2ID" ] }, "QSS3BucketName": { "Ref": "QSS3BucketName" }, "QSS3KeyPrefix": { "Fn::Sub": "${QSS3KeyPrefix}submodules/quickstart-microsoft-rdgateway/" }, "RDGWInstanceType": { "Ref": "RDGWInstanceType" }, "RDGWCIDR": { "Ref": "RDGWCIDR" }, "VPCID": { "Fn::GetAtt": [ "VPCStack", "Outputs.VPCID" ] } } } }, "SQLStack": { "Type": "AWS::CloudFormation::Stack", "DependsOn": "ADStack", "Properties": { "TemplateURL": { "Fn::Sub": [ "https://${QSS3BucketName}.${QSS3Region}.amazonaws.com/${QSS3KeyPrefix}submodules/quickstart-microsoft-sql/templates/sql.template", { "QSS3Region": { "Fn::If": [ "GovCloudCondition", "s3-us-gov-west-1", "s3" ] } } ] }, "Parameters": { "ADScenarioType": "Microsoft AD on Amazon EC2", "DomainAdminPassword": { "Ref": "DomainAdminPassword" }, "DomainAdminUser": { "Ref": "DomainAdminUser" }, "DomainDNSName": { "Ref": "DomainDNSName" }, "DomainMemberSGID": { "Fn::GetAtt": [ "ADStack", "Outputs.DomainMemberSGID" ] }, "DomainNetBIOSName": { "Ref": "DomainNetBIOSName" }, "KeyPairName": { "Ref": "KeyPairName" }, "SQLServiceAccount": { "Ref": "SQLServiceAccount" }, "SQLServiceAccountPassword": { "Ref": "SQLServiceAccountPassword" }, "SQLLicenseProvided": { "Ref": "SQLLicenseProvided" }, "WSFCFileServerPrivateIP": { "Ref": "WSFCFileServerPrivateIP" }, "WSFCNode1InstanceType": { "Ref": "WSFCNode1InstanceType" }, "WSFCNode1NetBIOSName": { "Ref": "WSFCNode1NetBIOSName" }, "WSFCNode1PrivateIP1": { "Ref": "WSFCNode1PrivateIP1" }, "WSFCNode1PrivateIP2": { "Ref": "WSFCNode1PrivateIP2" }, "WSFCNode1PrivateIP3": { "Ref": "WSFCNode1PrivateIP3" }, "WSFCNode2InstanceType": { "Ref": "WSFCNode2InstanceType" }, "WSFCNode2NetBIOSName": { "Ref": "WSFCNode2NetBIOSName" }, "WSFCNode2PrivateIP1": { "Ref": "WSFCNode2PrivateIP1" }, "WSFCNode2PrivateIP2": { "Ref": "WSFCNode2PrivateIP2" }, "WSFCNode2PrivateIP3": { "Ref": "WSFCNode2PrivateIP3" }, "PrivateSubnet1ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PrivateSubnet1AID" ] }, "PrivateSubnet2ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PrivateSubnet2AID" ] }, "QSS3BucketName": { "Ref": "QSS3BucketName" }, "QSS3KeyPrefix": { "Fn::Sub": "${QSS3KeyPrefix}submodules/quickstart-microsoft-sql/" }, "Volume1Size": { "Ref": "Volume1Size" }, "Volume1Type": { "Ref": "Volume1Type" }, "Volume1Iops": { "Ref": "Volume1Iops" }, "Volume2Size": { "Ref": "Volume2Size" }, "Volume2Type": { "Ref": "Volume2Type" }, "Volume2Iops": { "Ref": "Volume2Iops" }, "Volume3Size": { "Ref": "Volume3Size" }, "Volume3Type": { "Ref": "Volume3Type" }, "Volume3Iops": { "Ref": "Volume3Iops" }, "VPCID": { "Fn::GetAtt": [ "VPCStack", "Outputs.VPCID" ] } } } }, "SharePointStack": { "Type": "AWS::CloudFormation::Stack", "DependsOn": "SQLStack", "Properties": { "TemplateURL": { "Fn::Sub": [ "https://${QSS3BucketName}.${QSS3Region}.amazonaws.com/${QSS3KeyPrefix}templates/Template_1_SharePoint_2016.template", { "QSS3Region": { "Fn::If": [ "GovCloudCondition", "s3-us-gov-west-1", "s3" ] } } ] }, "Parameters": { "ADServer1PrivateIP": { "Ref": "ADServer1PrivateIP" }, "ADServer2PrivateIP": { "Ref": "ADServer2PrivateIP" }, "ADServer1NetBIOSName": { "Ref": "ADServer1NetBIOSName" }, "ADServer2NetBIOSName": { "Ref": "ADServer2NetBIOSName" }, "DomainAdminPassword": { "Ref": "DomainAdminPassword" }, "DomainAdminUser": { "Ref": "DomainAdminUser" }, "DomainDNSName": { "Ref": "DomainDNSName" }, "DomainMemberSGID": { "Fn::GetAtt": [ "ADStack", "Outputs.DomainMemberSGID" ] }, "DomainNetBIOSName": { "Ref": "DomainNetBIOSName" }, "ELBConfiguration": { "Ref": "ELBConfiguration" }, "IncludeOfficeOnlineServer": { "Ref": "IncludeOfficeOnlineServer" }, "KeyPairName": { "Ref": "KeyPairName" }, "WSFCNode1NetBIOSName": { "Ref": "WSFCNode1NetBIOSName" }, "WSFCNode2NetBIOSName": { "Ref": "WSFCNode2NetBIOSName" }, "OOSInstanceType": { "Ref": "OOSInstanceType" }, "PrivateSubnet1ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PrivateSubnet1AID" ] }, "PrivateSubnet2ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PrivateSubnet2AID" ] }, "PublicSubnet1ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PublicSubnet1ID" ] }, "PublicSubnet2ID": { "Fn::GetAtt": [ "VPCStack", "Outputs.PublicSubnet2ID" ] }, "QSS3BucketName": { "Ref": "QSS3BucketName" }, "QSS3KeyPrefix": { "Ref": "QSS3KeyPrefix" }, "SPFarmAccount": { "Ref": "SPFarmAccount" }, "SPFarmAccountPassword": { "Ref": "SPFarmAccountPassword" }, "SPInstanceType": { "Ref": "SPInstanceType" }, "SPISOImageURI": { "Ref": "SPISOImageURI" }, "SPKey": { "Ref": "SPKey" }, "SPTopology": { "Ref": "SPTopology" }, "SQLServerAccessSecurityGroupID": { "Fn::GetAtt": [ "SQLStack", "Outputs.SQLServerAccessSecurityGroupID" ] }, "VPCID": { "Fn::GetAtt": [ "VPCStack", "Outputs.VPCID" ] }, "VPCCIDR": { "Fn::GetAtt": [ "VPCStack", "Outputs.VPCCIDR" ] } } } } } }