in base_host_group/host_group.py [0:0]
def __init__(self, scope: core.Construct, cid: str,
component: str,
network: GenericNetwork,
security: GenericSecurity,
workload_key: _kms.Key,
ops_key: KeyPair = None,
vpc_subnets: _ec2.SubnetSelection = None,
ami_id: str = None,
private_ip: str = None,
**kwargs):
super().__init__(scope, cid, **kwargs)
self.instance_id = ""
self._workload_key = workload_key
sec_group = security.get_security_group(component + "SG")
if not sec_group:
sec_group = security.create_security_group(component + "SG")
endpt_sg = security.get_security_group("VPCEndpointSG")
endpt_sg.connections.allow_from(
sec_group,
port_range=_ec2.Port(
protocol=_ec2.Protocol.TCP,
string_representation=component + " -> Endpoint (443)",
from_port=443,
to_port=443
),
description="VPC Endpoint Ingress rule from " + component
)
sec_group.connections.allow_to(
endpt_sg,
port_range=_ec2.Port(
protocol=_ec2.Protocol.TCP,
string_representation=component + " -> Endpoint (443)",
from_port=443,
to_port=443
),
description="Egress rule to VPC Endpoint for " + component
)
instance_type = _ec2.InstanceType.of(instance_class=_ec2.InstanceClass.STANDARD5,
instance_size=_ec2.InstanceSize.XLARGE)
key_name = None
if ops_key is not None:
key_name = ops_key.key_pair_name
if vpc_subnets is None:
vpc_subnets = _ec2.SubnetSelection(subnet_group_name=component)
user_data = None
if ami_id is None:
machine_image = _ec2.MachineImage.lookup(
name="RHEL-8.3.0_HVM-????????-x86_64-0-Hourly2-GP2", owners=["309956199498"])
user_data = _ec2.UserData.for_linux()
for line in get_user_data(self.region, self.node.try_get_context("qs_s3_bucket")):
user_data.add_commands(line)
else:
machine_image = _ec2.MachineImage.lookup(name="*", filters={"image-id": [ami_id]})
instance_role = security.get_instance_role(component)
if not instance_role:
instance_role = security.create_instance_role(component)
# noinspection PyTypeChecker
self.instance = _ec2.Instance(self, cid, instance_type=instance_type,
machine_image=machine_image,
block_devices=[_ec2.BlockDevice(
device_name="/dev/sda1",
volume=_ec2.BlockDeviceVolume.ebs(
volume_size=100, encrypted=True))],
vpc=network.get_vpc(),
role=instance_role, security_group=sec_group,
vpc_subnets=vpc_subnets, key_name=key_name,
private_ip_address=private_ip, user_data=user_data)
self.instance_id = self.instance.instance_id