Creating an AutoScalingGroup with IIS and Redundant Remote Desktop Gateway Servers

New Release With Fluent Interface

We’ve got a new release with some really cool features.  Let’s take a look at a template used to create an EC2 Auto Scaling Group that features Windows Servers with IIS installed and configure.  This Bisque AWS template creates a stack very similar to the AWS Quick Start – Microsoft Active Directory Domain
Services on the AWS Cloud. Two key differences from the AWS Quick Start are that it uses an AWS Directory Server (instead of unmanaged Active Directory server) and that it includes an Auto Scaling Group with the IIS servers installed.

This template will create and configure resources for a multi availability zone (multi-AZ) stack with the following notable resources:

  • EC2 VPC (AWS::EC2::VPC)
  • EC2 Subnets (see below – multiple subnets for different purposes including Directory Services, Nats, Windows Servers running IIS)
  • EC2 Auto Scaling Group (AWS::AutoScaling::AutoScalingGroup)
  • EC2 Launch Configuration (Windows/IIS) for AutoScalingGroup (AWS::AutoScaling::LaunchConfiguration)
  • EC2 Elastic Load Balancer (AWS::ElasticLoadBalancing::LoadBalancer)
  • Directory Service (AWS::DirectoryService::SimpleAD)
  • Redundant (multi-AZ) Nat Instances (AWS EC2 Linux AMI)
  • Redundant (multi-AZ) Remote Desktop Gateway Servers
  • Slew of VPC Route Tables, VPC Routes, Route Table Associations
  • Slew of VPC Security Groups
  • A few DNS Entries (Route53)
  • but, wait, there’s more!

The Template Output

And all of the above are being created in the Template using about 8 lines of code in the Template definition as shown below.

SampleStackScreenShot-AutoScalingGroupTemplate-Code

Well, that’s great.  What does Bisque AWS output as the json for this stack?  Let’s take a quick look.  First, notice that the CloudFormation template output is over 2800 lines.  Obviously, the Template has most of the components of a CloudFormation template, including Resources, Mappings, Parameters, Outputs and Metadata.  (This template does not use Conditions).

Template-Overview-Collapsed

 

Let’s take a look at some of the “main” Resources.

SampleStackScreenShot-Resources-Collapsed

 

Above, you can see some of the “main” Resources, such as the Vpc, the Nats, Subnets for the Directory Services,  the Directory Service, the Remote Desktop Gateway Servers (RDGW), Elastic IPs for the RDGW servers, WaitConditions for the RDGW installation and configuration, an AutoScalingGroup,  the LaunchConfiguration for the AutoScalingGroup, some Route53 RecordSets (for the RDGW servers and the www server), a LoadBalancer and some more WaitConditions.

Running The Template

So, let’s run this template as a stack in CloudFormation.  Here’s what we get on the parameters page:

 

SampleStackScreenShot-Parameters

When the stack has completed about 54 minutes later (most time consumed by creating the Directory), we have all the resources complete.  Below is a snip of the created resources.  (Update:  retesting this template today yielded completion in about 20 minutes, completion time depends on how the instances are performing at the time of creation).

Resources-Partial.png

Download A Copy Of This Template

If you wish, you can download a copy of this template and run it yourself.  This template should be usable wherever the included resources are available.  Because it uses AWS Directory Service, it will not work in US-West-1 (N. California).  See AWS Directory FAQs for all supported regions.

 

And, at the end of the day, what do you get?  Well, with the parameters we specified, we get an IIS server (actually 2 IIS servers behind an Elastic Load Balancer) as shown below.

IIS-deploy2the.cloud
Default homepage of IIS server participating in the Load Balancer (which has a DNS CName record attached)