in app.py [0:0]
def __init__(self, scope: Construct, id: builtins.str, vpc:ec2.IVpc, data_stores:DataStoresConstruct) -> None:
super().__init__(scope, id)
'''
Tag all resources to auto-join Managed AD domain.
'''
cdk.Tags.of(self).add('domain',DIRECTORY_SHORTNAME)
'''
Define the role
'''
self.role = iam.Role(self,'Role',
assumed_by= iam.ServicePrincipal(
service='ec2',
region= cdk.Aws.REGION),
managed_policies=[
iam.ManagedPolicy.from_aws_managed_policy_name('AmazonSSMManagedInstanceCore'),
iam.ManagedPolicy.from_aws_managed_policy_name('AmazonSSMDirectoryServiceAccess'),
])
'''
Define Security Group for the instances
'''
self.security_group = ec2.SecurityGroup(self,'SecurityGroup',
vpc=vpc,
allow_all_outbound=True,
description='Security Group for the AppServersConstruct')
for port, name in [(22,'ssh'), (3389,'rdp')]:
self.security_group.add_ingress_rule(
peer=ec2.Peer.ipv4(vpc.vpc_cidr_block),
connection = ec2.Port.tcp(port),
description='Allow incoming for %s protocol' % name)
'''
Create the Windows Server
'''
win_ami_param = ssm.StringParameter.value_for_string_parameter(self,
parameter_name="/aws/service/ami-windows-latest/EC2LaunchV2-Windows_Server-2016-English-Full-Base")
self.windows_server = ec2.Instance(self,'WindowsServer',
role=self.role,
vpc=vpc,
security_group= self.security_group,
machine_image= ec2.MachineImage.generic_windows(
ami_map={
cdk.Stack.of(self).region: win_ami_param,
}
),
vpc_subnets= ec2.SubnetSelection(subnet_group_name='Public'),
instance_type= ec2.InstanceType.of(
instance_class= ec2.InstanceClass.BURSTABLE3,
instance_size=ec2.InstanceSize.SMALL),
allow_all_outbound=True,
user_data_causes_replacement=True)
'''
Create the Linux Server
'''
linux_ami_param = ssm.StringParameter.value_for_string_parameter(self,
parameter_name="/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2")
self.linux_server = ec2.Instance(self,'LinuxServer',
role=self.role,
vpc=vpc,
security_group= self.security_group,
machine_image= ec2.MachineImage.generic_windows(
ami_map={
cdk.Stack.of(self).region:linux_ami_param,
}
),
vpc_subnets= ec2.SubnetSelection(subnet_group_name='Public'),
instance_type= ec2.InstanceType.of(
instance_class= ec2.InstanceClass.BURSTABLE3,
instance_size=ec2.InstanceSize.SMALL),
allow_all_outbound=True,
user_data_causes_replacement=True)
cdk.Tags.of(self.linux_server).add('domain',DIRECTORY_SHORTNAME)