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

Terraform:Windows で Terraform を使用する

最終更新日:Oct 16, 2025

このトピックでは、Windows で Terraform を使用して Alibaba Cloud リソースを迅速に作成する方法について説明します。

Terraform を使用して、コードとしてのインフラストラクチャ (IaC) を管理できます。手順には、次のステップが含まれます。

  1. Terraform のインストール: システムが Terraform コマンドを検出して実行できることを確認します。

  2. Terraform 構成ファイルの作成: 構成ファイルは Terraform の中核です。VPC、ECS インスタンス、OSS バケットなどのリソースの作成、構成、依存関係を記述するために使用されます。

  3. リソースの初期化と作成: これは、インフラストラクチャ設計を現実のものにするための重要なステップです。

  4. リソースの表示と管理: デプロイ後、インフラストラクチャ環境を表示および管理して、最新の要件と設計を満たしていることを確認できます。

  5. リソースの破棄: リソースが不要になったら、破棄できます。

1. Terraform のインストール

  1. Terraform の公式サイトにアクセスし、お使いの Windows オペレーティングシステム用の Terraform バイナリファイルをダウンロードして、ファイルを解凍します。

    image

  2. Terraform のインストールパスを Path システム環境変数に追加します。

    1. デスクトップで、[PC] を右クリックし、[プロパティ] > [システムの詳細設定] > [環境変数] > [システム環境変数]/[ユーザー環境変数] を選択します。

    2. [システム環境変数]/[ユーザー環境変数] セクションで、[Path] をクリックし、[編集] > [新規] を選択して、ファイルが配置されているフォルダのパスを入力し、[OK] をクリックします。

  3. インストールを検証します。Win+R を押し、cmd と入力して [OK] をクリックし、コマンドプロンプトを開きます。terraform --version コマンドを実行します。出力が次のようであれば、インストールは成功です。

    Terraform v1.9.3
    on windows_amd64
    

2. Terraform 構成ファイルの作成

構成ファイルは Terraform の中核です。VPC、ECS インスタンス、OSS バケットなど、クラウドまたはオンプレミスにデプロイするインフラストラクチャリソースを定義するために使用されます。

  1. ecs という名前の新しいフォルダを作成します。このフォルダに、main.tf という名前の Terraform 構成ファイルを作成します。

    各 Terraform プロジェクトに独立した作業ディレクトリを作成することで、リソースの整理が明確になり、状態ファイルの難読化が防止され、バージョン管理とチームコラボレーションが容易になり、環境の隔離とモジュール管理の実装に役立ちます。このプラクティスにより、構成管理の保守性とセキュリティが向上します。

  2. Terraform 構成ファイルを作成します。次の例は、ECS インスタンスを作成する方法を示しています。構成ファイルでは、ECS インスタンスとその依存リソース (VPC やセキュリティグループなど) をコード化された方法で定義します。便宜上、次のコードを main.tf ファイルにコピーできます。

    重要
    • この例の ECS インスタンスは、従量課金方式を使用しています。リソースが作成されると課金されます。

    • この例では、Terraform 認証に環境変数を使用しています。詳細については、「Terraform の身分認証」をご参照ください。

    ECS インスタンスの作成に必要なリソースは次のとおりです。

    リソース

    説明

    alicloud_vpc

    VPC タイプのインスタンスを作成します

    alicloud_vswitch

    vSwitch インスタンスを作成します

    alicloud_security_group

    セキュリティグループインスタンスを作成します

    alicloud_security_group_rule

    セキュリティグループのインバウンドおよびアウトバウンドアクセスルールを作成します

    alicloud_instance

    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 リソースの作成

  1. terraform plan コマンドを実行して、実行計画を作成します。この計画には、`terraform apply` コマンドを実行したときに作成、変更、または破棄されるすべてのリソースの詳細が表示されます。

    image

  2. terraform apply コマンドを実行すると、terraform plan コマンドによって生成された実行計画に基づいてリソースが作成されます。作成プロセス中に、リソースの作成を続行するように求められたら、yes と入力する必要があります。変数値の受け渡しに関する詳細については、「変数」をご参照ください。

    image

4. リソースの表示と管理

デプロイ後、インフラストラクチャ環境を管理および保守して、最新の要件と設計を満たしていることを確認できます。

4.1 リソースの表示

  • terraform show コマンドを実行して、リソースの詳細を表示します。

    image

  • terraform state list コマンドを実行して、作成されたすべてのリソースを一覧表示します。

    image

  • terraform state show <resource_type>.<resource_name> コマンドを実行して、特定のリソースの詳細を表示します。

    image

  • Alibaba Cloud 管理コンソールで作成されたリソースに関する情報を表示します。

4.2 リソースの管理

Terraform がリソースを作成および変更した後、リソースのステータスとプロパティ情報を terraform.tfstate ファイルに保存します。terraform state コマンドを使用して状態を管理できます。詳細については、「状態の原則の概要」をご参照ください。

4.3 リソースの変更

  1. 構成ファイル (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"
    }
  2. terraform plan コマンドを実行して、変更をプレビューします。

    image

  3. 変更が期待どおりであれば、terraform apply コマンドを実行して、インフラストラクチャに変更を適用します。Terraform は確認を求めます。yes と入力して Enter キーを押し、変更を適用します。

    image

5. リソースの破棄

リソースが不要になったら、terraform destroy コマンドを実行して、作成したすべてのリソースを破棄できます。

image

参考資料