alicloud_slb_rule
Provides a Lindorm Instance resource.
For information about Load Balancer Forwarding Rule and how to use it, see What is Rule.
-> NOTE: Available since v1.6.0.
A forwarding rule is configured in HTTP
/HTTPS
listener and it used to listen a list of backend servers which in one specified virtual backend server group.
You can add forwarding rules to a listener to forward requests based on the domain names or the URL in the request.
-> NOTE: One virtual backend server group can be attached in multiple forwarding rules.
-> NOTE: At least one "Domain" or "Url" must be specified when creating a new rule.
-> NOTE: Having the same 'Domain' and 'Url' rule can not be created repeatedly in the one listener.
-> NOTE: Rule only be created in the HTTP
or HTTPS
listener.
-> NOTE: Only rule's virtual server group can be modified.
Example Usage
variable "slb_rule_name" {
default = "terraform-example"
}
data "alicloud_zones" "rule" {
available_disk_category = "cloud_efficiency"
available_resource_creation = "VSwitch"
}
data "alicloud_instance_types" "rule" {
availability_zone = data.alicloud_zones.rule.zones[0].id
cpu_core_count = 1
memory_size = 2
}
data "alicloud_images" "rule" {
name_regex = "^ubuntu_18.*64"
most_recent = true
owners = "system"
}
resource "alicloud_vpc" "rule" {
vpc_name = var.slb_rule_name
cidr_block = "172.16.0.0/16"
}
resource "alicloud_vswitch" "rule" {
vpc_id = alicloud_vpc.rule.id
cidr_block = "172.16.0.0/16"
zone_id = data.alicloud_zones.rule.zones[0].id
vswitch_name = var.slb_rule_name
}
resource "alicloud_security_group" "rule" {
name = var.slb_rule_name
vpc_id = alicloud_vpc.rule.id
}
resource "alicloud_instance" "rule" {
image_id = data.alicloud_images.rule.images[0].id
instance_type = data.alicloud_instance_types.rule.instance_types[0].id
security_groups = alicloud_security_group.rule.*.id
internet_charge_type = "PayByTraffic"
internet_max_bandwidth_out = "10"
availability_zone = data.alicloud_zones.rule.zones[0].id
instance_charge_type = "PostPaid"
system_disk_category = "cloud_efficiency"
vswitch_id = alicloud_vswitch.rule.id
instance_name = var.slb_rule_name
}
resource "alicloud_slb_load_balancer" "rule" {
load_balancer_name = var.slb_rule_name
vswitch_id = alicloud_vswitch.rule.id
instance_charge_type = "PayByCLCU"
}
resource "alicloud_slb_listener" "rule" {
load_balancer_id = alicloud_slb_load_balancer.rule.id
backend_port = 22
frontend_port = 22
protocol = "http"
bandwidth = 5
health_check_connect_port = "20"
}
resource "alicloud_slb_server_group" "rule" {
load_balancer_id = alicloud_slb_load_balancer.rule.id
name = var.slb_rule_name
}
resource "alicloud_slb_rule" "rule" {
load_balancer_id = alicloud_slb_load_balancer.rule.id
frontend_port = alicloud_slb_listener.rule.frontend_port
name = var.slb_rule_name
domain = "*.aliyun.com"
url = "/image"
server_group_id = alicloud_slb_server_group.rule.id
cookie = "23ffsa"
cookie_timeout = 100
health_check_http_code = "http_2xx"
health_check_interval = 10
health_check_uri = "/test"
health_check_connect_port = 80
health_check_timeout = 30
healthy_threshold = 3
unhealthy_threshold = 5
sticky_session = "on"
sticky_session_type = "server"
listener_sync = "off"
scheduler = "rr"
health_check_domain = "test"
health_check = "on"
}
Argument Reference
The following arguments are supported:
load_balancer_id
- (Required, ForceNew) The Load Balancer ID which is used to launch the new forwarding rule.name
- (Optional) Name of the forwarding rule. Our plugin provides a default name: "tf-slb-rule".frontend_port
- (Required, Int, ForceNew) The listener frontend port which is used to launch the new forwarding rule. Valid values: [1-65535].domain
- (Optional, ForceNew) Domain name of the forwarding rule. It can contain letters a-z, numbers 0-9, hyphens (-), and periods (.), and wildcard characters. The following two domain name formats are supported:- Standard domain name: www.test.com
- Wildcard domain name: .test.com. wildcard () must be the first character in the format of (*.)
url
- (Optional, ForceNew) Domain of the forwarding rule. It must be 2-80 characters in length. Only letters a-z, numbers 0-9, and characters '-' '/' '?' '%' '#' and '&' are allowed. URLs must be started with the character '/', but cannot be '/' alone.server_group_id
- (Required) ID of a virtual server group that will be forwarded.scheduler
- (Optional, Available since v1.51.0) Scheduling algorithm. Valid values:wrr
,rr
andwlc
. Default value:wrr
. NOTE:scheduler
is required and takes effect only whenlistener_sync
is set tooff
.sticky_session
- (Optional, Available since v1.51.0) Whether to enable session persistence. Valid values:on
andoff
. Default value:off
. NOTE:sticky_session
is required and takes effect only whenlistener_sync
is set tooff
.sticky_session_type
- (Optional, Available since v1.51.0) Mode for handling the cookie. Ifsticky_session
ison
, it is mandatory. Otherwise, it will be ignored. Valid values:insert
andserver
.insert
means it is inserted from Server Load Balancer;server
means the Server Load Balancer learns from the backend server.cookie_timeout
- (Optional, Int, Available since v1.51.0) Cookie timeout. It is mandatory whensticky_session
ison
andsticky_session_type
isinsert
. Otherwise, it will be ignored. Valid values: [1-86400] in seconds.cookie
- (Optional, Available since v1.51.0) The cookie configured on the server. It is mandatory whensticky_session
ison
andsticky_session_type
isserver
. Otherwise, it will be ignored. Valid value:String in line with RFC 2965, with length being1
-200
. It only contains characters such as ASCII codes, English letters and digits instead of the comma, semicolon or spacing, and it cannot start with $.health_check
- (Optional, Available since v1.51.0) Whether to enable health check. Valid values:on
andoff
.TCP
andUDP
listener'shealth_check
is alwayson
, so it will be ignore when launchingTCP
orUDP
listener. NOTE:health_check
is required and takes effect only whenlistener_sync
is set tooff
.health_check_domain
- (Optional, Available since v1.51.0) Domain name used for health check. When it used to launch TCP listener,health_check_type
must behttp
. Its length is limited to 1-80 and only characters such as letters, digits, ‘-‘ and ‘.’ are allowed. When it is not set or empty, Server Load Balancer uses the private network IP address of each backend server as Domain used for health check.health_check_uri
- (Optional, Available since v1.51.0) URI used for health check. When it used to launch TCP listener,health_check_type
must behttp
. Its length is limited to 1-80 and it must start with /. Only characters such as letters, digits, ‘-’, ‘/’, ‘.’, ‘%’, ‘?’, #’ and ‘&’ are allowed.health_check_connect_port
- (Optional, Int, Available since v1.51.0) Port used for health check. Valid values: [1-65535]. Default value:None
means the backend server port is used.healthy_threshold
- (Optional, Available since v1.51.0) Threshold determining the result of the health check is success. It is required whenhealth_check
ison
. Valid values: [1-10] in seconds. Default value:3
.unhealthy_threshold
- (Optional, Int, Available since v1.51.0) Threshold determining the result of the health check is fail. It is required whenhealth_check
ison
. Valid values: [1-10] in seconds. Default value:3
.health_check_timeout
- (Optional, Int, Available since v1.51.0) Maximum timeout of each health check response. It is required whenhealth_check
ison
. Valid values: [1-300] in seconds. Default value:5
. Note: Ifhealth_check_timeout
<health_check_interval
, its will be replaced byhealth_check_interval
.health_check_interval
- (Optional, Int, Int, Available since v1.51.0) Time interval of health checks. It is required whenhealth_check
ison
. Valid values: [1-50] in seconds. Default value:2
.health_check_http_code
- (Optional, Available since v1.51.0) Regular health check HTTP status code. Multiple codes are segmented by “,”. It is required whenhealth_check
ison
. Default value:http_2xx
. Valid values:http_2xx
,http_3xx
,http_4xx
andhttp_5xx
.listener_sync
- (Optional, Available since v1.51.0) Indicates whether a forwarding rule inherits the settings of a health check , session persistence, and scheduling algorithm from a listener. Default value:on
. Valid values:on
andoff
.delete_protection_validation
- (Optional, Bool, Available since v1.63.0) Checking DeleteProtection of SLB instance before deleting. Iftrue
, this resource will not be deleted when its SLB instance enabled DeleteProtection. Default value:false
.
Attributes Reference
The following attributes are exported:
id
- The resource ID in terraform of Rule.
Timeouts
-> NOTE: Available since v1.163.0.
The timeouts
block allows you to specify timeouts for certain actions:
create
- (Defaults to 1 mins) Used when create the forwarding rule.update
- (Defaults to 1 mins) Used when update the forwarding rule.delete
- (Defaults to 1 mins) Used when delete the forwarding rule.
Import
Load balancer forwarding rule can be imported using the id, e.g.
$ terraform import alicloud_slb_rule.example <id>