Azure Fundamentals · Pelajaran

Terraform pada Azure

Konfigurasikan penyedia Terraform AzureRM, tulis pelan infrastruktur asas, dan fahami masa yang sesuai untuk memilih Terraform berbanding alat ARM/Bicep natif.

Pelajaran 4 daripada 413 langkah

Terraform pada Azure ialah pelajaran Azure Fundamentals percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Azure Fundamentals, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Azure Fundamentals merangkumi sejumlah 4 pelajaran.

Apakah Terraform dan Mengapa Azure?

Terraform ialah alat Infrastructure as Code sumber terbuka yang dibangunkan oleh HashiCorp. Tidak seperti Bicep, Terraform tidak bergantung pada mana-mana awan — satu pangkalan kod Terraform boleh mengurus resource merentas Azure, AWS, GCP dan banyak provider lain secara serentak. Pada Azure, Terraform menggunakan AzureRM provider untuk berinteraksi dengan API ARM, menjadikannya pilihan popular untuk organisasi berbilang awan.

AzureRM Terraform Provider

AzureRM provider ialah pemalam yang dimuat turun dan digunakan oleh Terraform untuk menterjemahkan konfigurasi Terraform kepada panggilan API ARM. Ia diselenggara oleh HashiCorp dan Microsoft serta merupakan cara rasmi untuk mengurus resource Azure dengan Terraform. Konfigurasikan provider dengan ID langganan dan kaedah pengesahan anda, kemudian jalankan terraform init untuk memuat turunnya.

# main.tf — configure the AzureRM provider
terraform {
  required_providers {
    azurerm = {
      source  = 'hashicorp/azurerm'
      version = '~> 3.0'
    }
  }
}

provider 'azurerm' {
  features {}
  subscription_id = var.subscription_id
}

Struktur File Terraform

Projek Terraform Azure biasa dibahagikan kepada beberapa .tf files: main.tf mengandungi pengisytiharan resource, variables.tf mentakrifkan pemboleh ubah input, outputs.tf mentakrifkan nilai output, dan terraform.tfvars menyediakan nilai pemboleh ubah untuk environment tertentu. Terraform memuatkan semua .tf files dalam direktori semasa secara automatik, jadi pembahagian kepada beberapa files semata-mata untuk kebolehbacaan.

# variables.tf
variable 'resource_group_name' {
  description = 'Name of the resource group'
  type        = string
  default     = 'my-rg'
}

variable 'location' {
  description = 'Azure region'
  type        = string
  default     = 'eastus'
}

Mengisytiharkan Resource Azure

Dalam Terraform, anda mengisytiharkan resource Azure menggunakan blok resource. Jenis blok ialah resource, diikuti jenis resource AzureRM (contohnya, 'azurerm_resource_group') dan nama tempatan yang digunakan untuk merujuknya dalam konfigurasi. Nama sifat dalam Terraform menggunakan snake_case, bukannya camelCase atau PascalCase yang digunakan dalam JSON ARM.

# main.tf — create a resource group and storage account
resource 'azurerm_resource_group' 'main' {
  name     = var.resource_group_name
  location = var.location
}

resource 'azurerm_storage_account' 'storage' {
  name                     = 'mystorageaccount'
  resource_group_name      = azurerm_resource_group.main.name
  location                 = azurerm_resource_group.main.location
  account_tier             = 'Standard'
  account_replication_type = 'LRS'

  tags = {
    environment = 'dev'
  }
}

Aliran Kerja Terraform: Init, Plan, Apply

Aliran kerja teras Terraform mempunyai tiga langkah. terraform init memuat turun AzureRM provider dan menyediakan backend. terraform plan membandingkan konfigurasi anda dengan keadaan semasa dan menunjukkan perbezaan tentang perkara yang akan dicipta, diubah atau dimusnahkan — serupa dengan what-if ARM. terraform apply melaksanakan plan dan mengemas kini Azure supaya sepadan dengan konfigurasi anda.

# Step 1: Initialise the project and download providers
terraform init

# Step 2: Preview changes (shows + create, ~ update, - destroy)
terraform plan -out=tfplan

# Step 3: Apply the plan
terraform apply tfplan

# Destroy all managed resources
terraform destroy

Keadaan Terraform

Terraform menyelenggara state file (terraform.tfstate) yang merekodkan keadaan semasa semua resource yang diurus serta memetakannya kepada konfigurasi anda. File ini membolehkan Terraform mengesan perbezaan antara perkara yang dikonfigurasikan dengan perkara yang wujud dalam Azure. Dalam environment pasukan, simpan state secara jauh dalam Azure Storage Account (backend Terraform) supaya semua ahli pasukan berkongsi state file yang sama.

# Configure remote state in Azure Blob Storage
terraform {
  backend 'azurerm' {
    resource_group_name  = 'tfstate-rg'
    storage_account_name = 'tfstateaccount'
    container_name       = 'tfstate'
    key                  = 'prod.terraform.tfstate'
  }
}

Pengesahan ke Azure dalam Terraform

Terraform menyokong beberapa kaedah pengesahan untuk Azure. Semasa pembangunan tempatan, gunakan az login (pengesahan Azure CLI) — Terraform mengambil kelayakan secara automatik. Dalam pipeline CI/CD, gunakan Service Principal dengan client secret atau sijil, yang dihantar melalui pemboleh ubah environment. Untuk ejen atau VM yang dihoskan Azure, gunakan Managed Identity bagi pengesahan paling selamat tanpa secret.

# Option 1: Azure CLI (local dev)
az login
terraform plan

# Option 2: Service principal via environment variables
export ARM_CLIENT_ID='00000000-0000-0000-0000-000000000000'
export ARM_CLIENT_SECRET='your-client-secret'
export ARM_SUBSCRIPTION_ID='00000000-0000-0000-0000-000000000000'
export ARM_TENANT_ID='00000000-0000-0000-0000-000000000000'
terraform plan

Modul Terraform untuk Penggunaan Semula

Seperti modul Bicep, modul Terraform membolehkan anda membungkus dan menggunakan semula corak infrastruktur. Modul ialah direktori yang mengandungi .tf files. Anda merujuknya dengan blok module, menghantar input melalui variables dan menggunakan output. Terraform Registry mengehoskan ratusan modul Azure komuniti dan disahkan yang boleh anda gunakan secara langsung, seperti modul rangkaian AzureRM.

# Use a module from the Terraform Registry
module 'vnet' {
  source  = 'Azure/vnet/azurerm'
  version = '4.0.0'

  resource_group_name = azurerm_resource_group.main.name
  vnet_location       = azurerm_resource_group.main.location
  use_for_each        = true
  address_space       = ['10.0.0.0/16']
  subnet_prefixes     = ['10.0.1.0/24', '10.0.2.0/24']
  subnet_names        = ['web', 'app']
}

Bila Memilih Terraform berbanding Bicep

Pilih Bicep apabila organisasi anda hanya menggunakan Azure dan mahukan integrasi paling rapat dengan ciri Azure baharu (Bicep mendapat sokongan jenis resource baharu pada hari pertama). Pilih Terraform apabila anda mengurus resource merentas berbilang provider awan, memerlukan ekosistem modul komuniti yang besar atau lebih gemar sintaks HCL dan rangkaian alat HashiCorp. Kedua-duanya sesuai untuk penggunaan Azure sepenuhnya — pilihan organisasi sering menjadi penentu.

Mengimport Resource Sedia Ada

Jika resource sudah wujud dalam Azure sebelum anda mula menggunakan Terraform, anda boleh membawanya di bawah pengurusan Terraform menggunakan terraform import. Perintah ini mendapatkan keadaan semasa resource dan menambahkannya ke state file Terraform. Selepas mengimport, anda mesti menulis blok konfigurasi yang sepadan secara manual supaya sepadan dengan resource yang diimport, kemudian menjalankan terraform plan untuk mengesahkan bahawa tiada perbezaan.

# Import an existing resource group into Terraform state
terraform import \
  azurerm_resource_group.main \
  '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/existing-rg'

# Terraform 1.5+ supports import blocks in configuration
import {
  to = azurerm_resource_group.main
  id = '/subscriptions/00000000.../resourceGroups/existing-rg'
}

Amalan Terbaik Terraform pada Azure

Ikuti amalan terbaik ini untuk Terraform pada Azure: simpan state secara jauh dalam Azure Blob Storage dengan penguncian state didayakan, gunakan ruang kerja atau state files berasingan untuk environment yang berbeza, jangan sekali-kali commit secret ke kawalan sumber — gunakan sumber data Azure Key Vault sebagai gantinya, tetapkan versi provider untuk mengelakkan perubahan yang merosakkan, dan jalankan Terraform dalam pipeline CI/CD (Azure Pipelines atau GitHub Actions) dengan pintu kelulusan plan.

Semakan Pantas

Uji pemahaman anda tentang konsep Microsoft Azure Fundamentals (AZ-900) daripada lesson ini.

Rumusan Lesson

Dalam lesson ini, anda telah mempelajari bahawa: Terraform ialah alat IaC yang tidak bergantung pada mana-mana awan dan menggunakan AzureRM provider untuk mengurus resource Azure, aliran kerja init, plan, apply membolehkan penggunaan yang selamat dan boleh diramal, serta state jauh dalam Azure Blob Storage penting untuk kerjasama pasukan. Seterusnya, kita akan meneroka penciptaan plan App Service dan Web Apps.

Percuma untuk bermula

Pelajari Azure Fundamentals dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Terraform pada Azure” percuma?

Ya — teks penuh “Terraform pada Azure” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Azure Fundamentals, tingkat taraf kepada CoddyKit PRO. Kursus Azure Fundamentals merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Terraform pada Azure”?

Konfigurasikan penyedia Terraform AzureRM, tulis pelan infrastruktur asas, dan fahami masa yang sesuai untuk memilih Terraform berbanding alat ARM/Bicep natif. Anda berlatih Azure Fundamentals menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Azure Fundamentals?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Azure Fundamentals di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Terraform pada Azure” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Azure Fundamentals ini?

Ya. Setiap pelajaran Azure Fundamentals menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Cara Azure Resource Manager Berfungsi
  2. Menulis Templat ARM
  3. Bicep: IaC Azure Moden
  4. Terraform pada Azure
← Kembali ke Azure Fundamentals