Bải 4: Terraform CLI Nâng Cao: Lệnh Taint, Import, Refresh


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

Terraform CLI Nâng Cao Là Gì?

5fd1d860-e606-47f6-8244-77580f928617

Terraform CLI (Command Line Interface) cung cấp các lệnh nâng cao như taint, import, và refresh, giúp quản lý tài nguyên phức tạp trong hạ tầng. Những lệnh này bổ sung cho workflow cơ bản (init, plan, apply, destroy) và được kiểm tra trong kỳ thi Terraform Associate (003) dưới mục tiêu 3 (Use Terraform CLI). Hiểu rõ cách sử dụng các lệnh này là cần thiết để xử lý các tình huống thực tế, như thêm tài nguyên hiện có hoặc cập nhật trạng thái.

Chi Tiết Các Lệnh Nâng Cao

Lệnh Terraform Taint

  • Mô tả: Lệnh terraform taint đánh dấu một tài nguyên là “bị hỏng” (tainted), buộc Terraform tạo lại tài nguyên đó khi chạy apply tiếp theo.
  • Input: Chạy lệnh với ID tài nguyên (VD: local_file.hello).
    terraform taint local_file.hello
  • Output:
    Resource instance local_file.hello has been marked as tainted.
  • Ý nghĩa: Tài nguyên local_file.hello sẽ bị xóa và tạo lại khi chạy terraform apply tiếp theo.

Lệnh Terraform Import

  • Mô tả: Lệnh terraform import đưa một tài nguyên đã tồn tại (không được quản lý bởi Terraform) vào trạng thái quản lý của Terraform.
  • Input: Cần ID tài nguyên thực tế và định nghĩa trong file .tf.
    • Tạo file main.tf:
      resource "local_file" "imported_file" {
      filename = "imported.txt"
      content  = "Imported content"
      }
    • Chạy lệnh với ID tài nguyên (VD: đường dẫn file):
      terraform import local_file.imported_file /path/to/imported.txt
  • Output:
    local_file.imported_file: Importing from ID "/path/to/imported.txt"...
    local_file.imported_file: Import prepared!
    local_file.imported_file: Import complete!
    Imported local_file (ID: /path/to/imported.txt)
    local_file.imported_file: Refreshing state... [id=/path/to/imported.txt]
  • Ý nghĩa: Terraform cập nhật file terraform.tfstate với thông tin tài nguyên imported.txt.

Lệnh Terraform Refresh

  • Mô tả: Lệnh terraform refresh đồng bộ hóa trạng thái trong terraform.tfstate với thực tế, cập nhật nếu tài nguyên bị thay đổi bên ngoài Terraform.
  • Input: Chạy lệnh trong thư mục làm việc.
    terraform refresh
  • Output (giả sử file hello.txt đã thay đổi nội dung thủ công):

    local_file.hello: Refreshing state... [id=abc123]
    [State updated with new content of hello.txt]
    
    No changes. Your infrastructure matches the configuration.
    
    Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.
  • Ý nghĩa: Trạng thái được cập nhật, nhưng không có thay đổi vì cấu hình khớp với thực tế.

Ví Dụ Thực Tế Với Các Lệnh Nâng Cao

  • File main.tf:

    terraform {
    required_providers {
      local = {
        source  = "hashicorp/local"
        version = "2.5.1"
      }
    }
    }
    
    resource "local_file" "hello" {
    content  = "Hello, Terraform!"
    filename = "hello.txt"
    }
  • Quy trình:
    1. Chạy terraform initterraform apply để tạo hello.txt.
    2. Chạy terraform taint local_file.hello để đánh dấu tài nguyên.
    3. Chạy terraform apply để tạo lại hello.txt. Output:
      local_file.hello: Destroying... [id=abc123]
      local_file.hello: Destruction complete after 0s
      local_file.hello: Creating...
      local_file.hello: Creation complete after 0s [id=def456]
    4. Tạo file imported.txt thủ công, sau đó chạy terraform import local_file.imported_file /path/to/imported.txt.
    5. Chạy terraform refresh để đồng bộ trạng thái.

Lưu Ý Quan Trọng Khi Sử Dụng Các Lệnh

  • Taint cẩn thận: Chỉ dùng taint khi cần tạo lại tài nguyên, vì nó xóa tài nguyên cũ. Sao lưu state trước khi thực hiện.
  • Import đúng ID: ID tài nguyên phải khớp với định nghĩa trong file .tf, nếu không sẽ lỗi.
  • Refresh không thay đổi: refresh chỉ cập nhật trạng thái, không áp dụng cấu hình mới. Kết hợp với plan để kiểm tra thay đổi.
  • Kiểm tra lỗi: Nếu lệnh báo lỗi (VD: “Resource not found”), kiểm tra ID tài nguyên hoặc file cấu hình.

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

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

  • Câu hỏi mẫu:
    • “Lệnh nào dùng để đánh dấu tài nguyên cần tạo lại?”
      Đáp án: terraform taint.
    • “Output của terraform import là gì?”
      Đáp án: Thông báo “Import complete!” cùng ID tài nguyên.
  • Thực hành: Kỳ thi có thể yêu cầu dự đoán output hoặc nhận diện lỗi khi dùng taint/import.

Kết Luận

Terraform CLI nâng cao với lệnh taint, import, và refresh giúp quản lý tài nguyên hiệu quả trong các tình huống phức tạp. Hiểu rõ input, output, 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ẽ tìm hiểu cách quản lý provider trong Terraform.

Điều hướng chuỗi bài viết<< Bài 3: Terraform Workflow: Init, Plan, Apply, Destroy
>> Bài 5: Quản Lý Provider Trong Terraform

Bài viết khác

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

Có thể bạn quan tâm