2016-08-18 09:46:30 +02:00
|
|
|
---
|
|
|
|
layout: "consul"
|
|
|
|
page_title: "Consul: consul_prepared_query"
|
|
|
|
sidebar_current: "docs-consul-resource-prepared-query"
|
|
|
|
description: |-
|
|
|
|
Allows Terraform to manage a Consul prepared query
|
|
|
|
---
|
|
|
|
|
2017-04-10 18:19:36 +02:00
|
|
|
# consul_prepared_query
|
2016-08-18 09:46:30 +02:00
|
|
|
|
|
|
|
Allows Terraform to manage a Consul prepared query.
|
|
|
|
|
|
|
|
Managing prepared queries is done using Consul's REST API. This resource is
|
|
|
|
useful to provide a consistent and declarative way of managing prepared
|
|
|
|
queries in your Consul cluster using Terraform.
|
|
|
|
|
|
|
|
## Example Usage
|
|
|
|
|
2017-04-10 18:19:36 +02:00
|
|
|
```hcl
|
2016-12-10 02:22:51 +01:00
|
|
|
# Creates a prepared query myquery.query.consul that finds the nearest
|
|
|
|
# healthy myapp.service.consul instance that has the active tag and not
|
|
|
|
# the standby tag.
|
|
|
|
resource "consul_prepared_query" "myapp-query" {
|
2017-04-10 18:19:36 +02:00
|
|
|
name = "myquery"
|
|
|
|
datacenter = "us-central1"
|
|
|
|
token = "abcd"
|
|
|
|
stored_token = "wxyz"
|
|
|
|
only_passing = true
|
|
|
|
near = "_agent"
|
|
|
|
|
|
|
|
service = "myapp"
|
|
|
|
tags = ["active", "!standby"]
|
|
|
|
|
|
|
|
failover {
|
|
|
|
nearest_n = 3
|
|
|
|
datacenters = ["us-west1", "us-east-2", "asia-east1"]
|
|
|
|
}
|
|
|
|
|
|
|
|
dns {
|
|
|
|
ttl = "30s"
|
|
|
|
}
|
2016-12-10 02:22:51 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
# Creates a Prepared Query Template that matches *-near-self.query.consul
|
|
|
|
# and finds the nearest service that matches the glob character (e.g.
|
|
|
|
# foo-near-self.query.consul will find the nearest healthy foo.service.consul).
|
2016-08-18 09:46:30 +02:00
|
|
|
resource "consul_prepared_query" "service-near-self" {
|
2017-04-10 18:19:36 +02:00
|
|
|
datacenter = "nyc1"
|
|
|
|
token = "abcd"
|
|
|
|
stored_token = "wxyz"
|
|
|
|
name = ""
|
|
|
|
only_passing = true
|
|
|
|
near = "_agent"
|
|
|
|
|
|
|
|
template {
|
|
|
|
type = "name_prefix_match"
|
|
|
|
regexp = "^(.*)-near-self$"
|
|
|
|
}
|
|
|
|
|
|
|
|
service = "$${match(1)}"
|
|
|
|
|
|
|
|
failover {
|
|
|
|
nearest_n = 3
|
|
|
|
datacenters = ["dc2", "dc3", "dc4"]
|
|
|
|
}
|
|
|
|
|
|
|
|
dns {
|
|
|
|
ttl = "5m"
|
|
|
|
}
|
2016-08-18 09:46:30 +02:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Argument Reference
|
|
|
|
|
|
|
|
The following arguments are supported:
|
|
|
|
|
|
|
|
* `datacenter` - (Optional) The datacenter to use. This overrides the
|
|
|
|
datacenter in the provider setup and the agent's default datacenter.
|
|
|
|
|
|
|
|
* `token` - (Optional) The ACL token to use when saving the prepared query.
|
|
|
|
This overrides the token that the agent provides by default.
|
|
|
|
|
|
|
|
* `stored_token` - (Optional) The ACL token to store with the prepared
|
|
|
|
query. This token will be used by default whenever the query is executed.
|
|
|
|
|
|
|
|
* `name` - (Required) The name of the prepared query. Used to identify
|
|
|
|
the prepared query during requests. Can be specified as an empty string
|
|
|
|
to configure the query as a catch-all.
|
|
|
|
|
|
|
|
* `service` - (Required) The name of the service to query.
|
|
|
|
|
2016-12-10 02:22:51 +01:00
|
|
|
* `session` - (Optional) The name of the Consul session to tie this query's
|
|
|
|
lifetime to. This is an advanced parameter that should not be used without a
|
|
|
|
complete understanding of Consul sessions and the implications of their use
|
|
|
|
(it is recommended to leave this blank in nearly all cases). If this
|
|
|
|
parameter is omitted the query will not expire.
|
|
|
|
|
|
|
|
* `tags` - (Optional) The list of required and/or disallowed tags. If a tag is
|
|
|
|
in this list it must be present. If the tag is preceded with a "!" then it is
|
|
|
|
disallowed.
|
|
|
|
|
2016-11-08 15:43:00 +01:00
|
|
|
* `only_passing` - (Optional) When `true`, the prepared query will only
|
2016-08-18 09:46:30 +02:00
|
|
|
return nodes with passing health checks in the result.
|
|
|
|
|
|
|
|
* `near` - (Optional) Allows specifying the name of a node to sort results
|
|
|
|
near using Consul's distance sorting and network coordinates. The magic
|
|
|
|
`_agent` value can be used to always sort nearest the node servicing the
|
|
|
|
request.
|
|
|
|
|
|
|
|
* `failover` - (Optional) Options for controlling behavior when no healthy
|
|
|
|
nodes are available in the local DC.
|
|
|
|
|
|
|
|
* `nearest_n` - (Optional) Return results from this many datacenters,
|
|
|
|
sorted in ascending order of estimated RTT.
|
|
|
|
|
|
|
|
* `datacenters` - (Optional) Remote datacenters to return results from.
|
|
|
|
|
|
|
|
* `dns` - (Optional) Settings for controlling the DNS response details.
|
|
|
|
|
|
|
|
* `ttl` - (Optional) The TTL to send when returning DNS results.
|
|
|
|
|
|
|
|
* `template` - (Optional) Query templating options. This is used to make a
|
|
|
|
single prepared query respond to many different requests.
|
|
|
|
|
|
|
|
* `type` - (Required) The type of template matching to perform. Currently
|
|
|
|
only `name_prefix_match` is supported.
|
|
|
|
|
|
|
|
* `regexp` - (Required) The regular expression to match with. When using
|
|
|
|
`name_prefix_match`, this regex is applied against the query name.
|
|
|
|
|
|
|
|
## Attributes Reference
|
|
|
|
|
|
|
|
The following attributes are exported:
|
|
|
|
|
|
|
|
* `id` - The ID of the prepared query, generated by Consul.
|