victorious-helicopter-18904
04/05/2024, 10:06 AMhallowed-horse-57635
04/05/2024, 2:41 PMvictorious-helicopter-18904
04/06/2024, 4:50 AM(venv) (base) apple@Apples-MacBook-Pro pulumi-demo % pulumi up
Please choose a stack, or create a new one: dev
Previewing update (dev)
View in Browser (Ctrl+O): <https://app.pulumi.com/infa-sasatapathy/pulumi-demo/dev/previews/2d621d1a-5c1a-476d-9578-6b855ac1f0d5>
Type Name Plan
+ pulumi:pulumi:Stack pulumi-demo-dev create
+ ├─ aws:ec2:SecurityGroup webserver-sg create
+ ├─ aws:ec2:SecurityGroupRule AllowSSH create
+ ├─ aws:ec2:SecurityGroupRule AllowHTTP create
+ ├─ aws:ec2:LaunchConfiguration my-launch-configuration create
+ ├─ aws:ec2:SecurityGroupRule AllowALL create
+ ├─ aws:elb:LoadBalancer my-load-balancer create
+ ├─ aws:autoscaling:Group my-auto-scaling-group create
+ ├─ aws:autoscaling:Attachment example create
+ ├─ aws:cloudwatch:MetricAlarm scale-up-alarm create
+ └─ aws:cloudwatch:MetricAlarm scale-down-alarm create
Outputs:
load_balancer_url: output<string>
Resources:
+ 11 to create
Do you want to perform this update? yes
Updating (dev)
View in Browser (Ctrl+O): <https://app.pulumi.com/infa-sasatapathy/pulumi-demo/dev/updates/25>
Type Name Status Info
+ pulumi:pulumi:Stack pulumi-demo-dev **creating failed (20s)** 1 error
+ ├─ aws:ec2:SecurityGroup webserver-sg created (4s)
+ ├─ aws:ec2:SecurityGroupRule AllowSSH created (1s)
+ ├─ aws:ec2:SecurityGroupRule AllowHTTP created (3s)
+ ├─ aws:ec2:LaunchConfiguration my-launch-configuration created (3s)
+ ├─ aws:elb:LoadBalancer my-load-balancer created (9s)
+ ├─ aws:ec2:SecurityGroupRule AllowALL created (4s)
+ └─ aws:autoscaling:Group my-auto-scaling-group **creating failed** 1 error
Diagnostics:
pulumi:pulumi:Stack (pulumi-demo-dev):
error: update failed
aws:autoscaling:Group (my-auto-scaling-group):
error: 1 error occurred:
* creating urn:pulumi:dev::pulumi-demo::aws:autoscaling/group:Group::my-auto-scaling-group: 1 error occurred:
* waiting for Auto Scaling Group (my-auto-scaling-group-a5e1d9f) capacity satisfied: scaling activity (3da63ac6-f6e9-aeb9-54b1-5fe6eae11253): Failed: The security group 'webserver-sg-221e9e9' does not exist in VPC 'vpc-0774602361e27ead0'. Launching EC2 instance failed.
scaling activity (43b63ac6-f6e7-f68e-dd77-9a06e1231fe1): Failed: The security group 'webserver-sg-221e9e9' does not exist in VPC 'vpc-0774602361e27ead0'. Launching EC2 instance failed.
Outputs:
load_balancer_url: "<http://my-load-balancer-ac52a60-1169040298.us-east-1.elb.amazonaws.com|my-load-balancer-ac52a60-1169040298.us-east-1.elb.amazonaws.com>"
Resources:
+ 7 created
Duration: 37s
warning: A new version of Pulumi is available. To upgrade from version '3.111.1' to '3.112.0', run
$ brew update && brew upgrade pulumi
or visit <https://pulumi.com/docs/install/> for manual instructions and release notes.
(venv) (base) apple@Apples-MacBook-Pro pulumi-demo %
victorious-helicopter-18904
04/06/2024, 4:51 AMimport pulumi
import pulumi_aws as aws
from pulumi_aws import ec2
sg = ec2.SecurityGroup('webserver-sg', description="Security Group for web servers")
allow_ssh = ec2.SecurityGroupRule("AllowSSH", type="ingress", from_port=22, to_port=22, protocol="tcp", cidr_blocks=["0.0.0.0/0"], security_group_id=sg.id)
allow_http = ec2.SecurityGroupRule("AllowHTTP", type="ingress", from_port=80, to_port=80, protocol="tcp", cidr_blocks=["0.0.0.0/0"], security_group_id=sg.id)
allow_all = ec2.SecurityGroupRule("AllowALL", type="egress", from_port=0, to_port=0, protocol="-1", cidr_blocks=["0.0.0.0/0"], security_group_id=sg.id)
# create the user data
user_data = """
#!/bin/bash
echo "Hello, world!" > index.html
nohup python -m SimpleHTTPServer 80 &
"""
# Create a classic load balancer
load_balancer = aws.elb.LoadBalancer("my-load-balancer",
availability_zones=["us-east-1a", "us-east-1b", "us-east-1c"],
listeners=[{
"instance_port": 80,
"instance_protocol": "HTTP",
"lb_port": 80,
"lb_protocol": "HTTP"
}],
security_groups=[sg.id]
)
# Create an auto-scaling group
auto_scaling_group = aws.autoscaling.Group("my-auto-scaling-group",
min_size=2,
max_size=5,
launch_configuration=aws.ec2.LaunchConfiguration("my-launch-configuration",
image_id="ami-0c101f26f147fa7fd",
instance_type="t2.micro",
user_data=user_data,
security_groups=[sg.name]
),
availability_zones=["us-east-1a", "us-east-1b", "us-east-1c"],
load_balancers=[load_balancer.name]
)
# Attach the load balancer to the auto-scaling group
attachment = aws.autoscaling.Attachment("example",
autoscaling_group_name=auto_scaling_group.name,
elb=load_balancer.name
)
# Create a CloudWatch metric alarm for scaling up
scale_up_alarm = aws.cloudwatch.MetricAlarm("scale-up-alarm",
alarm_actions=[auto_scaling_group.arn],
comparison_operator="GreaterThanOrEqualToThreshold",
evaluation_periods=1,
metric_name="CPUUtilization",
namespace="AWS/EC2",
period=60,
statistic="Average",
threshold=80,
dimensions={
"AutoScalingGroupName": auto_scaling_group.name
}
)
# Create a CloudWatch metric alarm for scaling down
scale_down_alarm = aws.cloudwatch.MetricAlarm("scale-down-alarm",
alarm_actions=[auto_scaling_group.arn],
comparison_operator="LessThanOrEqualToThreshold",
evaluation_periods=1,
metric_name="CPUUtilization",
namespace="AWS/EC2",
period=60,
statistic="Average",
threshold=30,
dimensions={
"AutoScalingGroupName": auto_scaling_group.name
}
)
# Export the load balancer URL
pulumi.export("load_balancer_url", load_balancer.dns_name)
hallowed-horse-57635
04/06/2024, 6:50 PMvictorious-helicopter-18904
04/08/2024, 7:38 AM