Terraformは、開発者が宣言型言語を使用してインフラストラクチャ構成を定義および管理するために使用できるオープンソースのコードとしてのインフラストラクチャ (IaC) ツールです。 Terraformは、Elastic Compute Service (ECS) リソースを簡単に作成、変更、または削除する方法を提供します。 Terraformは、手動操作の複雑さとエラーを軽減し、インフラストラクチャの管理性と保守性を向上させます。 このトピックでは、Terraformをインストールおよび設定し、Terraformを使用してECSインスタンスを作成する方法について説明します。
詳細については、「」をご参照ください。Terraformとは何ですか?
サポートされているリソース
リソース: インフラストラクチャコンポーネントを定義するために使用される、ECSインスタンス、仮想マシン (VM) 、セキュリティグループなどの新しいリソース。
データソース: 既存のインフラストラクチャコンポーネントに関する情報を照会および取得できるソース。 Terraform設定で情報を指定して、リソースを参照または設定できます。
Terraformをインストールし、Terraformの権限を設定する
Terraformをオンプレミスにインストールおよび設定する
Terraformをオンプレミスで使用するには、Terraformをインストールして事前設定する必要があります。 詳細については、「ローカルPCでのTerraformのインストールと設定」をご参照ください。
権限管理の柔軟性とセキュリティを高めるために、RAMユーザーの作成と権限付与を推奨します。
RAM コンソールにログインします。
Terraformという名前のRAMユーザーを作成し、そのユーザーのAccessKeyペアを作成します。 RAM ユーザーの作成
RAM ユーザーを承認します。 詳細については、「RAM ユーザーへの権限の付与」をご参照ください。
認証用のID情報を保存する環境変数を追加します。
AccessKeyペアページに移動し、AccessKeyペアを作成して表示します。
環境変数により、Terraformテンプレートの実行時にID情報を取得して認証できるようになります。 これにより、通話失敗のリスクが排除されます。
TerraformのインストールとTerraformのアクセス許可の設定を必要とせずにCloud Shellを使用する
Terraformをインストールしない場合は、Cloud Shellを使用します。
Alibaba CloudのCloud Shellは、Terraformに付属する無料のO&Mサービスで、認証資格情報が設定されています。 Cloud ShellでTerraformコマンドを実行できます。 詳細については、「Cloud ShellでのTerraformの使用」をご参照ください。
Cloud ShellでTerraformを使用すると、Cloud Shellの破壊機能によりデータが失われます。 デバッグ操作など、Cloud Shellで簡単かつ迅速なTerraform操作を実行することを推奨します。 詳細については、「制限事項」をご参照ください。
Terraformを使用したECSリソースの作成と管理
このセクションでは、Terraformを使用してECSインスタンスを作成する方法について説明します。
サンプルコード
OpenAPI Explorerでコードをデバッグおよび実行できます。 OpenAPI Explorer にログインします。
resource "alicloud_vpc" "vpc" {
vpc_name = "tf_test_foo"
cidr_block = "172.16.0.0/12"
}
resource "alicloud_vswitch" "vsw" {
vpc_id = alicloud_vpc.vpc.id
cidr_block = "172.16.0.0/21"
zone_id = "cn-beijing-f"
}
resource "alicloud_security_group" "default" {
name = "default"
vpc_id = alicloud_vpc.vpc.id
}
resource "alicloud_security_group_rule" "allow_tcp" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = alicloud_security_group.default.id
cidr_ip = "192.168.0.0/16"
}
resource "alicloud_instance" "instance" {
# cn-beijing
availability_zone = "cn-beijing-f"
security_groups = alicloud_security_group.default.*.id
# series III
instance_type = "ecs.e-c1m1.large"
system_disk_category = "cloud_essd"
image_id = "aliyun_2_1903_x64_20G_alibase_20240628.vhd"
instance_name = "test_foo"
vswitch_id = alicloud_vswitch.vsw.id
internet_max_bandwidth_out = 10
password = "Terraform@Example"
}
output "public_ip" {
value = alicloud_instance.instance.public_ip
}
関連ドキュメント
Terraformユースケースの詳細については、「ユースケース」をご参照ください。
一般的なTerraformコマンドの詳細については、「一般的なコマンド」をご参照ください。
ECSインスタンスの作成方法については、「ECSインスタンスのプロビジョニング方法」をご参照ください。
Terraformは、ROS (Resource Orchestration service) のマネージドサービスとして使用できます。 Terraformテンプレートを作成して、Alibaba Cloud、Amazon Web Services (AWS) 、またはMicrosoft Azureのリソースを定義し、リソースパラメーターを指定し、リソースの依存関係を設定できます。 詳細については、「Terraformテンプレートの作成」をご参照ください。