-
AWSアカウントのセットアップ: まず、AWSのアカウントを作成し、適切な権限を持つIAMユーザーを作成します。IAMユーザーのアクセスキーとシークレットキーを取得し、TerraformがAWSリソースを作成できるように設定します。
-
VPCの作成: Terraformを使用して、VPCを作成します。以下は、VPCの設定を記述するTerraformコードの例です。
resource "aws_vpc" "my_vpc" {
cidr_block = "10.0.0.0/16"
instance_tenancy = "default"
}
resource "aws_subnet" "my_subnet" {
vpc_id = aws_vpc.my_vpc.id
cidr_block = "10.0.0.0/24"
availability_zone = "us-east-1a"
}
- Elasticsearchクラスタの作成: 次に、Elasticsearchクラスタを作成します。以下は、TerraformでElasticsearchドメインを作成するためのコード例です。
resource "aws_elasticsearch_domain" "my_es_domain" {
domain_name = "my-elasticsearch-domain"
elasticsearch_version = "7.10"
cluster_config {
instance_type = "t2.small.elasticsearch"
instance_count = 2
}
ebs_options {
ebs_enabled = true
volume_size = 10
}
access_policies = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:${var.region}:${var.account_id}:domain/my-elasticsearch-domain/*"
}
]
}
EOF
}
- セキュリティグループの設定: Elasticsearchクラスタにアクセスするために、適切なセキュリティグループを設定する必要があります。以下は、Terraformでセキュリティグループを作成する例です。
resource "aws_security_group" "my_sg" {
name = "elasticsearch-sg"
description = "Allow inbound access to Elasticsearch cluster"
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_security_group_rule" "my_sg_rule" {
security_group_id = aws_security_group.my_sg.id
type = "ingress"
from_port = 443
to_port = 443
protocol = "tcp"
source_security_group_id = aws_security_group.my_sg.id
}
これで、AWSのVPCベースのElasticsearchをTerraformで構築するための基本的な手順とコード例をご紹介しました。これらのステップを実行することで、独自のElasticsearchクラスタをセットアップできます。必要に応じて、他の設定オプションや構成も調整することができます。