Bài 3: Terraform Workflow: Init, Plan, Apply, Destroy


Danh sách bài viết trong series Terraform Associate (003)

Terraform Workflow Là Gì?

165461e1-59d0-456f-aab1-720a28e09cec

Terraform Workflow là quy trình làm việc cơ bản để quản lý hạ tầng dưới dạng mã (IaC) với các lệnh chính: terraform init, terraform plan, terraform apply, và terraform destroy. Đây là nền tảng quan trọng trong việc triển khai và quản lý tài nguyên, được kiểm tra trong kỳ thi Terraform Associate (003). Workflow giúp bạn khởi tạo môi trường, kiểm tra cấu hình, áp dụng thay đổi, và dọn dẹp tài nguyên một cách an toàn và nhất quán.

Chi Tiết Các Bước Trong Terraform Workflow

Bước 1: Terraform Init

  • Mô tả: Lệnh terraform init khởi tạo thư mục làm việc, tải các provider cần thiết, và thiết lập backend (nếu có).
  • Input: Chạy lệnh trong thư mục chứa file .tf (VD: main.tf).
    terraform init
  • Output:

    Initializing the backend...
    
    Initializing provider plugins...
    - Finding hashicorp/local versions matching "2.5.1"...
    - Installing hashicorp/local v2.5.1...
    - Installed hashicorp/local v2.5.1 (signed by HashiCorp)
    
    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.
  • Ý nghĩa: Thông báo tải provider (hashicorp/local) và xác nhận khởi tạo thành công.

Bước 2: Terraform Plan

  • Mô tả: Lệnh terraform plan tạo một kế hoạch triển khai, hiển thị các thay đổi sẽ được áp dụng mà không thực sự tạo tài nguyên.
  • Input: Chạy lệnh sau khi init.
    terraform plan
  • Output (giả sử file main.tf tạo một file cục bộ):

    Terraform will perform the following actions:
    
    # local_file.hello will be created
    + resource "local_file" "hello" {
      + content  = "Hello, Terraform!"
      + filename = "hello.txt"
      + id       = (known after apply)
    }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    
    Changes to Outputs:
    + hello_file_content = (known after apply)
    
    Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
  • Ý nghĩa: Hiển thị kế hoạch tạo 1 resource (local_file), không thay đổi hoặc xóa. Output còn phụ thuộc vào -out (không dùng trong ví dụ).

Bước 3: Terraform Apply

  • Mô tả: Lệnh terraform apply áp dụng các thay đổi được lên kế hoạch, tạo hoặc cập nhật tài nguyên.
  • Input: Chạy lệnh để xác nhận áp dụng (thêm -auto-approve để tự động xác nhận).
    terraform apply -auto-approve
  • Output:

    local_file.hello: Creating...
    local_file.hello: Creation complete after 0s [id=abc123]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    
    Outputs:
    
    hello_file_content = "Hello, Terraform!"
  • Ý nghĩa: Tạo file hello.txt với nội dung “Hello, Terraform!”. Output hiển thị tài nguyên đã thêm thành công.

Bước 4: Terraform Destroy

  • Mô tả: Lệnh terraform destroy xóa tất cả tài nguyên được quản lý bởi Terraform trong thư mục làm việc.
  • Input: Chạy lệnh để xác nhận xóa (thêm -auto-approve để tự động xác nhận).
    terraform destroy -auto-approve
  • Output:

    local_file.hello: Destroying... [id=abc123]
    local_file.hello: Destruction complete after 0s
    
    Destroy complete! Resources: 0 added, 0 changed, 1 destroyed.
  • Ý nghĩa: Xóa file hello.txt, không còn tài nguyên nào được quản lý.

Ví Dụ Thực Tế Với Terraform Workflow

  • File main.tf:

    terraform {
    required_providers {
      local = {
        source  = "hashicorp/local"
        version = "2.5.1"
      }
    }
    }
    
    resource "local_file" "hello" {
    content  = "Hello, Terraform!"
    filename = "hello.txt"
    }
    
    output "hello_file_content" {
    value = local_file.hello.content
    }
  • Quy trình:
    1. terraform init: Khởi tạo và tải provider.
    2. terraform plan: Kiểm tra kế hoạch tạo file.
    3. terraform apply: Tạo file hello.txt.
    4. terraform destroy: Xóa file hello.txt.

Lưu Ý Quan Trọng Khi Sử Dụng Workflow

  • Thứ tự thực hiện: Luôn chạy terraform init trước khi các lệnh khác để tránh lỗi provider.
  • Sao lưu state: File terraform.tfstate chứa trạng thái tài nguyên, nên sao lưu trước khi destroy.
  • Xác nhận thủ công: Tránh dùng -auto-approve trong môi trường sản xuất để kiểm tra kỹ thay đổi.
  • Kiểm tra lỗi: Nếu plan hoặc apply báo lỗi (VD: provider không tìm thấy), kiểm tra file cấu hình và lệnh init.

Liên Hệ Với Chứng Chỉ Terraform Associate (003)

Kỳ thi Terraform Associate (003) kiểm tra hiểu biết về workflow. Bạn cần nắm:

  • Câu hỏi mẫu:
    • “Lệnh nào dùng để xem kế hoạch thay đổi mà không áp dụng?”
      Đáp án: terraform plan.
    • “Output của terraform apply bao gồm gì?”
      Đáp án: Số tài nguyên thêm/chỉnh sửa/xóa, cùng với output (nếu có).
  • Thực hành: Kỳ thi có thể yêu cầu nhận diện output hoặc dự đoán kết quả của các lệnh.

Kết Luận

Terraform Workflow với các lệnh init, plan, apply, và destroy là nền tảng để quản lý hạ tầng. Hiểu rõ từng bước, đầu vào, đầu ra, và thực hành với ví dụ thực tế là chìa khóa để thi đỗ Terraform Associate (003). Ở bài tiếp theo, chúng ta sẽ khám phá các lệnh CLI nâng cao như taintimport.

Điều hướng chuỗi bài viết<< Bài 2: Cài Đặt Terraform Trên Các Hệ Điều Hành
>> Bải 4: Terraform CLI Nâng Cao: Lệnh Taint, Import, Refresh
Article Thumbnail
Article Thumbnail
Datadog Webinar: Modernize AWS Logs at Scale
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận