通过Terraform,您可以使用代码配置实现物理机等资源的分配。也就是说通过Terraform,写一个配置文件,就可以帮助您购买一台云服务器,或者申请到阿里云Elasticsearch、OSS等云资源。本文介绍通过Terraform管理阿里云Elasticsearch的方法,包括创建、更新、查看、删除实例等操作。
背景信息
- 在本地安装和配置Terraform(本文以此为例)。
- 在Cloud Shell中使用Terraform。
本文介绍通过Terraform管理阿里云Elasticsearch的方法,主要包括:
安装并配置Terraform
通过Terraform创建阿里云Elasticsearch实例
通过Terraform更新Elasticsearch资源配置
将Elasticsearch资源导入Terraform
如果阿里云Elasticsearch实例不是通过Terraform创建的,可通过命令,将阿里云Elasticsearch导入到Terraform的state目录下进行管理。
查看Terraform管理的所有Elasticsearch资源
使用terraform show
命令,查看当前state中所有被管理的资源及其所有属性值。
# 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 {}
}
通过Terraform删除Elasticsearch实例
警告 实例删除后将不可恢复,实例中的所有数据将被清空。
进入测试目录,执行terraform destroy
命令,输入yes,即可删除该实例。
# 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.