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

Elasticsearch:Terraform を使用した Alibaba Cloud Elasticsearch クラスターの管理

最終更新日:Mar 01, 2026

Terraform を使用すると、インフラストラクチャをコードとして定義し、繰り返し可能かつバージョン管理された方法で Elasticsearch クラスターを作成・管理できます。本チュートリアルでは、単一の Terraform 構成ファイルを使用して Alibaba Cloud Elasticsearch クラスターおよびその必要となるネットワークリソースを作成します。

サンプルコードを数回のクリックで実行するには、Terraform Explorer をご利用ください。

前提条件

  • 最小限の権限を持つ RAM ユーザー。 Alibaba Cloud アカウントの AccessKey ペアが漏洩するリスクを低減するため、必要な権限のみを付与した RAM ユーザーをご利用ください。詳細については、「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 にログインしてください。

    • Cloud Shell 認証情報が事前に設定済みの状態で Terraform がプリインストールされています。Terraform コマンドを直接実行できます。

    • オンプレミスマシン Terraform をローカルにインストール・設定します。特定のネットワーク要件やカスタム開発環境に適しています。

重要

本チュートリアルでは課金対象のリソースが作成されます。不要になった場合は、リソースをリリースまたはサブスクライブ解除してください。

作成されるリソース

リソースTerraform リソースタイプ説明
仮想プライベートクラウド(VPC)alicloud_vpcElasticsearch クラスターのネットワーク隔離
セキュリティグループalicloud_security_groupネットワークアクセス制御ルール
vSwitchalicloud_vswitchVPC 内のサブネット
Elasticsearch クラスターalicloud_elasticsearch_instance管理型 Alibaba Cloud Elasticsearch クラスター(課金対象)。詳細については、「課金の概要」をご参照ください。

手順 1:Terraform 構成の記述

  1. 作業ディレクトリを作成し、その中に main.tf という名前の構成ファイルを作成します。

  2. 以下のコードを main.tf ファイルにコピーします。この構成では、VPC、セキュリティグループ、vSwitch、および Elasticsearch クラスターが作成されます。以下の表では、Elasticsearch クラスターのパラメーターについて説明します:

    重要

    .tf ファイル内に AccessKey の認証情報をハードコードしないでください。代わりに、環境変数(ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET)を使用するか、Terraform プロバイダーのドキュメントに従って認証情報を設定してください。このファイルをバージョン管理システムにコミットする場合、ファイル内の認証情報が漏洩するリスクがあります。

    パラメーター説明
    instance_charge_typePostPaid従量課金方式。
    data_node_amount2クラスター内のデータノード数。
    data_node_specelasticsearch.sn2ne.largeデータノードのインスタンスタイプ。
    data_node_disk_size20各データノードのディスクサイズ(GB)。
    data_node_disk_typecloud_ssdデータノードのディスクタイプ。
    data_node_disk_performance_levelPL1cloud_ssd ディスクのパフォーマンスレベル。
    version6.7_with_X-PackX-Pack が有効化された Elasticsearch バージョン。
    zone_count1クラスターデプロイに使用するゾーン数。
    master_node_specelasticsearch.sn2ne.large専用 Master ノードのインスタンスタイプ。
    kibana_node_specelasticsearch.sn2ne.largeKibana ノードのインスタンスタイプ。
       # ------------------------------------
       # 変数
       # ------------------------------------
       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 "alicloud" {
         region = var.region
       }
    
       # vSwitch の作成および cloud_ssd ディスクをサポートする利用可能なゾーンを照会
       data "alicloud_zones" "default" {
         available_resource_creation = "VSwitch"
         available_disk_category     = "cloud_ssd"
       }
    
       # リソース名の重複を回避するためのランダムな接尾辞を生成
       resource "random_integer" "default" {
         min = 10000
         max = 99999
       }
    
       # ------------------------------------
       # ネットワークリソース
       # ------------------------------------
    
       # VPC の作成
       resource "alicloud_vpc" "vpc" {
         vpc_name   = "vpc-test_${random_integer.default.result}"
         cidr_block = var.vpc_cidr_block
       }
    
       # VPC 内のセキュリティグループの作成
       resource "alicloud_security_group" "group" {
         name   = "test_${random_integer.default.result}"
         vpc_id = alicloud_vpc.vpc.id
       }
    
       # 最初に利用可能なゾーン内に vSwitch を作成
       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 クラスター
       # ------------------------------------
       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"                         # データノードのディスクサイズ(GB)
         data_node_disk_type  = "cloud_ssd"                  # データノードのディスクタイプ
         vswitch_id           = alicloud_vswitch.vswitch.id  # 作成済みの vSwitch 内にデプロイ
         password             = "es_password_01"             # クラスターへのアクセスパスワード
         version              = "6.7_with_X-Pack"            # X-Pack が有効化された Elasticsearch バージョン
         master_node_spec     = var.node_spec                # 専用 Master ノードのインスタンスタイプ
         zone_count           = "1"                          # シングルゾーンデプロイ
         master_node_disk_type = "cloud_ssd"                 # Master ノードのディスクタイプ
         kibana_node_spec     = var.node_spec                # Kibana ノードのインスタンスタイプ
         data_node_disk_performance_level = "PL1"            # SSD のパフォーマンスレベル
    
         tags = {
           Created = "TF",
           For     = "example",
         }
       }

手順 2:Terraform の初期化

作業ディレクトリで以下のコマンドを実行し、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 キーを押します。クラスターの作成には通常 10~30 分かかります。

以下の出力が表示された場合、すべてのリソースが正常に作成されています:

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 show
image

Elasticsearch コンソールへのログイン

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

image

手順 5:リソースのリリース

リソースが不要になった場合、以下のコマンドを実行して Terraform で作成されたすべてのリソースをリリースします。「terraform destroy」コマンドの詳細については、「共通コマンド」をご参照ください。

terraform destroy

プロンプトが表示されたら、yes を入力し、Enter キーを押して確認します。

完全なサンプルコード

サンプルコードを数回のクリックで実行するには、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",
  }
}

より完全なサンプルについては、GitHub の「Terraform landing zone quickstarts」をご覧ください。