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 バージョンは古い可能性があり、一部の機能が正常に動作しない原因となることがあります。新しいバージョンに切り替えることを推奨します。
現在の Terraform バージョンを確認します。バージョンが 1.2 より前の場合は、新しいバージョンに切り替えることを推奨します。
terraform version
Cloud Shell に組み込まれている Terraform のバージョンを表示します。
tfenv list
特定の Terraform バージョンに切り替えます。
tfenv use <terraform_version>たとえば、バージョン 1.9.5 に切り替えるには、次のようにします。

Terraform テンプレートのコンパイル
このトピックでは、Terraform を使用した ECS インスタンスの作成を例に、Terraform がリソースをオーケストレーションする方法と、Terraform コマンドを使用してリソースを作成および破棄する方法について説明します。
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 }構成を初期化するには、
terraform initコマンドを実行します。構成をプレビューするには、
terraform planコマンドを実行します。
ECS インスタンスを作成するには、
terraform applyコマンドを実行します。実行結果で「Apply complete!」が返された場合、リソースは正常に作成されています。
このインスタンスが不要になった場合は、
terraform destroyコマンドを実行して作成したリソースを解放できます。