Merge pull request #109 from vertis/add_health_check_to_aws_elb
Add health_check to aws_elb resource
This commit is contained in:
commit
c2f718d33f
|
@ -3,6 +3,7 @@ package aws
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/hashicorp/terraform/flatmap"
|
"github.com/hashicorp/terraform/flatmap"
|
||||||
"github.com/hashicorp/terraform/helper/config"
|
"github.com/hashicorp/terraform/helper/config"
|
||||||
|
@ -76,6 +77,35 @@ func resource_aws_elb_create(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _, ok := rs.Attributes["health_check.#"]; ok {
|
||||||
|
v := flatmap.Expand(rs.Attributes, "health_check").([]interface{})
|
||||||
|
health_check := v[0].(map[string]interface{})
|
||||||
|
healthyThreshold, err := strconv.ParseInt(health_check["healthy_threshold"].(string), 0, 0)
|
||||||
|
unhealthyThreshold, err := strconv.ParseInt(health_check["unhealthy_threshold"].(string), 0, 0)
|
||||||
|
interval, err := strconv.ParseInt(health_check["interval"].(string), 0, 0)
|
||||||
|
timeout, err := strconv.ParseInt(health_check["timeout"].(string), 0, 0)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
configureHealthCheckOpts := elb.ConfigureHealthCheck{
|
||||||
|
LoadBalancerName: elbName,
|
||||||
|
Check: elb.HealthCheck{
|
||||||
|
HealthyThreshold: healthyThreshold,
|
||||||
|
UnhealthyThreshold: unhealthyThreshold,
|
||||||
|
Interval: interval,
|
||||||
|
Target: health_check["target"].(string),
|
||||||
|
Timeout: timeout,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = elbconn.ConfigureHealthCheck(&configureHealthCheckOpts)
|
||||||
|
if err != nil {
|
||||||
|
return rs, fmt.Errorf("Failure configuring health check: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loadBalancer, err := resource_aws_elb_retrieve_balancer(rs.ID, elbconn)
|
loadBalancer, err := resource_aws_elb_retrieve_balancer(rs.ID, elbconn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rs, err
|
return rs, err
|
||||||
|
@ -220,6 +250,7 @@ func resource_aws_elb_diff(
|
||||||
"availability_zone": diff.AttrTypeCreate,
|
"availability_zone": diff.AttrTypeCreate,
|
||||||
"listener": diff.AttrTypeCreate,
|
"listener": diff.AttrTypeCreate,
|
||||||
"instances": diff.AttrTypeUpdate,
|
"instances": diff.AttrTypeUpdate,
|
||||||
|
"health_check": diff.AttrTypeCreate,
|
||||||
},
|
},
|
||||||
|
|
||||||
ComputedAttrs: []string{
|
ComputedAttrs: []string{
|
||||||
|
@ -288,6 +319,12 @@ func resource_aws_elb_validation() *config.Validator {
|
||||||
Optional: []string{
|
Optional: []string{
|
||||||
"instances.*",
|
"instances.*",
|
||||||
"availability_zones.*",
|
"availability_zones.*",
|
||||||
|
"health_check.#",
|
||||||
|
"health_check.0.healthy_threshold",
|
||||||
|
"health_check.0.unhealthy_threshold",
|
||||||
|
"health_check.0.interval",
|
||||||
|
"health_check.0.target",
|
||||||
|
"health_check.0.timeout",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,14 @@ resource "aws_elb" "bar" {
|
||||||
lb_protocol = "http"
|
lb_protocol = "http"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
health_check {
|
||||||
|
healthy_threshold = 2
|
||||||
|
unhealthy_threshold = 2
|
||||||
|
timeout = 3
|
||||||
|
target = "HTTP:8000/"
|
||||||
|
interval = 30
|
||||||
|
}
|
||||||
|
|
||||||
instances = ["${aws_instance.foo.id}"]
|
instances = ["${aws_instance.foo.id}"]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -35,6 +43,7 @@ The following arguments are supported:
|
||||||
* `availability_zones` - (Optional) The AZ's to serve traffic in.
|
* `availability_zones` - (Optional) The AZ's to serve traffic in.
|
||||||
* `instances` - (Optional) A list of instance ids to place in the ELB pool.
|
* `instances` - (Optional) A list of instance ids to place in the ELB pool.
|
||||||
* `listener` - (Required) A list of listener blocks. Listeners documented below.
|
* `listener` - (Required) A list of listener blocks. Listeners documented below.
|
||||||
|
* `listener` - (Required) A health_check block. Health Check documented below.
|
||||||
|
|
||||||
Listeners support the following:
|
Listeners support the following:
|
||||||
|
|
||||||
|
@ -43,6 +52,15 @@ Listeners support the following:
|
||||||
* `lb_port` - (Required) The port to listen on for the load balancer
|
* `lb_port` - (Required) The port to listen on for the load balancer
|
||||||
* `lb_protocol` - (Required) The protocol to listen on.
|
* `lb_protocol` - (Required) The protocol to listen on.
|
||||||
|
|
||||||
|
Health Check supports the following:
|
||||||
|
|
||||||
|
* `healthy_threshold` - (Required) The number of checks before the instance is declared healthy.
|
||||||
|
* `unhealthy_threshold` - (Required) The number of checks before the instance is declared unhealthy.
|
||||||
|
* `target` - (Required) The target of the check.
|
||||||
|
* `interval` - (Required) The interval between checks.
|
||||||
|
* `timeout` - (Required) The length of time before the check times out.
|
||||||
|
|
||||||
|
|
||||||
## Attributes Reference
|
## Attributes Reference
|
||||||
|
|
||||||
The following attributes are exported:
|
The following attributes are exported:
|
||||||
|
@ -51,4 +69,3 @@ The following attributes are exported:
|
||||||
* `name` - The name of the ELB
|
* `name` - The name of the ELB
|
||||||
* `dns_name` - The DNS name of the ELB
|
* `dns_name` - The DNS name of the ELB
|
||||||
* `instances` - The list of instances in the ELB
|
* `instances` - The list of instances in the ELB
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue