» consul_service
A high-level resource for creating a Service in Consul in the Consul catalog. This is appropriate for registering external services and can be used to create services addressable by Consul that cannot be registered with a local agent.
If the Consul agent is running on the node where this service is registered, it is not recommended to use this resource.
» Example Usage
Creating a new node with the service:
resource "consul_service" "google" {
name = "google"
node = "${consul_node.compute.name}"
port = 80
tags = ["tag0"]
}
resource "consul_node" "compute" {
name = "compute-google"
address = "www.google.com"
}
Utilizing an existing known node:
resource "consul_service" "google" {
name = "google"
node = "google"
port = 443
}
Register an health-check:
resource "consul_service" "redis" {
name = "redis"
node = "redis"
port = 6379
check {
check_id = "service:redis1"
name = "Redis health check"
status = "passing"
http = "https://www.hashicorptest.com"
tls_skip_verify = false
method = "PUT"
interval = "5s"
timeout = "1s"
deregister_critical_service_after = "30s"
header {
name = "foo"
value = ["test"]
}
header {
name = "bar"
value = ["test"]
}
}
}
» Argument Reference
The following arguments are supported:
-
name- (Required, string) The name of the service. -
node- (Required, string) The name of the node the to register the service on. -
address- (Optional, string) The address of the service. Defaults to the address of the node. -
service_id(Optional, string) - If the service ID is not provided, it will be defaulted to the value of thenameattribute. -
port- (Optional, int) The port of the service. -
external- (Optional, boolean) Whether to register this service as an external service. This can be useful when using Consul External Service Monitor -
checks- (Optional, list of checks) Health-checks to register to monitor the service. The list of attributes for each health-check is detailled below. -
tags- (Optional, set of strings) A list of values that are opaque to Consul, but can be used to distinguish between services or nodes. -
datacenter- (Optional) The datacenter to use. This overrides the datacenter in the provider setup and the agent's default datacenter.
The following attributes are available for each health-check:
-
check_id- (Optional, string) An ID, unique per agent. Will default to name if not set. -
name- (Required) The name of the health-check. -
notes- (Optional, string) An opaque field meant to hold human readable text. -
status- (Optional, string) The initial health-check status. Defaults tocritical. -
tcp- (Optional, string) The TCP address and port to connect to for a TCP check. -
http- (Optional, string) The HTTP endpoint to call for an HTTP check. -
header- (Optional, set of headers) The headers to send for an HTTP check. The attributes of each header is given below. -
tls_skip_verify- (Optional, boolean) Whether to deactivate certificate verification for HTTP health-checks. Defaults tofalse. -
method- (Optional, string) The method to use for HTTP health-checks. Defaults toGET. -
interval- (Required, string) The interval to wait between each health-check invocation. -
timeout- (Required, string) The timeout value for HTTP checks. -
deregister_critical_service_after- (Required, string) The time after which the service is automatically deregistered when in thecriticalstate.
Each header must have the following attributes:
* name - (Required, string) The name of the header.
* value - (Required, list of strings) The header's list of values.
» Attributes Reference
The following attributes are exported:
-
service_id- The ID of the service. -
address- The address of the service. -
node- The node the service is registered on. -
name- The name of the service. -
port- The port of the service. -
tags- The tags of the service. -
external- Whether this is an external service. -
checks- The list of health-checks associated with the service. -
datacenter- The datacenter of the service.