solution/automation/finance-industry/modules/ecs-alb-multi-az/main.tf (110 lines of code) (raw):

resource "alicloud_security_group" "group" { name = var.security_group_name description = var.security_group_desc vpc_id = var.vpc_id } resource "alicloud_security_group_rule" "security_group_rule" { count = length(var.security_group_rule) security_group_id = alicloud_security_group.group.id type = var.security_group_rule[count.index].type ip_protocol = var.security_group_rule[count.index].ip_protocol nic_type = var.security_group_rule[count.index].nic_type policy = var.security_group_rule[count.index].policy port_range = var.security_group_rule[count.index].port_range priority = var.security_group_rule[count.index].priority cidr_ip = var.security_group_rule[count.index].cidr_ip } resource "alicloud_instance" "instances" { count = length(var.ecs_instance_deploy_config) resource_group_id = var.resource_group_id security_groups = alicloud_security_group.group.*.id vswitch_id = var.ecs_instance_deploy_config[count.index].vswitch_id instance_name = var.ecs_instance_deploy_config[count.index].instance_name description = var.ecs_instance_deploy_config[count.index].description host_name = var.ecs_instance_deploy_config[count.index].host_name password = var.ecs_instance_password instance_type = var.ecs_instance_spec.instance_type system_disk_category = var.ecs_instance_spec.system_disk_category image_id = var.ecs_instance_spec.image_id instance_charge_type = var.ecs_instance_spec.instance_charge_type period_unit = var.ecs_instance_spec.period_unit period = var.ecs_instance_spec.period internet_max_bandwidth_out = var.ecs_instance_spec.internet_max_bandwidth_out tags = var.ecs_instance_spec.tags volume_tags = var.ecs_instance_spec.volume_tags } resource "alicloud_alb_load_balancer" "default" { resource_group_id = var.resource_group_id vpc_id = var.vpc_id load_balancer_name = var.alb_instance_deploy_config.load_balancer_name address_type = var.alb_instance_spec.address_type address_allocated_mode = var.alb_instance_spec.address_allocated_mode load_balancer_edition = var.alb_instance_spec.load_balancer_edition load_balancer_billing_config { pay_type = "PayAsYouGo" } zone_mappings { vswitch_id = var.alb_instance_deploy_config.vswitch_1_id zone_id = var.alb_instance_deploy_config.zone_1_id } zone_mappings { vswitch_id = var.alb_instance_deploy_config.vswitch_2_id zone_id = var.alb_instance_deploy_config.zone_2_id } modification_protection_config { status = "NonProtection" } tags = var.alb_instance_spec.tags } resource "alicloud_alb_server_group" "default" { vpc_id = var.vpc_id resource_group_id = var.resource_group_id protocol = var.server_group_config.protocol server_group_name = var.server_group_config.server_group_name tags = var.server_group_config.tags health_check_config { health_check_connect_port = var.server_group_config.health_check_connect_port health_check_enabled = var.server_group_config.health_check_enabled health_check_host = "$SERVER_IP" health_check_codes = var.server_group_config.health_check_codes health_check_http_version = var.server_group_config.health_check_http_version health_check_interval = var.server_group_config.health_check_interval health_check_method = var.server_group_config.health_check_method health_check_path = var.server_group_config.health_check_path health_check_protocol = var.server_group_config.health_check_protocol health_check_timeout = var.server_group_config.health_check_timeout healthy_threshold = var.server_group_config.healthy_threshold unhealthy_threshold = var.server_group_config.unhealthy_threshold } sticky_session_config { sticky_session_enabled = var.server_group_config.sticky_session_enabled cookie = var.server_group_config.cookie cookie_timeout = var.server_group_config.cookie_timeout sticky_session_type = var.server_group_config.sticky_session_type } dynamic "servers" { for_each = alicloud_instance.instances content { server_type = "Ecs" server_id = servers.value.id server_ip = servers.value.private_ip description = servers.value.instance_name weight = var.server_group_config.weight port = var.server_group_config.port } } } resource "alicloud_alb_listener" "default" { load_balancer_id = alicloud_alb_load_balancer.default.id listener_protocol = var.server_group_config.protocol listener_port = var.server_group_config.port listener_description = var.alb_listener_description default_actions { type = "ForwardGroup" forward_group_config { server_group_tuples { server_group_id = alicloud_alb_server_group.default.id } } } }