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

Terraform:Terraform を使用したリソースの作成

最終更新日:Jun 25, 2026

Terraform は、宣言的な設定ファイルを使用して Alibaba Cloud リソースの完全なライフサイクルを管理できるオープンソースの Infrastructure as Code (IaC) ツールです。このトピックでは、ビジュアルインターフェイスまたはコマンドラインを使用して、最初の Alibaba Cloud リソースを作成するための Terraform のクイックスタート方法について説明します。

方法の選択

Terraform には、ビジュアルとコマンドラインの 2 つの方法があります。ニーズに合った方法を選択してください。

方法

シナリオ

メリット

制限

Terraform Explorer

初回使用、パラメーターに不慣れな場合、迅速なデバッグ

グラフィカルなフォームを使用してリソースを設定します。コーディングは不要です。

単一リソースの操作のみをサポートします。

Terraform CLI

迅速な評価、本番環境、複雑なオーケストレーション

複数リソースのオーケストレーションと状態管理をサポートします。

CLI 環境が必要です。

CLI 方式を選択した場合は、Cloud Shell またはローカルインストールを使用して環境を準備します。

Terraform Explorer の使用

Terraform Explorer は、Terraform をベースに構築された Alibaba Cloud のオンラインデバッグツールです。フォームから Terraform の設定ファイルを生成し、オンラインで実行します。詳細については、「Explorer の概要」をご参照ください。

このセクションでは、Virtual Private Cloud (VPC) の作成を例に、Terraform Explorer を使用する 2 つの方法、カスタムパラメーターとサンプルテンプレートについて説明します。

カスタムパラメーターを使用したリソースの作成

ニーズに基づいてパラメーターを設定するには、次の手順を実行します:

  1. Terraform Explorer にログインします。[Product]Resource Type を選択します。[Resource Documentation] を参照してパラメーターを入力し、Initiate をクリックします。

    VPC を作成するための主要なパラメーターを以下に示します。パラメーターの詳細については、「alicloud_vpc」をご参照ください。

    パラメーター名

    説明

    値の例

    vpc_name

    VPC 名

    tf-test-vpc

    cidr_block

    VPC のプライベート CIDR ブロック

    192.168.0.0/16

    description

    VPC の説明

    Terraform を使用して作成された VPC です。

  2. Template Details タブで、パラメーターが正しいことを確認し、Plan をクリックして実行計画を表示します。

    terraform {
      required_providers {
        alicloud = {
          source = "aliyun/alicloud"
          version = "1.231.0"
        }
      }
    }
    provider "alicloud" {
      region  = "cn-beijing"
    }
    resource "alicloud_vpc" "default" {
      cidr_block  = "192.168.0.0/16"
      description = "Terraform を使用して作成された VPC です。"
      vpc_name    = "tf-test-vpc"
    }
  3. プレビューの詳細 タブで、作成されるリソースに関する情報を確認し、[Execute] をクリックします。

    プレビュー結果には [Success] ステータスとメッセージ Plan: 1 to add, 0 to change, 0 to destroy が表示されます。これは、alicloud_vpc.default リソースが作成されることを示します。cidr_block192.168.0.0/16 で、descriptionTerraform を使用して作成された VPC です。となります。Terraform は実行後に他の属性を生成します。

  4. 実行の詳細 タブで結果を表示します。実行が成功すると、メッセージ「Apply complete! Resources: 1 added, 0 changed, 0 destroyed.」が表示されます。実行が失敗した場合は、エラーメッセージに基づいてパラメーターを修正し、再試行してください。

  5. Resource Details タブで、作成されたリソースに関する情報を表示します。

    リソースアドレスは alicloud_vpc.default です。このページには、以下を含む VPC のさまざまな属性が表示されます:

    • cidr_block192.168.0.0/16

    • nametf-test-vpc

    • descriptionTerraform を使用して作成された VPC です。

    • create_time: VPC が作成された時刻。

    • classic_link_enabledenable_ipv6 などのネットワーク設定。

    • resource_group_idroute_table_idrouter_id などの関連リソース情報。

  6. (任意) リソースの変更:パラメーターを調整して Plan & Apply をクリックし、手順 2 から 4 を繰り返します。更新が成功すると、メッセージ「Apply complete! Resources: 0 added, 1 changed, 0 destroyed.」が表示されます。

  7. (任意) リソースの破棄:実行の詳細 タブで Destroy Resources をクリックします。次に、プレビューの詳細 タブで [Execute] をクリックします。

    操作が完了すると、[Execution Details] タブに [Success] ステータスとメッセージ Apply complete! Resources: 0 added, 0 changed, 1 destroyed が表示され、1 つの VPC リソースが破棄されたことを確認できます。

サンプルテンプレートを使用したリソースの作成

リソースのパラメーターに不慣れな場合や、すぐに始めたい場合は、Terraform Explorer のサンプルテンプレートを使用できます。

  1. Terraform Explorer にログインします。対応する [Product]Resource Type[Sample Template] を選択し、Initiate をクリックします。右側の [Sample Template] タブでテンプレートの詳細を表示できます。

    左側の [Input Parameters] エリアで、テンプレートで必要なパラメーターを表示および変更できます。たとえば、[name] パラメーターを terraform-example に設定できます。また、[Add Parameter] をクリックして、さらにパラメーターを追加することもできます。

  2. Template Details タबで、Plan & Apply をクリックします。

    このサンプルテンプレートは Terraform 形式です。このテンプレートは alicloud_vpc リソースを定義しており、ipv6_isp を BGP に、cidr_block10.0.0.0/8 に、enable_ipv6 を true に設定するなどのパラメーターが含まれています。

  3. 実行の詳細 タブで、実行結果を表示できます。

  4. (任意) 作成したリソースを破棄するには、Destroy Resources タブの 実行の詳細 をクリックします。次に、プレビューの詳細 タブで [Execute] をクリックします。

説明

ContinueDestroy Resources などの操作は、[Call History] からも実行できます。

Terraform CLI の使用

コマンドラインから Terraform を使用するには、CLI 環境を準備し、設定ファイルを記述し、コマンドを実行してリソースを作成します。次のいずれかの方法を選択して、Terraform CLI 環境をセットアップします:

  • Cloud Shell (推奨):インストール不要。迅速な評価や学習に最適です。

  • ローカルインストール:本番環境、継続的インテグレーション、長期的な使用に最適です。

Cloud Shell

Alibaba Cloud Cloud Shell は無料の運用保守ツールです。Terraform がプリインストールされており、ID 認証情報も設定済みです。Terraform コマンドを直接実行できます。

Cloud Shell へのログイン

ブラウザを開き、Cloud Shell にアクセスします。詳細については、「Cloud Shell の使用」をご参照ください。

説明

RAM ユーザーとしてログインしてください。Alibaba Cloud アカウントのセキュリティを確保するため、必要な場合を除き、Alibaba Cloud アカウントを使用してクラウドリソースにアクセスすることは避けてください。

Terraform バージョンの切り替え

Cloud Shell のデフォルトの Terraform バージョンは古い場合があります。すべての機能が正しく動作するように、バージョン 1.2 以降に切り替えてください。

  1. 現在の Terraform バージョンを確認します:

    terraform version
    shell@Alicloud:~$ terraform version
    Terraform v0.12.31
    Your version of Terraform is out of date! The latest version
    is 1.12.2. You can update by downloading from https://www.terraform.io/downloads.html
  2. Cloud Shell で利用可能な Terraform のバージョンを一覧表示します:

    tfenv list
    shell@Alicloud:~$ tfenv list
      1.12.2
      1.9.5
      1.5.7
      1.3.7
    * 0.12.31 (set by /usr/local/tfenv/version)
  3. 特定のバージョン (例:1.12.2) に切り替えます:

    tfenv use 1.12.2
    shell@Alicloud:~$ tfenv use 1.12.2
    Switching default version to v1.12.2
    Switching completed

ローカルインストール

本番環境や複雑なオーケストレーションに最適です。まず Terraform をインストールし、ID 認証情報を設定します。

パッケージマネージャーを使用したインストール (推奨)

macOS

Homebrew を使用してインストールします:

# Homebrew でパッケージの場所を定義するために、HashiCorp のタップを追加します
brew tap hashicorp/tap
# Terraform をインストールします
brew install hashicorp/tap/terraform

最新バージョンに更新します:

# Homebrew を更新します
brew update
# Terraform をアップグレードします
brew upgrade hashicorp/tap/terraform

Windows

Chocolatey を使用してインストールします:

choco install terraform

Linux

たとえば、yum パッケージマネージャーを使用する場合:

yum install -y yum-utils
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform

手動インストール

パッケージマネージャーが利用できない場合は、手動でインストールします。

コンパイル済みバイナリの使用

  1. Terraform のウェブサイトからお使いのオペレーティングシステム用の ZIP ファイルをダウンロードします。アーカイブを展開します。

  2. terraform バイナリファイルをシステムの PATH にあるディレクトリに移動します:

    • macOS または Linux

      mv ~/Downloads/terraform /usr/local/bin/
    • Windows

      1. [コントロールパネル] > [システム] > [システムの詳細設定] > [環境変数] を開きます。

      2. [システム環境変数] で PATH を選択し、[編集] をクリックします。

      3. Terraform ディレクトリへのパスを追加します。他のエントリとはセミコロンで区切ります (例:c:\path;c:\path2)。

      4. 変更を有効にするために、新しいコマンドラインウィンドウを開きます。

ソースからのコンパイル

まず Go 開発環境をインストールする必要があります。

  1. Terraform のソースリポジトリをクローンします:

    git clone https://github.com/hashicorp/terraform.git
  2. ディレクトリに移動し、ソフトウェアをコンパイルしてインストールします。

    cd terraform
    go install

    コンパイル後、バイナリは $GOPATH/bin/ ディレクトリに配置されます。

  3. $GOPATH/bin がシステムの PATH に追加されていることを確認してください。コンパイル済みバイナリの使用の手順 2 と同じ手順です。

インストールの確認

このコマンドを実行して、Terraform が正しくインストールされていることを確認してください:

terraform version

コマンドが正常に実行され、バージョン番号が表示されれば、インストールは完了です。

例:ECS インスタンスの作成

この例では、ECS インスタンスを作成することで、VPC の作成 → vSwitch の作成 → セキュリティグループの作成 → ECS インスタンスの作成という、Terraform の完全なリソースオーケストレーションのワークフローを示します。

  1. 作業ディレクトリを作成し、Terraform 設定ファイル main.tf を作成します:

    mkdir tf-demo && cd tf-demo
    vim main.tf

    次のコードを main.tf にコピーします:

    provider "alicloud" {
      region = var.region
    }
    # リソース作成のリージョン
    variable "region" {
      default = "cn-beijing"
    }
    # ECS インスタンス名
    variable "instance_name" {
      default = "tf-cloudshell-test"
    }
    # ECS インスタンスタイプ
    variable "instance_type" {
      default = "ecs.n2.small"
    }
    # アウトバウンドパブリック帯域幅。値が 0 の場合は、パブリックネットワークアクセスがないことを意味します。
    variable "internet_bandwidth" {
      default = 10
    }
    # ECS OS イメージ
    variable "image_id" {
      default = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
    }
    # ECS システムディスクタイプ
    variable "disk_category" {
      default = "cloud_efficiency"
    }
    # ECS インスタンスのログインパスワード
    variable "password" {
      default = "TF-test@1234"
    }
    # VPC の作成
    resource "alicloud_vpc" "vpc" {
      vpc_name   = "tf_test_foo"
      cidr_block = "172.16.0.0/12"
    }
    # インスタンスタイプとディスクカテゴリに基づいてアベイラビリティーゾーンを検索
    data "alicloud_zones" "default" {
      available_disk_category     = var.disk_category
      available_resource_creation = "VSwitch"
      available_instance_type     = var.instance_type
    }
    # 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" {
      security_group_name   = "default"
      vpc_id = alicloud_vpc.vpc.id
    }
    # インバウンドセキュリティグループルールの作成
    resource "alicloud_security_group_rule" "allow_all_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           = "0.0.0.0/0"
    }
    resource "alicloud_instance" "instance" {
      # セキュリティグループのアタッチ
      security_groups = [alicloud_security_group.default.id]
      instance_type = var.instance_type
      system_disk_category = var.disk_category
      image_id = var.image_id
      instance_name = var.instance_name
      # vSwitch の指定
      vswitch_id = alicloud_vswitch.vsw.id
      internet_max_bandwidth_out = var.internet_bandwidth
      password  = var.password
    }
    重要

    この例のセキュリティグループルールは、すべての TCP ポート (1–65535) を開き、任意の IP アドレス (0.0.0.0/0) からのトラフィックを許可します。これはテスト環境でのみ使用してください。本番環境では、必要に応じてポートとソース IP アドレスを制限してください。

  2. Terraform の作業ディレクトリを初期化します:

    terraform init
  3. 実行計画をプレビューして、作成されるリソースを確認します:

    terraform plan
    shell@Alicloud:~/tf-demo$ terraform plan
    data.alicloud_zones.default: Reading...
    data.alicloud_zones.default: Read complete after 1s [id=1373912221]
    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
      + create
    Terraform will perform the following actions:
      # alicloud_instance.instance will be created
      + resource "alicloud_instance" "instance" {
          + availability_zone                  = (known after apply)
          + cpu                                = (known after apply)
          + create_time                        = (known after apply)
          + credit_specification               = (known after apply)
          + deployment_set_group_no            = (known after apply)
          + description                        = (known after apply)
          + dry_run                            = false
          + enable_jumbo_frame                 = (known after apply)
          + expired_time                       = (known after apply)
          + host_name                          = (known after apply)
          + http_endpoint                      = (known after apply)
          + http_put_response_hop_limit        = (known after apply)
          + http_tokens                        = (known after apply)
          + id                                 = (known after apply)
          + image_id                           = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
          + instance_charge_type               = (known after apply)
          + instance_name                      = "tf-cloudshell-test"
          + instance_type                      = "ecs.n2.small"
          + internet_charge_type               = (known after apply)
          + internet_max_bandwidth_in          = (known after apply)
          + internet_max_bandwidth_out         = 10
          + io_optimized                       = (known after apply)
          + ipv6_address_count                 = (known after apply)
          + ipv6_addresses                     = (known after apply)
          + key_name                           = (known after apply)
          + maintenance_action                 = (known after apply)
          + memory                             = (known after apply)
          + network_interface_id               = (known after apply)
          + network_interface_traffic_mode     = (known after apply)
          + os_name                            = (known after apply)
          + os_type                            = (known after apply)
          + password                           = (sensitive value)
          + period                             = (known after apply)
          + primary_ip_address                 = (known after apply)
  4. リソースを作成します。出力「Apply complete!」は成功を意味します:

    terraform apply
    Apply complete! Resources: 5 added, 0 changed, 0 destroyed.
  5. これらのリソースを解放するには、次を実行します:

    terraform destroy

関連ドキュメント