public override void AddToLaunchConfiguration(LaunchConfiguration configuration) { base.AddToLaunchConfiguration(configuration); this.InstallRemoteDesktopGateway(); RecordSet routing = RecordSet.AddByHostedZoneName( this.Instance.Template, $"RecordSet4{this.Instance.LogicalId}", new FnJoin(FnJoinDelimiter.None, new ReferenceProperty(ActiveDirectoryBase.DomainTopLevelParameterName), "."), new FnJoin(FnJoinDelimiter.Period, this.Instance.LogicalId, new ReferenceProperty(ActiveDirectoryBase.DomainFqdnParameterName)), RecordSet.RecordSetTypeEnum.A); var eip = new ElasticIp(this.Instance); this.Instance.Template.Resources.Add(eip.LogicalId, eip); routing.AddResourceRecord(new ReferenceProperty(eip)); routing.TTL = "60"; AddSecurityGroup(); }
private static Template GetTestEnvironmentTemplate(string domain) { Template returnTemplate = new Template(domain, "TestApp1YadayadaSoftwareComVpc", "StackTestApp1YadayadaSoftwareCom", domain.Replace('.', '-'), "10.1.0.0/16"); Vpc vpc = returnTemplate.Vpcs.Last(); Subnet subnetDmz = new Subnet(vpc, "10.0.0.0/24", AvailabilityZone.UsEast1A, true); returnTemplate.Resources.Add("subnetDmz", subnetDmz); Instance instanceWebServer = new Instance(subnetDmz, InstanceTypes.C4Large, StackTest.UsEastWindows2012R2Ami, OperatingSystem.Windows, false); returnTemplate.Resources.Add("instanceWebServer", instanceWebServer); instanceWebServer.Packages.Add(new InternetInformationServerPackage(null, "gtbb", "yadayada_iis")); SecurityGroup securityGroupLoadBalancer = new SecurityGroup("Security Group for ELB", vpc); securityGroupLoadBalancer.AddIngress(PredefinedCidr.TheWorld, Protocol.Tcp, Ports.Ssl); securityGroupLoadBalancer.AddIngress(PredefinedCidr.TheWorld, Protocol.Tcp, Ports.Http); returnTemplate.Resources.Add(securityGroupLoadBalancer.LogicalId, securityGroupLoadBalancer); LoadBalancer loadBalancer = new LoadBalancer(); loadBalancer.HealthCheck.Target = "HTTP:80/healthcheck.htm"; loadBalancer.HealthCheck.HealthyThreshold = 2.ToString(); loadBalancer.HealthCheck.Interval = 300.ToString(); loadBalancer.HealthCheck.Timeout = 10.ToString(); loadBalancer.HealthCheck.UnhealthyThreshold = 10.ToString(); loadBalancer.Subnets.Add(new ReferenceProperty(subnetDmz)); loadBalancer.SecurityGroups.Add(securityGroupLoadBalancer); LoadBalancer.Listener listenerHttps = new LoadBalancer.Listener((int)Ports.Ssl, (int)Ports.Http, "https"); listenerHttps.SSLCertificateId = "arn:aws:acm:us-east-1:570182474766:certificate/ec3dcdfd-cc6d-4af7-8119-290bf134fa4f"; loadBalancer.Instances.Add(new ReferenceProperty(instanceWebServer)); loadBalancer.Listeners.Add(listenerHttps); LoadBalancer.Listener listenerHttp = new LoadBalancer.Listener((int)Ports.Http, (int)Ports.Http, "http"); loadBalancer.Instances.Add(new ReferenceProperty(instanceWebServer)); loadBalancer.Listeners.Add(listenerHttp); returnTemplate.Resources.Add("LoadBalancer", loadBalancer); SecurityGroup securityGroupElbToWebServer = new SecurityGroup("Allows Elb To Web Server", vpc); returnTemplate.Resources.Add(securityGroupElbToWebServer.LogicalId, securityGroupElbToWebServer); securityGroupElbToWebServer.AddIngress(securityGroupLoadBalancer, Protocol.Tcp, Ports.Http); instanceWebServer.SecurityGroupIds.Add(new ReferenceProperty(securityGroupElbToWebServer)); instanceWebServer.AddElasticIp(); SecurityGroup securityGroupRdpFromFairfaxToWebServer = new SecurityGroup("Allows RDP access from Fairfax", vpc); returnTemplate.Resources.Add(securityGroupRdpFromFairfaxToWebServer.LogicalId, securityGroupRdpFromFairfaxToWebServer); securityGroupRdpFromFairfaxToWebServer.AddIngress(new Fairfax(), Protocol.All, Ports.RemoteDesktopProtocol); instanceWebServer.SecurityGroupIds.Add(new ReferenceProperty(securityGroupRdpFromFairfaxToWebServer)); RecordSet recordSetElasticLoadBalancer = RecordSet.AddByHostedZoneName(returnTemplate, $"www.{domain}.".Replace(".", string.Empty), "yadayadasoftware.com.", $"www.{domain}.", RecordSet.RecordSetTypeEnum.CNAME); recordSetElasticLoadBalancer.AddResourceRecord(new FnGetAtt(loadBalancer, FnGetAttAttribute.AwsElasticLoadBalancingLoadBalancer)); loadBalancer.DependsOn.Add(instanceWebServer.Packages.Last().WaitCondition.LogicalId); return(returnTemplate); }