terraform-aws-arc-opensearch¶
Overview¶
Terraform module for supporting AWS OpenSearch. Creates an admin role and outputs parameters to SSM for downstream utilization or additional automation.
Usage¶
See the example folder for a working module example.
Requirements¶
| Name | Version |
|---|---|
| terraform | ~> 1.3 |
| aws | ~> 4.0 |
| null | >= 3.2 |
| random | >= 3.4 |
Providers¶
| Name | Version |
|---|---|
| aws | 4.54.0 |
| random | 3.4.3 |
Modules¶
| Name | Source | Version |
|---|---|---|
| opensearch | git::https://github.com/cloudposse/terraform-aws-elasticsearch | 0.44.0 |
Resources¶
| Name | Type |
|---|---|
| aws_iam_role.admin | resource |
| aws_iam_role.read_only | resource |
| aws_iam_role_policy_attachment.admin | resource |
| aws_iam_role_policy_attachment.read_only | resource |
| aws_ssm_parameter.this | resource |
| random_password.admin_password | resource |
Inputs¶
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| additional_iam_role_arns | List of additional IAM role ARNs to permit access to the Elasticsearch domain | list(string) |
[] |
no |
| admin_username | Admin username when fine grained access control | string |
"os_admin" |
no |
| advanced_options | Key-value string pairs to specify advanced configuration options | map(any) |
{ |
no |
| advanced_security_options_enabled | AWS Elasticsearch Kibana enchanced security plugin enabling (forces new resource) | bool |
true |
no |
| advanced_security_options_internal_user_database_enabled | Whether to enable or not internal Kibana user database for ELK OpenDistro security plugin | bool |
true |
no |
| availability_zones | List of availability zones to deploy the cluster in. | list(string) |
[ |
no |
| cognito_authentication_enabled | Whether to enable Amazon Cognito authentication with Kibana | bool |
false |
no |
| cognito_iam_role_arn | ARN of the IAM role that has the AmazonESCognitoAccess policy attached | string |
"" |
no |
| cognito_identity_pool_id | The ID of the Cognito Identity Pool to use | string |
"" |
no |
| cognito_user_pool_id | The ID of the Cognito User Pool to use | string |
"" |
no |
| create_iam_service_linked_role | Whether to create AWSServiceRoleForAmazonElasticsearchService service-linked role. Set it 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 info |
bool |
true |
no |
| custom_endpoint | Fully qualified domain for custom endpoint. | string |
"" |
no |
| custom_endpoint_certificate_arn | ACM certificate ARN for custom endpoint. | string |
"" |
no |
| custom_endpoint_enabled | Whether to enable custom endpoint for the Elasticsearch domain. | bool |
false |
no |
| custom_opensearch_password | Custom Administrator password to be assigned to var.admin_username. If undefined, it will be a randomly generated password. Does not work if var.generate_random_password is true. |
string |
"" |
no |
| ebs_volume_size | EBS volumes for data storage in GB | number |
10 |
no |
| elasticsearch_version | Version of ElasticSearch or OpenSearch to deploy (_e.g._ OpenSearch_2.3, OpenSearch_1.3, OpenSearch_1.2, OpenSearch_1.1, OpenSearch_1.0, 7.4, 7.1, etc. | string |
"OpenSearch_2.3" |
no |
| encrypt_at_rest_enabled | Whether to enable encryption at rest | bool |
true |
no |
| environment | Name of the environment, i.e. dev, stage, prod | string |
n/a | yes |
| generate_random_password | Generate a random password for the OpenSearch Administrator. If this value is true and var.custom_opensearch_password is defined, var.custom_opensearch_password will be ignored. |
bool |
true |
no |
| iam_actions | List of actions to allow for the IAM roles, e.g. es:ESHttpGet, es:ESHttpPut, es:ESHttpPost | list(string) |
[] |
no |
| instance_count | Number of data nodes in the cluster. | number |
2 |
no |
| instance_type | ElasticSearch or OpenSearch instance type for data nodes in the cluster | string |
"t3.medium.elasticsearch" |
no |
| 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 |
"" |
no |
| name | Name of the OpenSearch resource | string |
n/a | yes |
| namespace | Namespace of the project, i.e. arc | string |
n/a | yes |
| node_to_node_encryption_enabled | Whether to enable node-to-node encryption | bool |
true |
no |
| security_group_ids | List of security groups to assign OpenSearch | list(string) |
[] |
no |
| subnet_ids | List of Subnet IDs to assign OpenSearch | list(string) |
n/a | yes |
| tags | Default tags to apply to every resource | map(string) |
n/a | yes |
| vpc_id | ID of the VPC where resources will be deployed to | string |
n/a | yes |
| zone_awareness_enabled | Enable zone awareness for Elasticsearch cluster | bool |
true |
no |
Outputs¶
| Name | Description |
|---|---|
| domain_arn | ARN of the OpenSearch domain |
| domain_endpoint | Domain-specific endpoint used to submit index, search, and data upload requests |
| domain_hostname | OpenSearch domain hostname to submit index, search, and data upload requests |
| domain_id | Unique identifier for the OpenSearch domain |
| kibana_endpoint | Domain-specific endpoint for Kibana without https scheme |
| kibana_hostname | Kibana hostname |
| opensearch_user_iam_role_arn | The ARN of the IAM role to allow access to OpenSearch cluster |
| opensearch_user_iam_role_name | The name of the IAM role to allow access to OpenSearch cluster |
| security_group_id | Security Group ID to control access to the OpenSearch domain |
Versioning¶
This project uses a .version file at the root of the repo which the pipeline reads from and does a git tag.
When you intend to commit to main, you will need to increment this version. Once the project is merged,
the pipeline will kick off and tag the latest git commit.
Development¶
Prerequisites¶
Configurations¶
- Configure pre-commit hooks
Tests¶
- Tests are available in
testdirectory - Configure the dependencies
- Now execute the test
Authors¶
This project is authored by: * SourceFuse ARC Team