in load_test/load_test_stack.py [0:0]
def create_ec2_cluster(self):
# create a new VPC
vpc = ec2.Vpc(self, "TheVPC",
cidr=self.vpc_cidr
)
# create vpc peering with existing vpc if needed
if self.vpc_to_peer:
self.create_vpc_peering(vpc)
# get subnets to create locust cluster in
if self.deploy_in_public_subnets:
subnets = ec2.SubnetSelection(subnets=vpc.public_subnets)
else:
subnets = ec2.SubnetSelection(subnets=vpc.private_subnets)
# use amazon linux 2
ami = ec2.AmazonLinuxImage(
generation=ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
edition=ec2.AmazonLinuxEdition.STANDARD,
storage=ec2.AmazonLinuxStorage.GENERAL_PURPOSE
)
# create ec2 role
role = iam.Role(self, "MyRole",
assumed_by=iam.ServicePrincipal("ec2.amazonaws.com")
)
# give access to read s3 asset
self.asset_bucket.grant_read(role)
# master user data
master_userdata = self.get_userdata(True)
# master security group
master_sg = ec2.SecurityGroup(self, "MasterSecurityGroup",
vpc=vpc,
allow_all_outbound=True
)
master_sg.add_ingress_rule(ec2.Peer.any_ipv4(), ec2.Port.tcp(80), "allow locust port")
master_sg.add_ingress_rule(ec2.Peer.any_ipv4(), ec2.Port.tcp(22), "allow ssh")
# create master node
self.master = ec2.Instance(self, "Master",
instance_type=self.instancetype,
vpc=vpc,
instance_name="locust-master",
machine_image=ami,
security_group=master_sg,
user_data=master_userdata,
role=role,
vpc_subnets=subnets,
)
# create worker nodes
if self.clustersize > 1:
# worker user data
worker_userdata = self.get_userdata(False)
# worker security group
worker_sg = ec2.SecurityGroup(self, "workerSecurityGroup",
vpc=vpc,
allow_all_outbound=True
)
worker_sg.add_ingress_rule(ec2.Peer.any_ipv4(), ec2.Port.tcp(22), "allow ssh")
master_sg.add_ingress_rule(worker_sg, ec2.Port.tcp(5557), "allow worker connection")
# create workers one by one
for i in range(self.clustersize - 1):
ec2.Instance(self, "worker%s" % i,
instance_type=self.instancetype,
vpc=vpc,
instance_name="locust-worker%s" % i,
machine_image=ami,
security_group=worker_sg,
user_data=worker_userdata,
role=role,
vpc_subnets=subnets,
)