Terraform allows you to use code to allocate resources such as physical machines. You can use Terraform to write a configuration file to purchase a cloud server or apply for resources such as Alibaba Cloud Elasticsearch and Object Storage Service (OSS). This topic describes how to use Terraform to manage your Alibaba Cloud Elasticsearch clusters, such as creating, updating, viewing, or deleting a cluster.
Background information
- Install and configure Terraform in the local PC. This method is used in this topic.
- Use Terraform in Cloud Shell.
Install and configure Terraform
Create an Alibaba Cloud Elasticsearch cluster
Change cluster configurations
Import the Elasticsearch cluster
If your Elasticsearch cluster is not created by using Terraform, you can run commands to import the cluster to the state directory of Terraform.
View all the managed clusters
Run the terraform show
command to view all the managed clusters and their attribute values in the state
directory.
# alicloud_elasticsearch_instance.instance:
resource "alicloud_elasticsearch_instance" "instance" {
data_node_amount = 2
data_node_disk_size = 20
data_node_disk_type = "cloud_ssd"
data_node_spec = "elasticsearch.sn2ne.large"
domain = "es-cn-dssf9op81lz4q****.elasticsearch.aliyuncs.com"
id = "es-cn-dssf9op81lz4q****"
instance_charge_type = "PostPaid"
kibana_domain = "es-cn-dssf9op81lz4q****.kibana.elasticsearch.aliyuncs.com"
kibana_port = 5601
kibana_whitelist = []
master_node_spec = "elasticsearch.sn2ne.large"
password = (sensitive value)
port = 9200
private_whitelist = []
public_whitelist = []
status = "active"
version = "6.7.0_with_X-Pack"
vswitch_id = "vsw-bp1f7r0ma00pf9h2l****"
zone_count = 1
}
# alicloud_elasticsearch_instance.test:
resource "alicloud_elasticsearch_instance" "test" {
data_node_amount = 3
data_node_disk_size = 51
data_node_disk_type = "cloud_ssd"
data_node_spec = "elasticsearch.r5.large"
domain = "es-cn-0pp1f1y5g000h****.elasticsearch.aliyuncs.com"
id = "es-cn-0pp1f1y5g000h****"
instance_charge_type = "PostPaid"
kibana_domain = "es-cn-0pp1f1y5g000h****.kibana.elasticsearch.aliyuncs.com"
kibana_port = 5601
kibana_whitelist = []
port = 9200
private_whitelist = []
public_whitelist = []
status = "active"
version = "6.7.0_with_X-Pack"
vswitch_id = "vsw-bp1f7r0ma00pf9h2l****"
zone_count = 1
timeouts {}
}
Delete a cluster
Go to the test directory, run the terraform destroy
command, and then enter yes to delete the cluster.
# terraform destroy
alicloud_elasticsearch_instance.instance: Refreshing state... [id=es-cn-v3x49h5397fau****]
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
- destroy
Terraform will perform the following actions:
# alicloud_elasticsearch_instance.instance will be destroyed
- resource "alicloud_elasticsearch_instance" "instance" {
- data_node_amount = 2 -> null
- data_node_disk_size = 20 -> null
- data_node_disk_type = "cloud_ssd" -> null
- data_node_spec = "elasticsearch.sn2ne.large" -> null
- domain = "es-cn-v3x49h5397fau****.elasticsearch.aliyuncs.com" -> null
- id = "es-cn-v3x49h5397fau****" -> null
- instance_charge_type = "PostPaid" -> null
- kibana_domain = "es-cn-v3x49h5397fau****.kibana.elasticsearch.aliyuncs.com" -> null
- kibana_port = 5601 -> null
- kibana_whitelist = [] -> null
- master_node_spec = "elasticsearch.sn2ne.large" -> null
- password = (sensitive value)
- port = 9200 -> null
- private_whitelist = [] -> null
- public_whitelist = [] -> null
- status = "active" -> null
- version = "6.7.0_with_X-Pack" -> null
- vswitch_id = "vsw-bp1f7r0ma00pf9h2l****" -> null
- zone_count = 1 -> null
}
Plan: 0 to add, 0 to change, 1 to destroy.
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
alicloud_elasticsearch_instance.instance: Destroying... [id=es-cn-v3x49h5397fau****]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 10s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 20s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 30s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 40s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 50s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m0s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m10s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m20s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m30s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m40s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m50s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m0s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m10s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m20s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m30s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m40s elapsed]
alicloud_elasticsearch_instance.instance: Destruction complete after 10m2s
Destroy complete! Resources: 1 destroyed.