すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:Terraform を使用して Alibaba Cloud Elasticsearch クラスタを管理する

最終更新日:Jan 11, 2025

Alibaba Cloud Elasticsearch は Terraform と接続されています。 Terraform を使用して Alibaba Cloud Elasticsearch クラスタを管理できます。このトピックでは、Terraform を使用して Alibaba Cloud Elasticsearch クラスタを作成する方法について説明します。

説明

このトピックのサンプルコードは、数回クリックするだけで実行できます。詳細については、Terraform Explorer にアクセスしてください。

前提条件

  • このトピックの操作を実行するために必要な最小限の権限を持つ RAM ユーザーを使用することをお勧めします。これにより、Alibaba Cloud アカウントの AccessKey ペアが漏洩するリスクを最小限に抑えることができます。RAM ユーザーに必要な最小限の権限を持つポリシーをアタッチする方法については、RAM ユーザーの作成 および RAM ユーザーへの権限の付与 を参照してください。この例では、次のポリシーが使用されます。

    {
      "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": "*"
        }
      ]
    }
  • Terraform のランタイム環境は、次のいずれかの方法を使用して準備します。

    • Terraform Explorer:Alibaba Cloud は、Terraform のオンラインランタイム環境である Terraform Explorer を提供しています。 Terraform Explorer にログインすれば、Terraform をインストールすることなく使用できます。この方法は、追加費用なしで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。

    • Cloud Shell:Terraform は Cloud Shell にプリインストールされており、ID クレデンシャルが構成されています。 Cloud Shell で Terraform コマンドを直接実行できます。この方法は、低コストで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。

    • オンプレミス マシンに Terraform をインストールして構成する:この方法は、ネットワークの状態が悪い場合や、カスタム開発環境が必要な場合に適しています。

説明

この例では、特定のリソースに対して料金が発生する場合があります。不要になったリソースは、リリースまたは登録解除してください。

必要なリソース

Elasticsearch クラスタを作成する

  1. 作業ディレクトリと、main.tf という名前の構成ファイルを作成します。次のコードは、Elasticsearch クラスタと関連する VPC、セキュリティグループ、および vSwitch を作成します。次のコードを main.tf 構成ファイルにコピーします。

    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",
      }
    }
  2. 次のコマンドを実行して、Terraform ランタイム環境を初期化します。

    terraform init

    次の情報が返された場合、Terraform は初期化されています。

    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.
  3. 次のコマンドを実行して、Elasticsearch クラスタを作成します。

    terraform apply

    実行中に、プロンプトが表示されたら yes と入力し、[enter] キーを押します。コマンドが完了するまで待ちます。次の情報が返された場合、クラスタは作成されています。

    You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
    
    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.
  4. 結果を確認します。

    terraform show コマンドを実行する

    作業ディレクトリで次のコマンドを実行して、Terraform を使用して作成されたクラスタの詳細をクエリします。

    terraform show

    image

    Elasticsearch コンソールにログインする

    Elasticsearch コンソール にログインして、作成されたクラスタを表示します。

    image

リソースのリリース

Terraform を使用して作成または管理された上記の不要になったリソースをリリースするには、次のコマンドを実行します。terraform destroy コマンドの詳細については、共通コマンド を参照してください。

terraform destroy

説明

サンプルコードは、数回クリックするだけで実行できます。詳細については、Terraform Explorer にアクセスしてください。

サンプルコード

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

より完全な例を表示する場合は、より完全な例 ページの対応するサービスのディレクトリにアクセスしてください。