Vấn đề
Bài trước chúng ta đã cùng nhau tìm hiểu về Terraform backend được dùng để xử lý xung đột khi có nhiều người cùng xây dựng cơ sở hạ tầng.
Nhưng có một vấn đề nữa, nếu trong quá trình làm việc, có ai đó vào console chỉnh lại các thông số của cơ sở hạ tầng thì phải làm sao để đảm bảo tính nhất quán của cơ sở hạ tầng?
Terraform đã đưa ra 1 giải pháp đó là sử dụng flag -refresh-only
, được sử dụng để tuỳ chỉnh lại Terraform state
cho khớp với hệ thống hiện tại trên cloud.
Practices
Ta sử dụng tiếp bài Lab 01 để thực tập việc sử dụng flag -refresh-only
.
Ta lần lượt chạy các lệnh sau để khởi tạo các resource trên cloud
terraform init
terraform plan
terraform apply
Sau tầm vài phút thì cơ sơ hạ tầng đã được triền khai trên cloud, truy cập vào IP của EC2 để kiểm tra
Thực thi dòng lệnh sau:
terraform plan -refresh-only
Kết quả trả về ghi nhận không có sự khác nhau giữa Terraform state và cơ sở hạ tầng trên cloud
Tiếp theo ta sẽ thực hiện việc thay đổi trên Security group bằng cách xoá 1 Type ssh
Sau đó chạy lại command sau:
terraform plan -refresh-only
Lúc này Terraform xác định được sự khác nhau giữa Terraform state và cơ sở hạ tầng trên cloud
Lưu ý lúc này Terraform state vẫn chưa thay đổi, ta chạy lệnh terraform apply
để cập nhật lại Terraform state
terraform apply -refresh-only
Kết luận
Để xử lý sự khác biệt giữa Terraform state và cơ sở hạ tầng thự tế trên cloud ta sử dụng flag -refresh-only
cho 2 lệnh terraform plan
và terraform apply
.