Component: elasticsearch
This component is responsible for provisioning an Elasticsearch cluster with built-in integrations with Kibana and Logstash.
Usage
Stack Level: Regional
Here's an example snippet for how to use this component.
components:
terraform:
elasticache-redis:
vars:
enabled: true
instance_type: "t3.medium.elasticsearch"
elasticsearch_version: "7.9"
encrypt_at_rest_enabled: false
dedicated_master_enabled: false
elasticsearch_subdomain_name: "es"
kibana_subdomain_name: "kibana"
ebs_volume_size: 40
create_iam_service_linked_role: true
kibana_hostname_enabled: true
domain_hostname_enabled: true
Requirements
Name | Version |
---|---|
terraform | >= 0.13.0 |
aws | >= 3.8 |
Providers
Name | Version |
---|---|
aws | >= 3.8 |
random | n/a |
Modules
Name | Source | Version |
---|---|---|
dns_delegated | cloudposse/stack-config/yaml//modules/remote-state | 1.4.1 |
elasticsearch | cloudposse/elasticsearch/aws | 0.33.0 |
elasticsearch_log_cleanup | cloudposse/lambda-elasticsearch-cleanup/aws | 0.12.3 |
iam_roles | ../account-map/modules/iam-roles | n/a |
this | cloudposse/label/null | 0.24.1 |
vpc | cloudposse/stack-config/yaml//modules/remote-state | 1.4.1 |
Resources
Inputs
Name | Description | Type | Default | Required |
---|---|---|---|---|
additional_tag_map | Additional tags for appending to tags_as_list_of_maps. Not added to tags . | map(string) | {} | no |
attributes | Additional attributes (e.g. 1 ) | list(string) | [] | no |
context | Single object for setting entire context at once. See description of individual variables for details. Leave string and numeric variables as null to use default value.Individual variable settings (non-null) override settings in context object, except for attributes, tags, and additional_tag_map, which are merged. | any |
| no |
create_iam_service_linked_role | Whether to create AWSServiceRoleForAmazonElasticsearchService service-linked role.Set this to false if you already have an ElasticSearch cluster created in the AWS account and AWSServiceRoleForAmazonElasticsearchService already exists.See https://github.com/terraform-providers/terraform-provider-aws/issues/5218 for more information. | bool | n/a | yes |
dedicated_master_enabled | Indicates whether dedicated master nodes are enabled for the cluster | bool | n/a | yes |
delimiter | Delimiter to be used between namespace , environment , stage , name and attributes .Defaults to - (hyphen). Set to "" to use no delimiter at all. | string | null | no |
domain_hostname_enabled | Explicit flag to enable creating a DNS hostname for ES. If true , then var.dns_zone_id is required. | bool | n/a | yes |
ebs_volume_size | EBS volumes for data storage in GB | number | n/a | yes |
elasticsearch_iam_actions | List of actions to allow for the IAM roles, e.g. es:ESHttpGet , es:ESHttpPut , es:ESHttpPost | list(string) |
| no |
elasticsearch_iam_role_arns | List of additional IAM role ARNs to permit access to the Elasticsearch domain | list(string) | [] | no |
elasticsearch_password | Password for the elasticsearch user | string | "" | no |
elasticsearch_subdomain_name | The name of the subdomain for Elasticsearch in the DNS zone (_e.g._ elasticsearch , ui , ui-es , search-ui ) | string | n/a | yes |
elasticsearch_version | Version of Elasticsearch to deploy (_e.g._ 7.1 , 6.8 , 6.7 , 6.5 , 6.4 , 6.3 , 6.2 , 6.0 , 5.6 , 5.5 , 5.3 , 5.1 , 2.3 , 1.5 | string | n/a | yes |
enabled | Set to false to prevent the module from creating any resources | bool | null | no |
encrypt_at_rest_enabled | Whether to enable encryption at rest | bool | n/a | yes |
environment | Environment, e.g. 'uw2', 'us-west-2', OR 'prod', 'staging', 'dev', 'UAT' | string | null | no |
id_length_limit | Limit id to this many characters (minimum 6).Set to 0 for unlimited length.Set to null for default, which is 0 .Does not affect id_full . | number | null | no |
import_profile_name | IAM Profile to use when importing a resource | string | null | no |
instance_type | The type of the instance | string | n/a | yes |
kibana_hostname_enabled | Explicit flag to enable creating a DNS hostname for Kibana. If true , then var.dns_zone_id is required. | bool | n/a | yes |
kibana_subdomain_name | The name of the subdomain for Kibana in the DNS zone (_e.g._ kibana , ui , ui-es , search-ui , kibana.elasticsearch ) | string | n/a | yes |
label_key_case | The letter case of label keys (tag names) (i.e. name , namespace , environment , stage , attributes ) to use in tags .Possible values: lower , title , upper .Default value: title . | string | null | no |
label_order | The naming order of the id output and Name tag. Defaults to ["namespace", "environment", "stage", "name", "attributes"]. You can omit any of the 5 elements, but at least one must be present. | list(string) | null | no |
label_value_case | The letter case of output label values (also used in tags and id ).Possible values: lower , title , upper and none (no transformation).Default value: lower . | string | null | no |
name | Solution name, e.g. 'app' or 'jenkins' | string | null | no |
namespace | Namespace, which could be your organization name or abbreviation, e.g. 'eg' or 'cp' | string | null | no |
regex_replace_chars | Regex to replace chars with empty string in namespace , environment , stage and name .If not set, "/[^a-zA-Z0-9-]/" is used to remove all characters other than hyphens, letters and digits. | string | null | no |
region | AWS region | string | n/a | yes |
stage | Stage, e.g. 'prod', 'staging', 'dev', OR 'source', 'build', 'test', 'deploy', 'release' | string | null | no |
tags | Additional tags (e.g. map('BusinessUnit','XYZ') | map(string) | {} | no |
Outputs
Name | Description |
---|---|
domain_arn | ARN of the Elasticsearch domain |
domain_endpoint | Domain-specific endpoint used to submit index, search, and data upload requests |
domain_hostname | Elasticsearch domain hostname to submit index, search, and data upload requests |
domain_id | Unique identifier for the Elasticsearch domain |
elasticsearch_user_iam_role_arn | The ARN of the IAM role to allow access to Elasticsearch cluster |
elasticsearch_user_iam_role_name | The name of the IAM role to allow access to Elasticsearch cluster |
kibana_endpoint | Domain-specific endpoint for Kibana without https scheme |
kibana_hostname | Kibana hostname |
master_password_ssm_key | SSM key of Elasticsearch master password |
security_group_id | Security Group ID to control access to the Elasticsearch domain |
References
- cloudposse/terraform-aws-components - Cloud Posse's upstream component