Crie um cluster do Alibaba Cloud Elasticsearch e os recursos de rede necessários em um único arquivo de configuração do Terraform.
Execute o código de exemplo com poucos cliques no Terraform Explorer .
Pré-requisitos
-
Um usuário RAM com permissões de privilégio mínimo. Use um usuário RAM com apenas as permissões necessárias para reduzir o risco de vazamento de AccessKey. Criar um usuário RAM e Conceder permissões a um usuário RAM. Anexe a seguinte política personalizada:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "vpc:CreateVpc", "vpc:DeleteVpc", "vpc:CreateVSwitch", "vpc:DeleteVSwitch", "ecs:CreateSecurityGroup", "ecs:ModifySecurityGroupPolicy", "ecs:DescribeSecurityGroups", "ecs:ListTagResources", "ecs:DeleteSecurityGroup", "ecs:DescribeSecurityGroupAttribute" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "vpc:DescribeVpcAttribute", "vpc:DescribeRouteTableList", "vpc:DescribeVSwitchAttributes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "elasticsearch:CreateInstance", "elasticsearch:DescribeInstance", "elasticsearch:ListAckClusters", "elasticsearch:UpdateDescription", "elasticsearch:ListInstance", "elasticsearch:ListAvailableEsInstanceIds" ], "Resource": "*" } ] } -
Ambiente de execução do Terraform configurado por um dos seguintes métodos:
Terraform Explorer (recomendado): Ambiente Terraform baseado em navegador, sem necessidade de instalação. Acesse o Terraform Explorer para começar.
**Cloud Shell:** Terraform pré-instalado com credenciais configuradas. Execute comandos diretamente.
**Máquina local:** Instale e configure o Terraform localmente. Ideal para redes restritas ou configurações personalizadas.
Este tutorial cria recursos faturáveis. Libere-os quando não forem mais necessários.
Recursos criados
|
Recurso |
Tipo de recurso Terraform |
Descrição |
|
Virtual private cloud (VPC) |
Isolamento de rede para o cluster do Elasticsearch |
|
|
Grupo de segurança |
Regras de controle de acesso à rede |
|
|
vSwitch |
Sub-rede na VPC |
|
|
Cluster do Elasticsearch |
Cluster gerenciado do Elasticsearch (faturável). Visão geral do faturamento. |
Etapa 1: Escrever a configuração do Terraform
Crie um diretório de trabalho e um arquivo chamado
main.tf.-
Copie o código a seguir para
main.tf. Esta configuração cria uma VPC, um grupo de segurança, um vSwitch e um cluster do Elasticsearch com estes parâmetros:ImportanteNão codifique credenciais de AccessKey diretamente em arquivos
.tf. Use variáveis de ambiente (ALIBABA_CLOUD_ACCESS_KEY_IDeALIBABA_CLOUD_ACCESS_KEY_SECRET) ou a configuração de credenciais do provedor Terraform. Credenciais confirmadas no controle de versão correm risco de vazamento.Parâmetro
Valor
Descrição
instance_charge_typePostPaidMétodo de faturamento pagamento conforme o uso.
data_node_amount2Quantidade de nós de dados no cluster.
data_node_specelasticsearch.sn2ne.largeTipo de instância para nós de dados.
data_node_disk_size20Tamanho do disco de cada nó de dados, em GB.
data_node_disk_typecloud_ssdTipo de disco para nós de dados.
data_node_disk_performance_levelPL1Nível de desempenho para discos cloud_ssd.
version6.7_with_X-PackVersão do Elasticsearch com X-Pack ativado.
zone_count1Número de zonas para implantação do cluster.
master_node_specelasticsearch.sn2ne.largeTipo de instância para nós mestres dedicados.
kibana_node_specelasticsearch.sn2ne.largeTipo de instância para o nó Kibana.
# ------------------------------------ # Variables # ------------------------------------ variable "region" { default = "cn-qingdao" } variable "vpc_cidr_block" { default = "172.16.0.0/16" } variable "vsw_cidr_block" { default = "172.16.0.0/24" } variable "node_spec" { default = "elasticsearch.sn2ne.large" } # ------------------------------------ # Provider and data sources # ------------------------------------ provider "alicloud" { region = var.region } # Query available zones that support vSwitch creation and cloud_ssd disks data "alicloud_zones" "default" { available_resource_creation = "VSwitch" available_disk_category = "cloud_ssd" } # Generate a random suffix to avoid resource name conflicts resource "random_integer" "default" { min = 10000 max = 99999 } # ------------------------------------ # Network resources # ------------------------------------ # Create a VPC resource "alicloud_vpc" "vpc" { vpc_name = "vpc-test_${random_integer.default.result}" cidr_block = var.vpc_cidr_block } # Create a security group in the VPC resource "alicloud_security_group" "group" { name = "test_${random_integer.default.result}" vpc_id = alicloud_vpc.vpc.id } # Create a vSwitch in the first available zone resource "alicloud_vswitch" "vswitch" { vpc_id = alicloud_vpc.vpc.id cidr_block = var.vsw_cidr_block zone_id = data.alicloud_zones.default.zones[0].id vswitch_name = "vswitch-test-${random_integer.default.result}" } # ------------------------------------ # Elasticsearch cluster # ------------------------------------ resource "alicloud_elasticsearch_instance" "instance" { description = "test_Instance" instance_charge_type = "PostPaid" # Pay-as-you-go billing data_node_amount = "2" # Number of data nodes data_node_spec = var.node_spec # Data node instance type data_node_disk_size = "20" # Data node disk size in GB data_node_disk_type = "cloud_ssd" # Data node disk type vswitch_id = alicloud_vswitch.vswitch.id # Deploy in the created vSwitch password = "es_password_01" # Cluster access password version = "6.7_with_X-Pack" # Elasticsearch version with X-Pack master_node_spec = var.node_spec # Dedicated master node instance type zone_count = "1" # Single-zone deployment master_node_disk_type = "cloud_ssd" # Master node disk type kibana_node_spec = var.node_spec # Kibana node instance type data_node_disk_performance_level = "PL1" # SSD performance level tags = { Created = "TF", For = "example", } }
Etapa 2: Inicializar o Terraform
Execute o comando a seguir para inicializar o Terraform:
terraform init
Saída esperada em caso de sucesso:
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Etapa 3: Criar o cluster do Elasticsearch
Execute o comando a seguir para criar os recursos:
terraform apply
Quando solicitado, insira yes e pressione Enter. A criação do cluster leva de 10 a 30 minutos.
Saída esperada em caso de sucesso:
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Apply complete! Resources: 5 added, 0 changed, 0 destroyed.
Etapa 4: Verificar o resultado
Executar o comando terraform show
Execute o comando a seguir para visualizar os recursos criados:
terraform show

Fazer logon no console do Elasticsearch
Faça logon no console do Elasticsearch para visualizar o cluster.

Etapa 5: Liberar recursos
Quando não forem mais necessários, libere todos os recursos gerenciados pelo Terraform com terraform destroy. Comandos comuns.
terraform destroy
Quando solicitado, insira yes e pressione Enter para confirmar.
Código de exemplo completo
Execute o código de exemplo com poucos cliques no Terraform Explorer .
Código de exemplo
Para exemplos mais completos, visite os guias de início rápido de zona de aterrissagem do Terraform no GitHub.