コード例 #1
0
        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();
        }
コード例 #2
0
        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"
            });
        }