Alibaba Cloud Shell には Terraform がプリインストールされており、Infrastructure as Code (IaC) を使用してクラウドインフラストラクチャをプロビジョニングするためのブラウザベースの環境を提供します。このガイドでは、Cloud Shell で Terraform を使用して Elastic Compute Service (ECS) インスタンスを作成する手順を説明します。
このチュートリアルのサンプルコードはワンクリックで実行できます。 OpenAPI Explorer でコードを実行。
前提条件
セキュリティのため、最小権限の原則に従って Resource Access Management (RAM) ユーザーを使用してください。次の JSON を使用してカスタムポリシーを作成し、ご利用の RAM ユーザーにアタッチします。このポリシーは、このチュートリアルに必要な権限のみを付与します。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudshell:StartSession",
"cloudshell:StopSession",
"cloudshell:GetSession",
"cloudshell:ListSessions",
"ecs:CreateInstance",
"ecs:RunInstances",
"ecs:StartInstance",
"ecs:StopInstance",
"ecs:RebootInstance",
"ecs:TerminateInstance",
"ecs:ModifyInstanceAttribute",
"ecs:DescribeInstances",
"ecs:AllocatePublicIpAddress",
"ecs:AssignPrivateIpAddresses",
"ecs:UnassignPrivateIpAddresses",
"ecs:ModifyInstanceVpcAttribute",
"ecs:ResetInstance",
"ecs:AttachKeyPair",
"ecs:DetachKeyPair",
"ecs:CreateSecurityGroup",
"ecs:DeleteSecurityGroup",
"ecs:AuthorizeSecurityGroup",
"ecs:RevokeSecurityGroup",
"ecs:CreateVpc",
"ecs:DeleteVpc",
"ecs:CreateVSwitch",
"ecs:DeleteVSwitch",
"ecs:CreateDisk",
"ecs:DeleteDisk",
"ecs:AttachDisk",
"ecs:DetachDisk",
"ecs:CreateSnapshot",
"ecs:DeleteSnapshot",
"ecs:CreateImage",
"ecs:DeleteImage"
],
"Resource": "*"
}
]
}使用リソース
alicloud_vpc:分離されたネットワーク環境を提供するために Virtual Private Cloud (VPC) を作成します。
alicloud_vswitch:VPC 内に vSwitch (サブネット) を作成し、クラウドリソースを接続します。
alicloud_security_group:ご利用の ECS インスタンスの仮想ファイアウォールとして機能するセキュリティグループを作成します。
alicloud_instance:コンピューティング能力を提供するために ECS インスタンスをプロビジョニングします。
alicloud_security_group_rule:セキュリティグループのインバウンドまたはアウトバウンドトラフィックを制御するルールを定義します。
操作手順
Cloud Shell の起動
Cloud Shell は 2 つの方法で起動できます:
Alibaba Cloud 管理コンソールから:上部のナビゲーションバーにある Cloud Shell アイコンをクリックします。

スタンドアロンアプリケーションとして: https://shell.aliyun.com に直接移動します。
Cloud Shell を起動すると、ログインしている ID に基づいて認証情報が自動的に CLI に設定されます。デフォルトの認証情報設定ファイルを変更または削除しないでください。
初めて Cloud Shell を起動する際には、仮想マシン (VM) インスタンスがプロビジョニングされるため、少し時間がかかる場合があります。2 回目以降のセッションはより速く開始されます。
最大 5 つの同時ウィンドウを開くことができます。すべてのセッションは、同じ基盤となる VM インスタンスを共有します。
クラウドリソースの作成
Cloud Shell で Terraform 設定ファイルを作成します。
次のコマンドを実行して、プロジェクトディレクトリと
main.tfという名前の設定ファイルを作成します:mkdir terraform-project cd terraform-project touch main.tfvimなどのテキストエディターを使用して、次のコードをmain.tfファイルに追加します。この設定では、VPC、vSwitch、セキュリティグループ、ECS インスタンスといった必要なリソースを定義します。provider "alicloud" { region = var.region_id } variable "region_id" { default = "cn-shanghai" } variable "available_disk_category" { default = "cloud_efficiency" } variable "available_resource_creation" { default = "VSwitch" } variable "vpc_name" { default = "tf_test_fofo" } variable "vpc_cidr_block" { default = "172.16.0.0/12" } variable "vswitch_cidr_block" { default = "172.16.0.0/21" } variable "security_group_name" { default = "default" } variable "instance_type" { default = "ecs.n4.large" } variable "image_id" { default = "ubuntu_18_04_64_20G_alibase_20190624.vhd" } variable "instance_name" { default = "test_fofo" } variable "internet_max_bandwidth_out" { default = 10 } variable "port_range" { default = "1/65535" } variable "priority" { default = 1 } variable "cidr_ip" { default = "0.0.0.0/0" } data "alicloud_zones" "default" { available_disk_category = var.available_disk_category available_resource_creation = var.available_resource_creation } resource "alicloud_vpc" "vpc" { vpc_name = var.vpc_name cidr_block = var.vpc_cidr_block } resource "alicloud_vswitch" "vsw" { vpc_id = alicloud_vpc.vpc.id cidr_block = var.vswitch_cidr_block zone_id = data.alicloud_zones.default.zones[0].id } resource "alicloud_security_group" "default" { name = var.security_group_name vpc_id = alicloud_vpc.vpc.id } 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 = var.available_disk_category image_id = var.image_id instance_name = var.instance_name vswitch_id = alicloud_vswitch.vsw.id internet_max_bandwidth_out = var.internet_max_bandwidth_out } resource "alicloud_security_group_rule" "allow_all_tcp" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = var.port_range priority = var.priority security_group_id = alicloud_security_group.default.id cidr_ip = var.cidr_ip }Terraform の作業ディレクトリを初期化します。
terraform init期待される出力:

terraform applyを実行して ECS インスタンスを作成します。プロンプトが表示されたら、yesと入力して [Enter] キーを押します。terraform apply期待される出力:

デプロイの確認
リソースが作成されたことは、2 つの方法で確認できます:
コマンドラインから
terraform show コマンドを実行して現在の状態を検査し、作成したリソースの属性 (インスタンス ID やパブリック IP など) を確認します。
terraform show
ECS コンソールから
ECS コンソールに移動し、インスタンスが作成され、実行中であることを確認します。

リソースのクリーンアップ
将来の課金を避けるために、作成したリソースを解放します。プロンプトが表示されたら、yes と入力して確定します。
terraform destroyterraform destroy コマンドの詳細については、「共通コマンド」をご参照ください。
完全なサンプルコード
サンプルコードはワンクリックで実行できます。 OpenAPI Explorer でコードを実行。
サンプルコード
Terraform バージョンの切り替え
Cloud Shell は tfenv を使用して、インストールされている複数の Terraform バージョンを管理します。プロジェクトで異なるバージョンが必要な場合は、デフォルトのバージョンから切り替えることができます。Cloud Shell のデフォルトの Terraform バージョンは 0.12.31 です。
Cloud Shell で利用可能な Terraform のバージョンをリスト表示します。
tfenv list現在のセッションで別のバージョンに切り替えます。
tfenv use <terraform_version>