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

Terraform:Cloud Shell

最終更新日:Oct 21, 2025

Alibaba Cloud Cloud Shell は、Terraform がプリインストールされ、ID 資格情報が設定されている無料の運用保守プロダクトです。Cloud Shell で Terraform コマンドを直接実行できます。

Cloud Shell へのログイン

ブラウザを開き、アドレスバーに https://shell.alibabacloud.com/ を入力して Cloud Shell にアクセスします。Cloud Shell のアクセスと使用方法の詳細については、「Cloud Shell の使用」をご参照ください。

説明

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

Terraform バージョンの切り替え

Cloud Shell のデフォルトの Terraform バージョンは古い可能性があり、一部の機能が正常に動作しない原因となることがあります。新しいバージョンに切り替えることを推奨します。

  1. 現在の Terraform バージョンを確認します。バージョンが 1.2 より前の場合は、新しいバージョンに切り替えることを推奨します。

    terraform version

    image

  2. Cloud Shell に組み込まれている Terraform のバージョンを表示します。

    tfenv list

    image

  3. 特定の Terraform バージョンに切り替えます。

    tfenv use <terraform_version>

    たとえば、バージョン 1.9.5 に切り替えるには、次のようにします。

    image

Terraform テンプレートのコンパイル

このトピックでは、Terraform を使用した ECS インスタンスの作成を例に、Terraform がリソースをオーケストレーションする方法と、Terraform コマンドを使用してリソースを作成および破棄する方法について説明します。

  1. main.tf という名前の Terraform テンプレートファイルを作成し、vim コマンドを使用して直接編集します。

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

    次の Terraform のサンプルコードを 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
    }
  2. 構成を初期化するには、terraform init コマンドを実行します。

  3. 構成をプレビューするには、terraform plan コマンドを実行します。image

  4. ECS インスタンスを作成するには、terraform apply コマンドを実行します。実行結果で「Apply complete!」が返された場合、リソースは正常に作成されています。image.png

  5. このインスタンスが不要になった場合は、terraform destroy コマンドを実行して作成したリソースを解放できます。