This repo contains source code for terraform provider: terraform-provider-ec. https://www.elastic.co/guide/en/cloud/current/ec-restful-api.html
- Build with pre-installed golang:
$ go build -v
- Build with docker (make sure Docker is installed). It will pull golang image, build artifact and place it in current directory. You don't need to care about dependencies:
$ ./build_docker.sh
At the end, you'll get binary file terraform-provider-ec
.
- To start using compiled plugin
terraform-provider-ec
you have to place this file into your working directory with Terrafrom code or use other path.- command to download binary file
terraform-provider-ec
for current OS in$HOME/.terraform.d/plugins
directory:
- command to download binary file
$ ./download_binary.sh {{release_version}}
- Elasticsearch Service supports only API key-based authentication.
Set API key as an environment variable EC_API_KEY
:
export EC_API_KEY = "Qwerty12345678"
Obviously, you can set up it in your terrafrom code, but it's not recommended to store secrets in control version systems.
provider "ec" {
url = "https://api.elastic-cloud.com"
api_key = "Qwerty12345678"
insecure = false
}
# Min usage:
provider "ec" {}
url
- Elastic Cloud endpoint. (Default: https://api.elastic-cloud.com)api_key
- API Key. Set it with environment variable EC_API_KEY.insecure
- TLS setting for EC client. (Default: false - don't trust self-signed certificates)
Use this data source to get names and IDs of existing deployments.
provider "ec" {}
data "ec_deployments" "this" {}
ids
- mappingdeployment name
:id
Manage ElasticCloud deployment
provider "ec" {}
resource "ec_deployment" "this" {
name = "my-first-api-deployment"
region = "gcp-europe-west1"
version = "7.8.0"
template_id = "gcp-io-optimized"
data_node = true
master_node = true
ingest_node = true
ml_node = false
elastic_instance_id = "gcp.data.highio.1"
elastic_zone_count = 1
elastic_node_memory = 8192
}
name
- (Required) Deployment name.region
- (Required) Geographic area where the data center of the cloud provider that hosts your deployment is located. List of available regions.version
- (Required) Elastic stack version.template_id
- (Required) Unique identifier of the deployment template - pre-configure the components of the Elastic Stack.data_node
- (Bool) Controls the combinations of Elasticsearch node types. Defines whether this node can hold data.master_node
- (Bool) Controls the combinations of Elasticsearch node types. Defines whether this node can be elected master.ingest_node
- (Bool) Controls the combinations of Elasticsearch node types. Defines whether this node can run an ingest pipeline.ml_node
- (Bool) Controls the combinations of Elasticsearch node types. Defines whether this node can run ml jobs.elastic_instance_id
- Instance ID for elastic node. Depends on cloud provider.elastic_zone_count
- Number of availability zones in selected region.elastic_node_memory
- Amount of memory (MB) per elastic node.
username
- elasticsearch username.password
- elasticsearch password.endpoint
- elasticsearch cluster ednpoint.cluster_id
- elasticsearch cluster ID.deployment_id
- elasticcloud deployment ID.
By default, provider log messages are not written to standard out during provider execution. To enable verbose output of Terraform and provider log messages, set the TF_LOG
environment variable to DEBUG
.