Todos os produtos
Search
Central de documentação

Elasticsearch:Gerencie clusters do Alibaba Cloud Elasticsearch

Última atualização: Jul 05, 2026

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.

Importante

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)

alicloud_vpc

Isolamento de rede para o cluster do Elasticsearch

Grupo de segurança

alicloud_security_group

Regras de controle de acesso à rede

vSwitch

alicloud_vswitch

Sub-rede na VPC

Cluster do Elasticsearch

alicloud_elasticsearch_instance

Cluster gerenciado do Elasticsearch (faturável). Visão geral do faturamento.

Etapa 1: Escrever a configuração do Terraform

  1. Crie um diretório de trabalho e um arquivo chamado main.tf.

  2. 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:

    Importante

    Não codifique credenciais de AccessKey diretamente em arquivos .tf. Use variáveis de ambiente (ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_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_type

    PostPaid

    Método de faturamento pagamento conforme o uso.

    data_node_amount

    2

    Quantidade de nós de dados no cluster.

    data_node_spec

    elasticsearch.sn2ne.large

    Tipo de instância para nós de dados.

    data_node_disk_size

    20

    Tamanho do disco de cada nó de dados, em GB.

    data_node_disk_type

    cloud_ssd

    Tipo de disco para nós de dados.

    data_node_disk_performance_level

    PL1

    Nível de desempenho para discos cloud_ssd.

    version

    6.7_with_X-Pack

    Versão do Elasticsearch com X-Pack ativado.

    zone_count

    1

    Número de zonas para implantação do cluster.

    master_node_spec

    elasticsearch.sn2ne.large

    Tipo de instância para nós mestres dedicados.

    kibana_node_spec

    elasticsearch.sn2ne.large

    Tipo 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

image

Fazer logon no console do Elasticsearch

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

image

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

variable "region" {
  default = "cn-qingdao"
}

data "alicloud_zones" "default" {
  available_resource_creation = "VSwitch"
  available_disk_category     = "cloud_ssd"
}

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 "alicloud" {
  region = var.region
}

resource "random_integer" "default" {
  min = 10000
  max = 99999
}

resource "alicloud_vpc" "vpc" {
  vpc_name   = "vpc-test_${random_integer.default.result}"
  cidr_block = var.vpc_cidr_block
}

resource "alicloud_security_group" "group" {
  name   = "test_${random_integer.default.result}"
  vpc_id = alicloud_vpc.vpc.id
}

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}"
}

resource "alicloud_elasticsearch_instance" "instance" {
  description           = "test_Instance"
  instance_charge_type  = "PostPaid"
  data_node_amount      = "2"
  data_node_spec        = var.node_spec
  data_node_disk_size   = "20"
  data_node_disk_type   = "cloud_ssd"
  vswitch_id            = alicloud_vswitch.vswitch.id
  password              = "es_password_01"
  version               = "6.7_with_X-Pack"
  master_node_spec      = var.node_spec
  zone_count            = "1"
  master_node_disk_type = "cloud_ssd"
  kibana_node_spec      = var.node_spec
  data_node_disk_performance_level = "PL1"
  tags = {
    Created = "TF",
    For     = "example",
  }
}

Para exemplos mais completos, visite os guias de início rápido de zona de aterrissagem do Terraform no GitHub.