-
Notifications
You must be signed in to change notification settings - Fork 1
chore: trigger infrastructure provisioning for api-server module #380
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
🚀 env0 had composed a PR Plan for environment Terraform Example / production : Plan DetailsTerraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create
! update in-place
Terraform will perform the following actions:
# module.api_server.aws_cloudwatch_metric_alarm.high_cpu[0] will be created
+ resource "aws_cloudwatch_metric_alarm" "high_cpu" {
+ actions_enabled = true
+ alarm_actions = (known after apply)
+ alarm_description = "CPU utilization exceeds 80%"
+ alarm_name = (known after apply)
+ arn = (known after apply)
+ comparison_operator = "GreaterThanThreshold"
+ dimensions = (known after apply)
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 2
+ id = (known after apply)
+ metric_name = "CPUUtilization"
+ namespace = "AWS/EC2"
+ ok_actions = (known after apply)
+ period = 300
+ statistic = "Average"
+ tags = (known after apply)
+ tags_all = (known after apply)
+ threshold = 80
+ treat_missing_data = "missing"
}
# module.api_server.aws_cloudwatch_metric_alarm.unhealthy_targets[0] will be created
+ resource "aws_cloudwatch_metric_alarm" "unhealthy_targets" {
+ actions_enabled = true
+ alarm_actions = (known after apply)
+ alarm_description = "Load balancer has unhealthy targets"
+ alarm_name = (known after apply)
+ arn = (known after apply)
+ comparison_operator = "GreaterThanThreshold"
+ dimensions = (known after apply)
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 2
+ id = (known after apply)
+ metric_name = "UnHealthyHostCount"
+ namespace = "AWS/ApplicationELB"
+ ok_actions = (known after apply)
+ period = 60
+ statistic = "Average"
+ tags = (known after apply)
+ tags_all = (known after apply)
+ threshold = 0
+ treat_missing_data = "missing"
}
# module.api_server.aws_iam_instance_profile.api_server[0] will be created
+ resource "aws_iam_instance_profile" "api_server" {
+ arn = (known after apply)
+ create_date = (known after apply)
+ id = (known after apply)
+ name = (known after apply)
+ name_prefix = (known after apply)
+ path = "/"
+ role = (known after apply)
+ tags = (known after apply)
+ tags_all = (known after apply)
+ unique_id = (known after apply)
}
# module.api_server.aws_iam_role.api_server[0] will be created
+ resource "aws_iam_role" "api_server" {
+ arn = (known after apply)
+ assume_role_policy = jsonencode(
{
+ Statement = [
+ {
+ Action = "sts:AssumeRole"
+ Effect = "Allow"
+ Principal = {
+ Service = "ec2.amazonaws.com"
}
},
]
+ Version = "2012-10-17"
}
)
+ create_date = (known after apply)
+ force_detach_policies = false
+ id = (known after apply)
+ managed_policy_arns = (known after apply)
+ max_session_duration = 3600
+ name = (known after apply)
+ name_prefix = (known after apply)
+ path = "/"
+ tags = (known after apply)
+ tags_all = (known after apply)
+ unique_id = (known after apply)
}
# module.api_server.aws_iam_role_policy_attachment.cloudwatch_agent[0] will be created
+ resource "aws_iam_role_policy_attachment" "cloudwatch_agent" {
+ id = (known after apply)
+ policy_arn = "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy"
+ role = (known after apply)
}
# module.api_server.aws_iam_role_policy_attachment.ssm[0] will be created
+ resource "aws_iam_role_policy_attachment" "ssm" {
+ id = (known after apply)
+ policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
+ role = (known after apply)
}
# module.api_server.aws_instance.api_server[0] will be created
+ resource "aws_instance" "api_server" {
+ ami = "ami-02a95139d1d364420"
+ arn = (known after apply)
+ associate_public_ip_address = true
+ availability_zone = (known after apply)
+ cpu_core_count = (known after apply)
+ cpu_threads_per_core = (known after apply)
+ disable_api_stop = (known after apply)
+ disable_api_termination = (known after apply)
+ ebs_optimized = (known after apply)
+ enable_primary_ipv6 = (known after apply)
+ get_password_data = false
+ host_id = (known after apply)
+ host_resource_group_arn = (known after apply)
+ iam_instance_profile = (known after apply)
+ id = (known after apply)
+ instance_initiated_shutdown_behavior = (known after apply)
+ instance_lifecycle = (known after apply)
+ instance_state = (known after apply)
+ instance_type = "c5.large"
+ ipv6_address_count = (known after apply)
+ ipv6_addresses = (known after apply)
+ key_name = (known after apply)
+ monitoring = (known after apply)
+ outpost_arn = (known after apply)
+ password_data = (known after apply)
+ placement_group = (known after apply)
+ placement_partition_number = (known after apply)
+ primary_network_interface_id = (known after apply)
+ private_dns = (known after apply)
+ private_ip = (known after apply)
+ public_dns = (known after apply)
+ public_ip = (known after apply)
+ secondary_private_ips = (known after apply)
+ security_groups = (known after apply)
+ source_dest_check = true
+ spot_instance_request_id = (known after apply)
+ subnet_id = "subnet-0a1b287732e8ad0b7"
+ tags = (known after apply)
+ tags_all = (known after apply)
+ tenancy = (known after apply)
+ user_data = "1ffd9ca91b1b9ea29b17ccb86b019b0e7cfd294b"
+ user_data_base64 = (known after apply)
+ user_data_replace_on_change = false
+ vpc_security_group_ids = (known after apply)
+ root_block_device {
+ delete_on_termination = true
+ device_name = (known after apply)
+ encrypted = (known after apply)
+ iops = (known after apply)
+ kms_key_id = (known after apply)
+ tags = (known after apply)
+ tags_all = (known after apply)
+ throughput = (known after apply)
+ volume_id = (known after apply)
+ volume_size = 8
+ volume_type = "gp3"
}
}
# module.api_server.aws_lb.api[0] will be created
+ resource "aws_lb" "api" {
+ arn = (known after apply)
+ arn_suffix = (known after apply)
+ client_keep_alive = 3600
+ desync_mitigation_mode = "defensive"
+ dns_name = (known after apply)
+ drop_invalid_header_fields = false
+ enable_deletion_protection = false
+ enable_http2 = true
+ enable_tls_version_and_cipher_suite_headers = false
+ enable_waf_fail_open = false
+ enable_xff_client_port = false
+ enable_zonal_shift = false
+ enforce_security_group_inbound_rules_on_private_link_traffic = (known after apply)
+ id = (known after apply)
+ idle_timeout = 60
+ internal = false
+ ip_address_type = (known after apply)
+ load_balancer_type = "application"
+ name = (known after apply)
+ name_prefix = (known after apply)
+ preserve_host_header = false
+ security_groups = (known after apply)
+ subnets = [
+ "subnet-07fc72cf57c70e4f0",
+ "subnet-0a1b287732e8ad0b7",
]
+ tags = (known after apply)
+ tags_all = (known after apply)
+ vpc_id = (known after apply)
+ xff_header_processing_mode = "append"
+ zone_id = (known after apply)
}
# module.api_server.aws_lb_listener.http[0] will be created
+ resource "aws_lb_listener" "http" {
+ arn = (known after apply)
+ id = (known after apply)
+ load_balancer_arn = (known after apply)
+ port = 80
+ protocol = "HTTP"
+ routing_http_request_x_amzn_mtls_clientcert_header_name = (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_issuer_header_name = (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_leaf_header_name = (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_serial_number_header_name = (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_subject_header_name = (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_validity_header_name = (known after apply)
+ routing_http_request_x_amzn_tls_cipher_suite_header_name = (known after apply)
+ routing_http_request_x_amzn_tls_version_header_name = (known after apply)
+ routing_http_response_access_control_allow_credentials_header_value = (known after apply)
+ routing_http_response_access_control_allow_headers_header_value = (known after apply)
+ routing_http_response_access_control_allow_methods_header_value = (known after apply)
+ routing_http_response_access_control_allow_origin_header_value = (known after apply)
+ routing_http_response_access_control_expose_headers_header_value = (known after apply)
+ routing_http_response_access_control_max_age_header_value = (known after apply)
+ routing_http_response_content_security_policy_header_value = (known after apply)
+ routing_http_response_server_enabled = (known after apply)
+ routing_http_response_strict_transport_security_header_value = (known after apply)
+ routing_http_response_x_content_type_options_header_value = (known after apply)
+ routing_http_response_x_frame_options_header_value = (known after apply)
+ ssl_policy = (known after apply)
+ tags = (known after apply)
+ tags_all = (known after apply)
+ tcp_idle_timeout_seconds = (known after apply)
+ default_action {
+ order = (known after apply)
+ target_group_arn = (known after apply)
+ type = "forward"
}
}
# module.api_server.aws_lb_target_group.api[0] will be created
+ resource "aws_lb_target_group" "api" {
+ arn = (known after apply)
+ arn_suffix = (known after apply)
+ connection_termination = (known after apply)
+ deregistration_delay = "30"
+ id = (known after apply)
+ ip_address_type = (known after apply)
+ lambda_multi_value_headers_enabled = false
+ load_balancer_arns = (known after apply)
+ load_balancing_algorithm_type = (known after apply)
+ load_balancing_anomaly_mitigation = (known after apply)
+ load_balancing_cross_zone_enabled = (known after apply)
+ name = (known after apply)
+ name_prefix = (known after apply)
+ port = 80
+ preserve_client_ip = (known after apply)
+ protocol = "HTTP"
+ protocol_version = (known after apply)
+ proxy_protocol_v2 = false
+ slow_start = 0
+ tags = (known after apply)
+ tags_all = (known after apply)
+ target_type = "instance"
+ vpc_id = "vpc-02901bcbb89561298"
+ health_check {
+ enabled = true
+ healthy_threshold = 2
+ interval = 30
+ matcher = "200"
+ path = "/health"
+ port = "traffic-port"
+ protocol = "HTTP"
+ timeout = 5
+ unhealthy_threshold = 3
}
}
# module.api_server.aws_lb_target_group_attachment.api[0] will be created
+ resource "aws_lb_target_group_attachment" "api" {
+ id = (known after apply)
+ port = 80
+ target_group_arn = (known after apply)
+ target_id = (known after apply)
}
# module.api_server.aws_security_group.alb[0] will be created
+ resource "aws_security_group" "alb" {
+ arn = (known after apply)
+ description = "Security group for Application Load Balancer"
+ egress = [
+ {
+ cidr_blocks = [
+ "0.0.0.0/0",
]
+ description = "All outbound"
+ from_port = 0
+ ipv6_cidr_blocks = []
+ prefix_list_ids = []
+ protocol = "-1"
+ security_groups = []
+ self = false
+ to_port = 0
},
]
+ id = (known after apply)
+ ingress = [
+ {
+ cidr_blocks = [
+ "0.0.0.0/0",
]
+ description = "HTTP from internet"
+ from_port = 80
+ ipv6_cidr_blocks = []
+ prefix_list_ids = []
+ protocol = "tcp"
+ security_groups = []
+ self = false
+ to_port = 80
},
]
+ name = (known after apply)
+ name_prefix = (known after apply)
+ owner_id = (known after apply)
+ revoke_rules_on_delete = false
+ tags = (known after apply)
+ tags_all = (known after apply)
+ vpc_id = "vpc-02901bcbb89561298"
}
# module.api_server.aws_security_group.api_server[0] will be created
+ resource "aws_security_group" "api_server" {
+ arn = (known after apply)
+ description = "Security group for API server"
+ egress = [
+ {
+ cidr_blocks = [
+ "0.0.0.0/0",
]
+ description = "All outbound"
+ from_port = 0
+ ipv6_cidr_blocks = []
+ prefix_list_ids = []
+ protocol = "-1"
+ security_groups = []
+ self = false
+ to_port = 0
},
+ {
+ cidr_blocks = []
+ description = "Database access"
+ from_port = 5432
+ ipv6_cidr_blocks = []
+ prefix_list_ids = []
+ protocol = "tcp"
+ security_groups = (known after apply)
+ self = false
+ to_port = 5432
},
]
+ id = (known after apply)
+ ingress = [
+ {
+ cidr_blocks = []
+ description = "HTTP from ALB"
+ from_port = 80
+ ipv6_cidr_blocks = []
+ prefix_list_ids = []
+ protocol = "tcp"
+ security_groups = (known after apply)
+ self = false
+ to_port = 80
},
]
+ name = (known after apply)
+ name_prefix = (known after apply)
+ owner_id = (known after apply)
+ revoke_rules_on_delete = false
+ tags = (known after apply)
+ tags_all = (known after apply)
+ vpc_id = "vpc-02901bcbb89561298"
}
# module.api_server.aws_security_group.database[0] will be created
+ resource "aws_security_group" "database" {
+ arn = (known after apply)
+ description = "Security group for database tier"
+ egress = [
+ {
+ cidr_blocks = [
+ "0.0.0.0/0",
]
+ description = "All outbound"
+ from_port = 0
+ ipv6_cidr_blocks = []
+ prefix_list_ids = []
+ protocol = "-1"
+ security_groups = []
+ self = false
+ to_port = 0
},
]
+ id = (known after apply)
+ ingress = (known after apply)
+ name = (known after apply)
+ name_prefix = (known after apply)
+ owner_id = (known after apply)
+ revoke_rules_on_delete = false
+ tags = (known after apply)
+ tags_all = (known after apply)
+ vpc_id = "vpc-02901bcbb89561298"
}
# module.api_server.aws_security_group_rule.database_from_api[0] will be created
+ resource "aws_security_group_rule" "database_from_api" {
+ description = "PostgreSQL from API servers"
+ from_port = 5432
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 5432
+ type = "ingress"
}
# module.api_server.aws_sns_topic.alerts[0] will be created
+ resource "aws_sns_topic" "alerts" {
+ arn = (known after apply)
+ beginning_archive_time = (known after apply)
+ content_based_deduplication = false
+ fifo_throughput_scope = (known after apply)
+ fifo_topic = false
+ id = (known after apply)
+ name = (known after apply)
+ name_prefix = (known after apply)
+ owner = (known after apply)
+ policy = (known after apply)
+ signature_version = (known after apply)
+ tags = (known after apply)
+ tags_all = (known after apply)
+ tracing_config = (known after apply)
}
# module.api_server.aws_sns_topic_policy.alerts[0] will be created
+ resource "aws_sns_topic_policy" "alerts" {
+ arn = (known after apply)
+ id = (known after apply)
+ owner = (known after apply)
+ policy = (known after apply)
}
# module.api_server.random_id.suffix[0] will be created
+ resource "random_id" "suffix" {
+ b64_std = (known after apply)
+ b64_url = (known after apply)
+ byte_length = 4
+ dec = (known after apply)
+ hex = (known after apply)
+ id = (known after apply)
}
# module.heritage[0].aws_rds_cluster.face_database will be updated in-place
! resource "aws_rds_cluster" "face_database" {
id = "facial-recognition-terraform-example"
tags = {}
# (46 unchanged attributes hidden)
# (1 unchanged block hidden)
}
Plan: 18 to add, 1 to change, 0 to destroy.
Changes to Outputs:
+ api_server_instance_id = (known after apply)
+ api_server_url = (known after apply)Cost Estimation DetailsKey: * usage cost, ~ changed, + added, - removed
──────────────────────────────────
Project: overmindtech/terraform-example/env0_tf_plan.json
+ module.api_server.aws_instance.api_server[0]
+$74
+ Instance usage (Linux/UNIX, on-demand, c5.large)
+$74
+ root_block_device
+ Storage (general purpose SSD, gp3)
+$0.74
+ module.api_server.aws_lb.api[0]
+$19
+ Application load balancer
+$19
+ Load balancer capacity units
Monthly cost depends on usage
+$6.13 per LCU
+ module.api_server.aws_cloudwatch_metric_alarm.high_cpu[0]
+$0.10
+ Standard resolution
+$0.10
+ module.api_server.aws_cloudwatch_metric_alarm.unhealthy_targets[0]
+$0.10
+ Standard resolution
+$0.10
+ module.api_server.aws_sns_topic.alerts[0]
Monthly cost depends on usage
+ API requests (over 1M)
Monthly cost depends on usage
+$0.50 per 1M requests
+ HTTP/HTTPS notifications (over 100k)
Monthly cost depends on usage
+$0.06 per 100k notifications
+ Email/Email-JSON notifications (over 1k)
Monthly cost depends on usage
+$2.00 per 100k notifications
+ Kinesis Firehose notifications
Monthly cost depends on usage
+$0.23 per 1M notifications
+ Mobile Push notifications
Monthly cost depends on usage
+$0.67 per 1M notifications
+ MacOS notifications
Monthly cost depends on usage
+$0.67 per 1M notifications
Monthly cost change for overmindtech/terraform-example/env0_tf_plan.json
Amount: +$94 ($282 → $376)
Percent: +33%
──────────────────────────────────
Key: * usage cost, ~ changed, + added, - removed
*Usage costs can be estimated by updating Infracost Cloud settings, see docs for other options.
137 cloud resources were detected:
∙ 44 were estimated
∙ 91 were free
∙ 2 are not supported yet, see https://infracost.io/requested-resources:
∙ 1 x aws_cloudfront_monitoring_subscription
∙ 1 x aws_cloudwatch_query_definition
Infracost estimate: Monthly estimate increased by $94 ↑
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Changed project ┃ Baseline cost ┃ Usage cost* ┃ Total change ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━━━━━━━━━┫
┃ overmindtech/terraform-example/env0_tf_plan.json ┃ +$94 ┃ - ┃ +$94 (+33%) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━┻━━━━━━━━━━━━━━┛ |
Open in Overmind ↗
🔴 Change SignalsRoutine 🔴 🔥 Risks
🟣 Expected ChangesNote No expected changes found. 🟠 Unmapped Changes+ aws_cloudwatch_metric_alarm › module.api_server.aws_cloudwatch_metric_alarm.high_cpu[0]--- current
+++ proposed
@@ -0,0 +1,29 @@
+type: aws_cloudwatch_metric_alarm
+id: github.com/overmindtech/terraform-example.aws_cloudwatch_metric_alarm.module.api_server.aws_cloudwatch_metric_alarm.high_cpu[0]
+attributes:
+ actions_enabled: true
+ alarm_actions: (known after apply)
+ alarm_description: CPU utilization exceeds 80%
+ alarm_name: (known after apply)
+ arn: (known after apply)
+ comparison_operator: GreaterThanThreshold
+ datapoints_to_alarm: null
+ dimensions: (known after apply)
+ evaluate_low_sample_count_percentiles: (known after apply)
+ evaluation_periods: 2
+ extended_statistic: null
+ id: (known after apply)
+ insufficient_data_actions: null
+ metric_name: CPUUtilization
+ namespace: AWS/EC2
+ ok_actions: (known after apply)
+ period: 300
+ statistic: Average
+ tags: (known after apply)
+ tags_all: (known after apply)
+ terraform_address: module.api_server.aws_cloudwatch_metric_alarm.high_cpu[0]
+ terraform_name: module.api_server.aws_cloudwatch_metric_alarm.high_cpu[0]
+ threshold: 80
+ threshold_metric_id: null
+ treat_missing_data: missing
+ unit: null
+ aws_cloudwatch_metric_alarm › module.api_server.aws_cloudwatch_metric_alarm.unhealthy_targets[0]--- current
+++ proposed
@@ -0,0 +1,29 @@
+type: aws_cloudwatch_metric_alarm
+id: github.com/overmindtech/terraform-example.aws_cloudwatch_metric_alarm.module.api_server.aws_cloudwatch_metric_alarm.unhealthy_targets[0]
+attributes:
+ actions_enabled: true
+ alarm_actions: (known after apply)
+ alarm_description: Load balancer has unhealthy targets
+ alarm_name: (known after apply)
+ arn: (known after apply)
+ comparison_operator: GreaterThanThreshold
+ datapoints_to_alarm: null
+ dimensions: (known after apply)
+ evaluate_low_sample_count_percentiles: (known after apply)
+ evaluation_periods: 2
+ extended_statistic: null
+ id: (known after apply)
+ insufficient_data_actions: null
+ metric_name: UnHealthyHostCount
+ namespace: AWS/ApplicationELB
+ ok_actions: (known after apply)
+ period: 60
+ statistic: Average
+ tags: (known after apply)
+ tags_all: (known after apply)
+ terraform_address: module.api_server.aws_cloudwatch_metric_alarm.unhealthy_targets[0]
+ terraform_name: module.api_server.aws_cloudwatch_metric_alarm.unhealthy_targets[0]
+ threshold: 0
+ threshold_metric_id: null
+ treat_missing_data: missing
+ unit: null
+ aws_iam_instance_profile › module.api_server.aws_iam_instance_profile.api_server[0]--- current
+++ proposed
@@ -0,0 +1,15 @@
+type: aws_iam_instance_profile
+id: github.com/overmindtech/terraform-example.aws_iam_instance_profile.module.api_server.aws_iam_instance_profile.api_server[0]
+attributes:
+ arn: (known after apply)
+ create_date: (known after apply)
+ id: (known after apply)
+ name: (known after apply)
+ name_prefix: (known after apply)
+ path: /
+ role: (known after apply)
+ tags: (known after apply)
+ tags_all: (known after apply)
+ terraform_address: module.api_server.aws_iam_instance_profile.api_server[0]
+ terraform_name: module.api_server.aws_iam_instance_profile.api_server[0]
+ unique_id: (known after apply)
+ aws_iam_role › module.api_server.aws_iam_role.api_server[0]--- current
+++ proposed
@@ -0,0 +1,21 @@
+type: aws_iam_role
+id: github.com/overmindtech/terraform-example.aws_iam_role.module.api_server.aws_iam_role.api_server[0]
+attributes:
+ arn: (known after apply)
+ assume_role_policy: '{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"ec2.amazonaws.com"}}],"Version":"2012-10-17"}'
+ create_date: (known after apply)
+ description: null
+ force_detach_policies: false
+ id: (known after apply)
+ inline_policy: (known after apply)
+ managed_policy_arns: (known after apply)
+ max_session_duration: 3600
+ name: (known after apply)
+ name_prefix: (known after apply)
+ path: /
+ permissions_boundary: null
+ tags: (known after apply)
+ tags_all: (known after apply)
+ terraform_address: module.api_server.aws_iam_role.api_server[0]
+ terraform_name: module.api_server.aws_iam_role.api_server[0]
+ unique_id: (known after apply)
+ aws_iam_role_policy_attachment › module.api_server.aws_iam_role_policy_attachment.cloudwatch_agent[0]--- current
+++ proposed
@@ -0,0 +1,8 @@
+type: aws_iam_role_policy_attachment
+id: github.com/overmindtech/terraform-example.aws_iam_role_policy_attachment.module.api_server.aws_iam_role_policy_attachment.cloudwatch_agent[0]
+attributes:
+ id: (known after apply)
+ policy_arn: arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
+ role: (known after apply)
+ terraform_address: module.api_server.aws_iam_role_policy_attachment.cloudwatch_agent[0]
+ terraform_name: module.api_server.aws_iam_role_policy_attachment.cloudwatch_agent[0]
+ aws_iam_role_policy_attachment › module.api_server.aws_iam_role_policy_attachment.ssm[0]--- current
+++ proposed
@@ -0,0 +1,8 @@
+type: aws_iam_role_policy_attachment
+id: github.com/overmindtech/terraform-example.aws_iam_role_policy_attachment.module.api_server.aws_iam_role_policy_attachment.ssm[0]
+attributes:
+ id: (known after apply)
+ policy_arn: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
+ role: (known after apply)
+ terraform_address: module.api_server.aws_iam_role_policy_attachment.ssm[0]
+ terraform_name: module.api_server.aws_iam_role_policy_attachment.ssm[0]
+ aws_instance › module.api_server.aws_instance.api_server[0]--- current
+++ proposed
@@ -0,0 +1,74 @@
+type: aws_instance
+id: github.com/overmindtech/terraform-example.aws_instance.module.api_server.aws_instance.api_server[0]
+attributes:
+ ami: ami-02a95139d1d364420
+ arn: (known after apply)
+ associate_public_ip_address: true
+ availability_zone: (known after apply)
+ capacity_reservation_specification: (known after apply)
+ cpu_core_count: (known after apply)
+ cpu_options: (known after apply)
+ cpu_threads_per_core: (known after apply)
+ disable_api_stop: (known after apply)
+ disable_api_termination: (known after apply)
+ ebs_block_device: (known after apply)
+ ebs_optimized: (known after apply)
+ enable_primary_ipv6: (known after apply)
+ enclave_options: (known after apply)
+ ephemeral_block_device: (known after apply)
+ get_password_data: false
+ hibernation: null
+ host_id: (known after apply)
+ host_resource_group_arn: (known after apply)
+ iam_instance_profile: (known after apply)
+ id: (known after apply)
+ instance_initiated_shutdown_behavior: (known after apply)
+ instance_lifecycle: (known after apply)
+ instance_market_options: (known after apply)
+ instance_state: (known after apply)
+ instance_type: c5.large
+ ipv6_address_count: (known after apply)
+ ipv6_addresses: (known after apply)
+ key_name: (known after apply)
+ maintenance_options: (known after apply)
+ metadata_options: (known after apply)
+ monitoring: (known after apply)
+ network_interface: (known after apply)
+ outpost_arn: (known after apply)
+ password_data: (known after apply)
+ placement_group: (known after apply)
+ placement_partition_number: (known after apply)
+ primary_network_interface_id: (known after apply)
+ private_dns: (known after apply)
+ private_dns_name_options: (known after apply)
+ private_ip: (known after apply)
+ public_dns: (known after apply)
+ public_ip: (known after apply)
+ root_block_device:
+ - delete_on_termination: true
+ device_name: (known after apply)
+ encrypted: (known after apply)
+ iops: (known after apply)
+ kms_key_id: (known after apply)
+ tags: (known after apply)
+ tags_all: (known after apply)
+ throughput: (known after apply)
+ volume_id: (known after apply)
+ volume_size: 8
+ volume_type: gp3
+ secondary_private_ips: (known after apply)
+ security_groups: (known after apply)
+ source_dest_check: true
+ spot_instance_request_id: (known after apply)
+ subnet_id: subnet-0a1b287732e8ad0b7
+ tags: (known after apply)
+ tags_all: (known after apply)
+ tenancy: (known after apply)
+ terraform_address: module.api_server.aws_instance.api_server[0]
+ terraform_name: module.api_server.aws_instance.api_server[0]
+ timeouts: null
+ user_data: 1ffd9ca91b1b9ea29b17ccb86b019b0e7cfd294b
+ user_data_base64: (known after apply)
+ user_data_replace_on_change: false
+ volume_tags: null
+ vpc_security_group_ids: (known after apply)
+ aws_lb › module.api_server.aws_lb.api[0]--- current
+++ proposed
@@ -0,0 +1,40 @@
+type: aws_lb
+id: github.com/overmindtech/terraform-example.aws_lb.module.api_server.aws_lb.api[0]
+attributes:
+ arn: (known after apply)
+ arn_suffix: (known after apply)
+ client_keep_alive: 3600
+ customer_owned_ipv4_pool: null
+ desync_mitigation_mode: defensive
+ dns_name: (known after apply)
+ dns_record_client_routing_policy: null
+ drop_invalid_header_fields: false
+ enable_cross_zone_load_balancing: null
+ enable_deletion_protection: false
+ enable_http2: true
+ enable_tls_version_and_cipher_suite_headers: false
+ enable_waf_fail_open: false
+ enable_xff_client_port: false
+ enable_zonal_shift: false
+ enforce_security_group_inbound_rules_on_private_link_traffic: (known after apply)
+ id: (known after apply)
+ idle_timeout: 60
+ internal: false
+ ip_address_type: (known after apply)
+ load_balancer_type: application
+ name: (known after apply)
+ name_prefix: (known after apply)
+ preserve_host_header: false
+ security_groups: (known after apply)
+ subnet_mapping: (known after apply)
+ subnets:
+ - subnet-07fc72cf57c70e4f0
+ - subnet-0a1b287732e8ad0b7
+ tags: (known after apply)
+ tags_all: (known after apply)
+ terraform_address: module.api_server.aws_lb.api[0]
+ terraform_name: module.api_server.aws_lb.api[0]
+ timeouts: null
+ vpc_id: (known after apply)
+ xff_header_processing_mode: append
+ zone_id: (known after apply)
+ aws_lb_listener › module.api_server.aws_lb_listener.http[0]--- current
+++ proposed
@@ -0,0 +1,41 @@
+type: aws_lb_listener
+id: github.com/overmindtech/terraform-example.aws_lb_listener.module.api_server.aws_lb_listener.http[0]
+attributes:
+ alpn_policy: null
+ arn: (known after apply)
+ certificate_arn: null
+ default_action:
+ - order: (known after apply)
+ target_group_arn: (known after apply)
+ type: forward
+ id: (known after apply)
+ load_balancer_arn: (known after apply)
+ mutual_authentication: (known after apply)
+ port: 80
+ protocol: HTTP
+ routing_http_request_x_amzn_mtls_clientcert_header_name: (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_issuer_header_name: (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_leaf_header_name: (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_serial_number_header_name: (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_subject_header_name: (known after apply)
+ routing_http_request_x_amzn_mtls_clientcert_validity_header_name: (known after apply)
+ routing_http_request_x_amzn_tls_cipher_suite_header_name: (known after apply)
+ routing_http_request_x_amzn_tls_version_header_name: (known after apply)
+ routing_http_response_access_control_allow_credentials_header_value: (known after apply)
+ routing_http_response_access_control_allow_headers_header_value: (known after apply)
+ routing_http_response_access_control_allow_methods_header_value: (known after apply)
+ routing_http_response_access_control_allow_origin_header_value: (known after apply)
+ routing_http_response_access_control_expose_headers_header_value: (known after apply)
+ routing_http_response_access_control_max_age_header_value: (known after apply)
+ routing_http_response_content_security_policy_header_value: (known after apply)
+ routing_http_response_server_enabled: (known after apply)
+ routing_http_response_strict_transport_security_header_value: (known after apply)
+ routing_http_response_x_content_type_options_header_value: (known after apply)
+ routing_http_response_x_frame_options_header_value: (known after apply)
+ ssl_policy: (known after apply)
+ tags: (known after apply)
+ tags_all: (known after apply)
+ tcp_idle_timeout_seconds: (known after apply)
+ terraform_address: module.api_server.aws_lb_listener.http[0]
+ terraform_name: module.api_server.aws_lb_listener.http[0]
+ timeouts: null
+ aws_lb_target_group › module.api_server.aws_lb_target_group.api[0]--- current
+++ proposed
@@ -0,0 +1,42 @@
+type: aws_lb_target_group
+id: github.com/overmindtech/terraform-example.aws_lb_target_group.module.api_server.aws_lb_target_group.api[0]
+attributes:
+ arn: (known after apply)
+ arn_suffix: (known after apply)
+ connection_termination: (known after apply)
+ deregistration_delay: "30"
+ health_check:
+ - enabled: true
+ healthy_threshold: 2
+ interval: 30
+ matcher: "200"
+ path: /health
+ port: traffic-port
+ protocol: HTTP
+ timeout: 5
+ unhealthy_threshold: 3
+ id: (known after apply)
+ ip_address_type: (known after apply)
+ lambda_multi_value_headers_enabled: false
+ load_balancer_arns: (known after apply)
+ load_balancing_algorithm_type: (known after apply)
+ load_balancing_anomaly_mitigation: (known after apply)
+ load_balancing_cross_zone_enabled: (known after apply)
+ name: (known after apply)
+ name_prefix: (known after apply)
+ port: 80
+ preserve_client_ip: (known after apply)
+ protocol: HTTP
+ protocol_version: (known after apply)
+ proxy_protocol_v2: false
+ slow_start: 0
+ stickiness: (known after apply)
+ tags: (known after apply)
+ tags_all: (known after apply)
+ target_failover: (known after apply)
+ target_group_health: (known after apply)
+ target_health_state: (known after apply)
+ target_type: instance
+ terraform_address: module.api_server.aws_lb_target_group.api[0]
+ terraform_name: module.api_server.aws_lb_target_group.api[0]
+ vpc_id: vpc-02901bcbb89561298
+ aws_lb_target_group_attachment › module.api_server.aws_lb_target_group_attachment.api[0]--- current
+++ proposed
@@ -0,0 +1,10 @@
+type: aws_lb_target_group_attachment
+id: github.com/overmindtech/terraform-example.aws_lb_target_group_attachment.module.api_server.aws_lb_target_group_attachment.api[0]
+attributes:
+ availability_zone: null
+ id: (known after apply)
+ port: 80
+ target_group_arn: (known after apply)
+ target_id: (known after apply)
+ terraform_address: module.api_server.aws_lb_target_group_attachment.api[0]
+ terraform_name: module.api_server.aws_lb_target_group_attachment.api[0]
+ aws_security_group › module.api_server.aws_security_group.alb[0]--- current
+++ proposed
@@ -0,0 +1,32 @@
+type: aws_security_group
+id: github.com/overmindtech/terraform-example.aws_security_group.module.api_server.aws_security_group.alb[0]
+attributes:
+ arn: (known after apply)
+ description: Security group for Application Load Balancer
+ egress:
+ - cidr_blocks:
+ - 0.0.0.0/0
+ description: All outbound
+ from_port: 0
+ protocol: "-1"
+ self: false
+ to_port: 0
+ id: (known after apply)
+ ingress:
+ - cidr_blocks:
+ - 0.0.0.0/0
+ description: HTTP from internet
+ from_port: 80
+ protocol: tcp
+ self: false
+ to_port: 80
+ name: (known after apply)
+ name_prefix: (known after apply)
+ owner_id: (known after apply)
+ revoke_rules_on_delete: false
+ tags: (known after apply)
+ tags_all: (known after apply)
+ terraform_address: module.api_server.aws_security_group.alb[0]
+ terraform_name: module.api_server.aws_security_group.alb[0]
+ timeouts: null
+ vpc_id: vpc-02901bcbb89561298
+ aws_security_group › module.api_server.aws_security_group.api_server[0]--- current
+++ proposed
@@ -0,0 +1,37 @@
+type: aws_security_group
+id: github.com/overmindtech/terraform-example.aws_security_group.module.api_server.aws_security_group.api_server[0]
+attributes:
+ arn: (known after apply)
+ description: Security group for API server
+ egress:
+ - cidr_blocks:
+ - 0.0.0.0/0
+ description: All outbound
+ from_port: 0
+ protocol: "-1"
+ self: false
+ to_port: 0
+ - description: Database access
+ from_port: 5432
+ protocol: tcp
+ security_groups: (known after apply)
+ self: false
+ to_port: 5432
+ id: (known after apply)
+ ingress:
+ - description: HTTP from ALB
+ from_port: 80
+ protocol: tcp
+ security_groups: (known after apply)
+ self: false
+ to_port: 80
+ name: (known after apply)
+ name_prefix: (known after apply)
+ owner_id: (known after apply)
+ revoke_rules_on_delete: false
+ tags: (known after apply)
+ tags_all: (known after apply)
+ terraform_address: module.api_server.aws_security_group.api_server[0]
+ terraform_name: module.api_server.aws_security_group.api_server[0]
+ timeouts: null
+ vpc_id: vpc-02901bcbb89561298
+ aws_security_group › module.api_server.aws_security_group.database[0]--- current
+++ proposed
@@ -0,0 +1,25 @@
+type: aws_security_group
+id: github.com/overmindtech/terraform-example.aws_security_group.module.api_server.aws_security_group.database[0]
+attributes:
+ arn: (known after apply)
+ description: Security group for database tier
+ egress:
+ - cidr_blocks:
+ - 0.0.0.0/0
+ description: All outbound
+ from_port: 0
+ protocol: "-1"
+ self: false
+ to_port: 0
+ id: (known after apply)
+ ingress: (known after apply)
+ name: (known after apply)
+ name_prefix: (known after apply)
+ owner_id: (known after apply)
+ revoke_rules_on_delete: false
+ tags: (known after apply)
+ tags_all: (known after apply)
+ terraform_address: module.api_server.aws_security_group.database[0]
+ terraform_name: module.api_server.aws_security_group.database[0]
+ timeouts: null
+ vpc_id: vpc-02901bcbb89561298
+ aws_security_group_rule › module.api_server.aws_security_group_rule.database_from_api[0]--- current
+++ proposed
@@ -0,0 +1,19 @@
+type: aws_security_group_rule
+id: github.com/overmindtech/terraform-example.aws_security_group_rule.module.api_server.aws_security_group_rule.database_from_api[0]
+attributes:
+ cidr_blocks: null
+ description: PostgreSQL from API servers
+ from_port: 5432
+ id: (known after apply)
+ ipv6_cidr_blocks: null
+ prefix_list_ids: null
+ protocol: tcp
+ security_group_id: (known after apply)
+ security_group_rule_id: (known after apply)
+ self: false
+ source_security_group_id: (known after apply)
+ terraform_address: module.api_server.aws_security_group_rule.database_from_api[0]
+ terraform_name: module.api_server.aws_security_group_rule.database_from_api[0]
+ timeouts: null
+ to_port: 5432
+ type: ingress
+ aws_sns_topic › module.api_server.aws_sns_topic.alerts[0]--- current
+++ proposed
@@ -0,0 +1,38 @@
+type: aws_sns_topic
+id: github.com/overmindtech/terraform-example.aws_sns_topic.module.api_server.aws_sns_topic.alerts[0]
+attributes:
+ application_failure_feedback_role_arn: null
+ application_success_feedback_role_arn: null
+ application_success_feedback_sample_rate: null
+ archive_policy: null
+ arn: (known after apply)
+ beginning_archive_time: (known after apply)
+ content_based_deduplication: false
+ delivery_policy: null
+ display_name: null
+ fifo_throughput_scope: (known after apply)
+ fifo_topic: false
+ firehose_failure_feedback_role_arn: null
+ firehose_success_feedback_role_arn: null
+ firehose_success_feedback_sample_rate: null
+ http_failure_feedback_role_arn: null
+ http_success_feedback_role_arn: null
+ http_success_feedback_sample_rate: null
+ id: (known after apply)
+ kms_master_key_id: null
+ lambda_failure_feedback_role_arn: null
+ lambda_success_feedback_role_arn: null
+ lambda_success_feedback_sample_rate: null
+ name: (known after apply)
+ name_prefix: (known after apply)
+ owner: (known after apply)
+ policy: (known after apply)
+ signature_version: (known after apply)
+ sqs_failure_feedback_role_arn: null
+ sqs_success_feedback_role_arn: null
+ sqs_success_feedback_sample_rate: null
+ tags: (known after apply)
+ tags_all: (known after apply)
+ terraform_address: module.api_server.aws_sns_topic.alerts[0]
+ terraform_name: module.api_server.aws_sns_topic.alerts[0]
+ tracing_config: (known after apply)
+ aws_sns_topic_policy › module.api_server.aws_sns_topic_policy.alerts[0]--- current
+++ proposed
@@ -0,0 +1,9 @@
+type: aws_sns_topic_policy
+id: github.com/overmindtech/terraform-example.aws_sns_topic_policy.module.api_server.aws_sns_topic_policy.alerts[0]
+attributes:
+ arn: (known after apply)
+ id: (known after apply)
+ owner: (known after apply)
+ policy: (known after apply)
+ terraform_address: module.api_server.aws_sns_topic_policy.alerts[0]
+ terraform_name: module.api_server.aws_sns_topic_policy.alerts[0]
+ random_id › module.api_server.random_id.suffix[0]--- current
+++ proposed
@@ -0,0 +1,13 @@
+type: random_id
+id: github.com/overmindtech/terraform-example.random_id.module.api_server.random_id.suffix[0]
+attributes:
+ b64_std: (known after apply)
+ b64_url: (known after apply)
+ byte_length: 4
+ dec: (known after apply)
+ hex: (known after apply)
+ id: (known after apply)
+ keepers: null
+ prefix: null
+ terraform_address: module.api_server.random_id.suffix[0]
+ terraform_name: module.api_server.random_id.suffix[0]
💥 Blast RadiusItems Edges |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
⛔ Auto-Blocked
🔴 Decision
Auto-blocked: Routine score (-5) is below minimum (-1)
📊 Signals Summary
Routine 🔴 -5
🔥 Risks Summary
High 0 · Medium 0 · Low 0
chore: trigger infrastructure provisioning for api-server module


this will actually provision the new demo infrastructure