68 lines
1.5 KiB
Python
68 lines
1.5 KiB
Python
import pulumi
|
|
import pulumi_aws as aws
|
|
|
|
from .common import instance_assume_role_policy
|
|
from .default_vpc import subnets
|
|
|
|
|
|
iam_role = aws.iam.Role(
|
|
'ecs-ec2-instance-role',
|
|
assume_role_policy=instance_assume_role_policy.json,
|
|
managed_policy_arns=[
|
|
aws.iam.get_policy(name='AmazonEC2ContainerServiceforEC2Role').arn,
|
|
],
|
|
)
|
|
|
|
instance_profile = aws.iam.InstanceProfile(
|
|
'ecs-ec2-instance-profile',
|
|
role=iam_role.name,
|
|
)
|
|
|
|
svc_linked_role = aws.iam.ServiceLinkedRole(
|
|
'ecs',
|
|
aws_service_name='ecs.amazonaws.com',
|
|
)
|
|
|
|
cluster = aws.ecs.Cluster(
|
|
'default',
|
|
name='default',
|
|
)
|
|
|
|
ami = aws.ec2.get_ami(
|
|
most_recent=True,
|
|
owners=['amazon'],
|
|
filters=[
|
|
aws.ec2.GetAmiFilterArgs(name='name', values=['al2023-ami-ecs-hvm-*']),
|
|
aws.ec2.GetAmiFilterArgs(name='architecture', values=['arm64']),
|
|
],
|
|
)
|
|
|
|
launch_tmpl = aws.ec2.LaunchTemplate(
|
|
'ecs-default',
|
|
image_id=ami.id,
|
|
instance_type='t4g.nano',
|
|
key_name='dustin@rosalina',
|
|
iam_instance_profile={'arn': instance_profile.arn},
|
|
)
|
|
|
|
asg = aws.autoscaling.Group(
|
|
'ecs-default',
|
|
max_size=1,
|
|
min_size=1,
|
|
vpc_zone_identifiers=[subnets.ids[0]],
|
|
launch_template=aws.autoscaling.GroupLaunchTemplateArgs(
|
|
id=launch_tmpl.id,
|
|
version=launch_tmpl.latest_version.apply(str),
|
|
),
|
|
instance_refresh=aws.autoscaling.GroupInstanceRefreshArgs(
|
|
strategy='Rolling',
|
|
),
|
|
tags=[
|
|
{
|
|
'key': 'AmazonECSManaged',
|
|
'value': 'true',
|
|
'propagate_at_launch': True,
|
|
}
|
|
],
|
|
)
|