全部产品
Search
文档中心

Elastic Compute Service:Gunakan Terraform untuk mengasosiasikan EIP dengan ENI

更新时间:Jan 24, 2026

Elastic IP Address (EIP) adalah sumber daya alamat IP publik yang dapat Anda beli dan kelola secara independen. Setelah mengasosiasikan EIP dengan sumber daya cloud, sumber daya tersebut dapat menggunakan EIP tersebut untuk berkomunikasi dengan Internet. Misalnya, jika Anda menjalankan beberapa aplikasi pada satu Instance ECS, Anda dapat menetapkan Elastic Network Interface (ENI) sekunder terpisah beserta EIP independen untuk setiap aplikasi, sehingga masing-masing aplikasi memiliki alamat IP publik sendiri. Topik ini menjelaskan cara mengasosiasikan EIP dengan ENI sekunder.

Catatan

Kode contoh dalam tutorial ini mendukung eksekusi satu klik. Anda dapat menjalankan kode tersebut secara langsung. Jalankan satu klik

Sumber Daya

Buat file konfigurasi

Buat file bernama terraform.tf, tambahkan konten berikut, lalu simpan file tersebut.

provider "alicloud" {
  region = var.region
}

# Wilayah tempat sumber daya akan dibuat.
variable "region" {
  default     = "cn-beijing"
  description = "Wilayah tempat sumber daya akan dibuat."
}

# ID VPC yang ada. Parameter ini diperlukan saat Anda mengaitkan ENI dengan instance ECS yang ada. Nilainya harus VPC dari instance ECS tersebut.
variable "vpc_id" {
  default     = ""
  description = "Saat mengaitkan ENI ke instance ECS yang ada, nilai ini diperlukan dan harus merupakan VPC yang terkait dengan instance ECS tersebut."
}

# Blok CIDR untuk VPC. Anda dapat mengosongkan parameter ini jika Anda menentukan vpc_id.
variable "vpc_cidr_block" {
  default     = "192.168.0.0/16"
  description = "Tentukan blok CIDR dari VPC. Jika vpc_id disediakan, nilai ini dapat dikosongkan."
}

# Zona. Parameter ini diperlukan saat Anda mengaitkan ENI dengan instance ECS yang ada. Nilainya harus zona tempat instance ECS berada.
variable "zone_id" {
  default     = ""
  description = "Saat mengaitkan ENI ke instance ECS yang ada, nilai ini diperlukan dan harus merupakan zona tempat instance ECS berada."
}

# Blok CIDR untuk vSwitch. Blok CIDR harus berada dalam blok CIDR dari VPC.
variable "vswitch_cidr_block" {
  default     = "192.168.0.0/24"
  description = "Tentukan blok CIDR dari VSwitch. Blok CIDR harus berada dalam rentang blok CIDR VPC."
}

# Alamat IP sumber untuk mengakses ENI.
variable "source_ip" {
  description = "Alamat IP yang Anda gunakan untuk mengakses ENI."
  type        = string
  default     = "0.0.0.0/0"
}

# Alamat IP pribadi dari ENI.
variable "private_ip" {
  description = "Alamat IP pribadi utama dari ENI. Alamat IP yang ditentukan harus tersedia dalam blok CIDR dari VSwitch. Jika parameter ini tidak ditentukan, alamat IP yang tersedia akan ditetapkan dari blok CIDR VSwitch secara acak."
  type        = string
  default     = ""
}

locals {
  new_zone_id = var.zone_id == ""
  create_vpc  = var.vpc_id == ""
}

resource "alicloud_eip" "eip" {
  address_name = "test_eip"
}

resource "alicloud_vpc" "vpc" {
  count      = local.create_vpc ? 1 : 0
  vpc_name   = "test_vpc"
  cidr_block = var.vpc_cidr_block
}

data "alicloud_zones" "default" {
  count                       = local.new_zone_id ? 1 : 0
  available_resource_creation = "VSwitch"
}

resource "alicloud_vswitch" "vswitch" {
  vswitch_name = "test_vswitch"
  cidr_block   = var.vswitch_cidr_block
  zone_id      = local.new_zone_id ? data.alicloud_zones.default[0].zones.0.id : var.zone_id
  vpc_id       = local.create_vpc ? alicloud_vpc.vpc[0].id : var.vpc_id
}

resource "alicloud_security_group" "group" {
  security_group_name = "test_sg"
  vpc_id              = local.create_vpc ? alicloud_vpc.vpc[0].id : var.vpc_id
}

# Tambahkan aturan untuk mengizinkan lalu lintas masuk pada port TCP 80.
resource "alicloud_security_group_rule" "allow_80_tcp" {
  type              = "ingress"
  ip_protocol       = "tcp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "80/80"
  priority          = 1
  security_group_id = alicloud_security_group.group.id
  cidr_ip           = var.source_ip
}

resource "alicloud_network_interface" "default" {
  network_interface_name             = "test_eni"
  vswitch_id                         = alicloud_vswitch.vswitch.id
  security_group_ids                 = [alicloud_security_group.group.id]
  primary_ip_address                 = var.private_ip
  secondary_private_ip_address_count = 1
}

resource "alicloud_eip_association" "default" {
  allocation_id = alicloud_eip.eip.id
  instance_type = "NetworkInterface"
  instance_id   = alicloud_network_interface.default.id
}

Buat sumber daya

Jalankan perintah berikut di folder tempat file terraform.tf berada.

  1. Jalankan terraform init untuk menginisialisasi Terraform. Output berikut menunjukkan bahwa inisialisasi telah selesai.

    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  2. Jalankan terraform apply dan masukkan yes pada prompt untuk membuat sumber daya. Output berikut menunjukkan bahwa sumber daya telah dibuat.

    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    alicloud_vpc.vpc: Creating...
    alicloud_eip.eip: Creating...
    
    ...
    
    Apply complete! Resources: 7 added, 0 changed, 0 destroyed.
    Catatan

    Jika Anda membuat ENI untuk diasosiasikan dengan Instance ECS yang sudah ada, jalankan terraform apply dan berikan parameter yang diperlukan. Contohnya: terraform apply -var source_ip=XX.XX.XX.XX -var vpc_id=vpc-2vc4ctyuxpq6nXXXXXXXXX -var zone_id=cn-beijing-a -var vswitch_cidr_block=XX.XX.XX.XX/XX.

  3. Jalankan terraform show untuk melihat sumber daya yang telah dibuat, termasuk VPC, EIP, dan ENI.

    Catatan

    Anda juga dapat melihat sumber daya yang telah dibuat di Konsol.

Bersihkan sumber daya

Jika Anda tidak lagi memerlukan sumber daya yang dibuat atau dikelola oleh Terraform, jalankan perintah terraform destroy untuk melepaskannya.

terraform destroy

Referensi

  • Setelah membuat ENI, Anda dapat mengasosiasikannya dengan Instance ECS di zona dan VPC yang sama. Untuk informasi selengkapnya, lihat Buat dan gunakan ENI.

  • Untuk informasi selengkapnya tentang perintah Terraform, lihat Perintah Terraform umum.