All Products
Search
Document Center

Cloud Shell:Gunakan Terraform di Cloud Shell untuk mengelola instans ECS

Last Updated:Feb 27, 2026

Terraform telah dipra-instal di Alibaba Cloud Shell, menyediakan lingkungan berbasis browser untuk menyediakan infrastruktur cloud Anda menggunakan Infrastructure as Code (IaC). Panduan ini memandu Anda melalui proses pembuatan instans Elastic Compute Service (ECS) menggunakan Terraform di Cloud Shell.

Catatan

Anda dapat menjalankan kode contoh dalam tutorial ini dengan sekali klik. Jalankan kode di OpenAPI Explorer.

Prasyarat

Demi keamanan, gunakan pengguna Resource Access Management (RAM) dengan prinsip hak istimewa minimal. Buat kebijakan kustom dengan JSON berikut dan sambungkan ke pengguna RAM Anda. Kebijakan ini hanya memberikan izin yang diperlukan untuk tutorial ini. Untuk informasi selengkapnya, lihat Berikan izin kepada pengguna 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": "*"
    }
  ]
}

Sumber daya yang digunakan

  • alicloud_vpc: Membuat virtual private cloud (VPC) untuk menyediakan lingkungan jaringan terisolasi.

  • alicloud_vswitch: Membuat vSwitch (subnet) di dalam VPC untuk menghubungkan sumber daya cloud.

  • alicloud_security_group: Membuat security group untuk bertindak sebagai firewall virtual bagi instans ECS Anda.

  • alicloud_instance: Menyediakan instans ECS untuk memberikan kapasitas komputasi.

  • alicloud_security_group_rule: Menentukan aturan untuk mengontrol lalu lintas inbound atau outbound untuk security group.

Prosedur

Mulai Cloud Shell

Anda dapat memulai Cloud Shell dengan dua cara:

Catatan
  • Saat Anda memulai Cloud Shell, CLI secara otomatis dikonfigurasi dengan kredensial berdasarkan identitas login Anda. Jangan ubah atau hapus file konfigurasi kredensial default.

  • Pertama kali Anda memulai Cloud Shell, sebuah instans mesin virtual (VM) disediakan untuk Anda, yang mungkin memerlukan beberapa saat. Sesi berikutnya akan dimulai lebih cepat.

  • Anda dapat membuka hingga lima jendela secara bersamaan. Semua sesi berbagi instans VM yang sama.

Buat sumber daya cloud

  1. Buat file konfigurasi Terraform di Cloud Shell.

    Jalankan perintah berikut untuk membuat direktori proyek dan file konfigurasi bernama main.tf:

    mkdir terraform-project
    cd terraform-project 
    touch main.tf

    Gunakan editor teks seperti vim untuk menambahkan kode berikut ke file main.tf. Konfigurasi ini menentukan sumber daya yang diperlukan: VPC, vSwitch, security group, dan instans 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
    }
  2. Inisialisasi direktori kerja Terraform Anda.

    terraform init

    Output yang diharapkan:image

  3. Jalankan terraform apply untuk membuat instans ECS. Saat diminta, masukkan yes dan tekan Enter.

    terraform apply

    Output yang diharapkan:image

Verifikasi penerapan

Anda dapat memverifikasi bahwa sumber daya telah dibuat dengan dua cara:

Dari command line

Jalankan perintah terraform show untuk memeriksa status saat ini dan melihat atribut sumber daya yang telah Anda buat, seperti ID instans dan IP publik.

terraform show

image

Dari Konsol ECS

Buka Konsol ECS dan verifikasi bahwa instans telah dibuat dan sedang berjalan.

image

Bersihkan sumber daya

Untuk menghindari biaya di masa mendatang, lepaskan sumber daya yang telah Anda buat. Saat diminta, konfirmasi dengan mengetik yes.

terraform destroy

Untuk informasi selengkapnya tentang perintah terraform destroy, lihat Perintah umum.

Kode contoh lengkap

Catatan

Anda dapat menjalankan kode contoh dengan sekali klik. Jalankan kode di OpenAPI Explorer.

Kode contoh

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
}

Ganti versi Terraform

Cloud Shell menggunakan tfenv untuk mengelola beberapa versi Terraform yang terinstal. Anda dapat beralih dari versi default jika proyek Anda memerlukan versi yang berbeda. Versi Terraform default di Cloud Shell adalah 0.12.31.

  1. Daftar versi Terraform yang tersedia di Cloud Shell.

tfenv list
  1. Beralih ke versi berbeda untuk sesi saat ini.

tfenv use <terraform_version>

Referensi