public static void Main(string[] args) { string domainName = "mydomain.aws"; string keyPairName = "inst-key-pair"; var env = new Amazon.CDK.Environment { Region = "eu-west-1" }; var app = new App(); var vpcStack = new VpcStack(app, "VpcStack", new StackProps { Env = env }); var secretStack = new SecretStack(app, "MAD-Secret", passwordObject: new { Domain = domainName, UserID = "Admin" }, secretName: "ManagedAD-Admin-Password", new StackProps { Description = "Managed AD Aut-Generated Password", Env = env }); var madStack = new MadStack(app, "Managed-AD", vpc: vpcStack.Vpc, domainName: domainName, edition: "Standard", secret: secretStack, new StackProps { Env = env }); var dhcpOption = new DHCPOption(app, "VPC-DHCP-Options-with-MAD", directory: madStack.AD, vpc: vpcStack.Vpc, new StackProps { Env = env }); var setDhcpOptionToVpc = new SetDHCPOption(app, "Apply-DHCP-Options", vpc: vpcStack.Vpc, dhcpOption: dhcpOption, new StackProps { Env = env }); var bastionStack = new BastionStack(app, "Bastion-Host", vpc: vpcStack.Vpc, keyPairName, new StackProps { Env = env }); var targetInstanceStack = new TargetInstanceStack(app, "Target-Instance", vpc: vpcStack.Vpc, keyPairName, new StackProps { Env = env }); // Defining the order of the CDK Deployment secretStack.AddDependency(vpcStack); madStack.AddDependency(secretStack); dhcpOption.AddDependency(madStack); setDhcpOptionToVpc.AddDependency(dhcpOption); targetInstanceStack.AddDependency(setDhcpOptionToVpc); bastionStack.AddDependency(targetInstanceStack); app.Synth(); }
internal MadStack(Construct scope, string id, Vpc vpc, string domainName, string edition, SecretStack secret, IStackProps props = null) : base(scope, id, props) { AD = new CfnMicrosoftAD(this, "MAD", new CfnMicrosoftADProps { VpcSettings = new CfnMicrosoftAD.VpcSettingsProperty { SubnetIds = vpc.SelectSubnets(new SubnetSelection { SubnetType = SubnetType.PRIVATE }).SubnetIds, VpcId = vpc.VpcId }, Name = domainName, Password = secret.ClearTextSecret, Edition = edition }); var mad_dns_ip1 = Fn.Select(0, AD.AttrDnsIpAddresses); var mad_dns_ip2 = Fn.Select(1, AD.AttrDnsIpAddresses); new CfnOutput(this, "mad-dns1", new CfnOutputProps { Value = mad_dns_ip1, ExportName = "mad-dns1" }); new CfnOutput(this, "mad-dns2", new CfnOutputProps { Value = mad_dns_ip2, ExportName = "mad-dns2" }); }