このトピックでは、Windows で Terraform を使用して Alibaba Cloud リソースを迅速に作成する方法について説明します。
Terraform を使用して、コードとしてのインフラストラクチャ (IaC) を管理できます。手順には、次のステップが含まれます。
Terraform のインストール: システムが Terraform コマンドを検出して実行できることを確認します。
Terraform 構成ファイルの作成: 構成ファイルは Terraform の中核です。VPC、ECS インスタンス、OSS バケットなどのリソースの作成、構成、依存関係を記述するために使用されます。
リソースの初期化と作成: これは、インフラストラクチャ設計を現実のものにするための重要なステップです。
リソースの表示と管理: デプロイ後、インフラストラクチャ環境を表示および管理して、最新の要件と設計を満たしていることを確認できます。
リソースの破棄: リソースが不要になったら、破棄できます。
1. Terraform のインストール
Terraform の公式サイトにアクセスし、お使いの Windows オペレーティングシステム用の Terraform バイナリファイルをダウンロードして、ファイルを解凍します。

Terraform のインストールパスを Path システム環境変数に追加します。
デスクトップで、[PC] を右クリックし、[プロパティ] > [システムの詳細設定] > [環境変数] > [システム環境変数]/[ユーザー環境変数] を選択します。
[システム環境変数]/[ユーザー環境変数] セクションで、[Path] をクリックし、[編集] > [新規] を選択して、ファイルが配置されているフォルダのパスを入力し、[OK] をクリックします。
インストールを検証します。Win+R を押し、
cmdと入力して [OK] をクリックし、コマンドプロンプトを開きます。terraform --versionコマンドを実行します。出力が次のようであれば、インストールは成功です。Terraform v1.9.3 on windows_amd64
2. Terraform 構成ファイルの作成
構成ファイルは Terraform の中核です。VPC、ECS インスタンス、OSS バケットなど、クラウドまたはオンプレミスにデプロイするインフラストラクチャリソースを定義するために使用されます。
ecs という名前の新しいフォルダを作成します。このフォルダに、main.tf という名前の Terraform 構成ファイルを作成します。
各 Terraform プロジェクトに独立した作業ディレクトリを作成することで、リソースの整理が明確になり、状態ファイルの難読化が防止され、バージョン管理とチームコラボレーションが容易になり、環境の隔離とモジュール管理の実装に役立ちます。このプラクティスにより、構成管理の保守性とセキュリティが向上します。
Terraform 構成ファイルを作成します。次の例は、ECS インスタンスを作成する方法を示しています。構成ファイルでは、ECS インスタンスとその依存リソース (VPC やセキュリティグループなど) をコード化された方法で定義します。便宜上、次のコードを main.tf ファイルにコピーできます。
重要この例の ECS インスタンスは、従量課金方式を使用しています。リソースが作成されると課金されます。
この例では、Terraform 認証に環境変数を使用しています。詳細については、「Terraform の身分認証」をご参照ください。
ECS インスタンスの作成に必要なリソースは次のとおりです。
リソース
説明
VPC タイプのインスタンスを作成します
vSwitch インスタンスを作成します
セキュリティグループインスタンスを作成します
セキュリティグループのインバウンドおよびアウトバウンドアクセスルールを作成します
ECS インスタンスを作成します
variable "name" { type = string default = "tf-test" } # リージョンを設定 variable "region" { type = string default = "cn-beijing" } # パブリック帯域幅。値が 0 より大きい場合、パブリック IP アドレスがインスタンスに割り当てられます。 variable "internet_max_bandwidth_out" { type = number default = 10 } # ECS インスタンスタイプを設定 variable "instance_type" { type = string default = "ecs.e-c1m1.large" } # イメージ ID を設定 variable "image_id" { default = "ubuntu_18_04_64_20G_alibase_20190624.vhd" } # タグを設定 variable "tags" { type = map(string) default = { From = "Terraform" Usage = "demo" } } provider "alicloud" { region = var.region } # ゾーン ID を取得 data "alicloud_zones" "default" { available_instance_type = var.instance_type available_resource_creation = "VSwitch" available_disk_category = "cloud_ssd" } # VPC を作成 resource "alicloud_vpc" "vpc" { vpc_name = var.name cidr_block = "172.16.0.0/12" } # vSwitch を作成 resource "alicloud_vswitch" "vsw" { vpc_id = alicloud_vpc.vpc.id cidr_block = "172.16.0.0/21" zone_id = data.alicloud_zones.default.zones[0].id } # セキュリティグループを作成 resource "alicloud_security_group" "default" { name = var.name vpc_id = alicloud_vpc.vpc.id } # セキュリティグループにインバウンドルールを追加 resource "alicloud_security_group_rule" "allow_tcp_22" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "22/22" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" } # ECS インスタンスを作成 resource "alicloud_instance" "instance" { availability_zone = data.alicloud_zones.default.zones.0.id security_groups = alicloud_security_group.default.*.id instance_type = var.instance_type system_disk_category = "cloud_essd_entry" image_id = var.image_id instance_name = var.name vswitch_id = alicloud_vswitch.vsw.id internet_max_bandwidth_out = var.internet_max_bandwidth_out tags = var.tags } output "ecs_id" { value = alicloud_instance.instance.id } output "ecs_ip" { value = alicloud_instance.instance.public_ip }
3. 初期化とリソースの作成
Terraform 構成ファイルを作成した後、リソースを作成する前に作業ディレクトリを初期化する必要があります。
3.1 Terraform の初期化
cmd ウィンドウで、ステップ 2 で作成したフォルダに切り替えてから、terraform init コマンドを実行して初期化を実行します。terraform init コマンドは、新しい Terraform プロジェクトで実行する最初のコマンドです。必要な Alibaba Cloud プロバイダープラグインやその他のさまざまなレコードファイルをダウンロードして、作業ディレクトリを初期化します。
# D ドライブに切り替え
d:
# ステップ 2 のフォルダパスに切り替えるコマンド。tool/terraform/projects/ecs はステップ 2 で作成したフォルダパスです。実際のパスに置き換えることができます。
cd tool/terraform/projects/ecs
# 初期化コマンドを実行
terraform init
3.2 リソースの作成
terraform planコマンドを実行して、実行計画を作成します。この計画には、`terraform apply` コマンドを実行したときに作成、変更、または破棄されるすべてのリソースの詳細が表示されます。
terraform applyコマンドを実行すると、terraform planコマンドによって生成された実行計画に基づいてリソースが作成されます。作成プロセス中に、リソースの作成を続行するように求められたら、yes と入力する必要があります。変数値の受け渡しに関する詳細については、「変数」をご参照ください。
4. リソースの表示と管理
デプロイ後、インフラストラクチャ環境を管理および保守して、最新の要件と設計を満たしていることを確認できます。
4.1 リソースの表示
terraform showコマンドを実行して、リソースの詳細を表示します。
terraform state listコマンドを実行して、作成されたすべてのリソースを一覧表示します。
terraform state show <resource_type>.<resource_name>コマンドを実行して、特定のリソースの詳細を表示します。
Alibaba Cloud 管理コンソールで作成されたリソースに関する情報を表示します。
4.2 リソースの管理
Terraform がリソースを作成および変更した後、リソースのステータスとプロパティ情報を terraform.tfstate ファイルに保存します。terraform state コマンドを使用して状態を管理できます。詳細については、「状態の原則の概要」をご参照ください。
4.3 リソースの変更
構成ファイル (main.tf や別の .tf ファイルなど) で、変更したいリソースの定義を修正します。たとえば、セキュリティグループに新しいインバウンドルールを追加したい場合があります。
resource "alicloud_security_group_rule" "allow_tcp_443" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "443/443" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" }terraform planコマンドを実行して、変更をプレビューします。
変更が期待どおりであれば、
terraform applyコマンドを実行して、インフラストラクチャに変更を適用します。Terraform は確認を求めます。yesと入力して Enter キーを押し、変更を適用します。
5. リソースの破棄
リソースが不要になったら、terraform destroy コマンドを実行して、作成したすべてのリソースを破棄できます。
