Quản lý trạng thái Terraform

Quan Ly Trang Thai Terraform



Cơ sở hạ tầng dưới dạng Mã là quy trình quản lý và cung cấp cơ sở hạ tầng CNTT thông qua mã giúp khắc phục sự phức tạp của việc cung cấp quy mô lớn và quản lý tài nguyên CNTT theo cách thủ công và lặp đi lặp lại. Terraform của HashiCorp là một công cụ IaC nguồn mở sử dụng hệ thống quản lý trạng thái để theo dõi các thay đổi và quản lý các tệp trạng thái. Hệ thống quản lý nhà nước của nó là một trong những tính năng chính của nó và giúp theo dõi các thay đổi cơ sở hạ tầng một cách hiệu quả. Bài viết này đi sâu vào cách hoạt động của quản lý trạng thái Terraform và cách sử dụng nó một cách hiệu quả.

Trạng thái địa hình

Trạng thái hiện tại của cơ sở hạ tầng của chúng tôi, bao gồm thông tin về các tài nguyên mà chúng tôi xác định trong mã của mình, được ghi lại dưới dạng trạng thái Terraform. Terraform sử dụng trạng thái này để xác định những thay đổi cần thiết để đưa cơ sở hạ tầng của chúng ta vào trạng thái mong muốn khi một lệnh như Terraform “apply” được thực thi. Sau khi thực hiện các thay đổi (tạo, sửa đổi và xóa), Terraform cập nhật tệp trạng thái với trạng thái mới của cơ sở hạ tầng của bạn.

Để hiểu rõ khái niệm này, hãy lấy một ví dụ:







nguồn 'local_file' 'John' {

tên tệp = '/home/John.txt'

nội dung = 'Tôi yêu thú cưng'

}

Ở đây, chúng tôi tạo một tệp Terraform có tên là “main.tf”. Bên trong nó là một tài nguyên thuộc loại local_file có tên là “John” với hai thuộc tính: tên tệp và nội dung.



Loại tài nguyên local_file được sử dụng để tạo tệp trên hệ thống tệp cục bộ của máy nơi Terraform đang chạy. Trong trường hợp này, tệp được tạo với tên “John.txt” trong thư mục “/home” và nội dung của tệp là “Tôi yêu thú cưng”.



Bây giờ, hãy thực hiện quy trình Terraform – Terraform init, plan và apply. Khi chúng tôi thực thi lệnh “áp dụng” Terraform trong dự án của mình lần đầu tiên, Terraform sẽ tự động tạo tệp trạng thái có tên “terraform.tfstate” trong thư mục gốc của dự án Terraform của chúng tôi. Nó bao gồm tất cả thông tin về trạng thái hiện tại của cơ sở hạ tầng của chúng tôi ở định dạng JSON.





Đây là tệp trạng thái cho tài nguyên mà chúng tôi đã tạo:



Bây giờ, giả sử chúng ta muốn xóa tài nguyên hiện tại và tạo một tài nguyên khác thuộc loại random_pet có tên là “my-pet” với các thuộc tính – tiền tố, độ dài và dấu phân cách.

nguồn 'ngẫu nhiên_thú cưng' 'thú cưng của tôi' {

tiền tố = 'Ông'

chiều dài = '1'

dấu phân cách = '.'

}

Ở đây, chúng tôi xóa tài nguyên local_file và thêm tài nguyên Random_pet. Trạng thái mong muốn của chúng tôi là chỉ có tài nguyên Random_pet. Hãy thực hiện các lệnh init, plan và apply của Terraform.

Như trong hình minh họa trước, khi chúng ta thực hiện lệnh “plan” của Terraform, nó sẽ hiển thị các hành động mà Terraform thực hiện để đạt được trạng thái mong muốn. Khi chúng ta chạy lệnh “apply” của Terraform, tài nguyên “my-pet” được tạo và tài nguyên “John” bị xóa. Ngoài ra, tệp trạng thái được cập nhật bằng cách hủy siêu dữ liệu của tài nguyên local_file và thêm siêu dữ liệu của tài nguyên Random_pet.

Đây là nội dung của tệp trạng thái được cập nhật:

Làm thế nào để Terraform quản lý nhà nước hoạt động?

Sử dụng một chương trình phụ trợ, Terraform quản lý trạng thái. Phần phụ trợ là một dịch vụ từ xa hoặc hệ thống tệp cục bộ mà Terraform sử dụng để lưu trữ và truy xuất dữ liệu trạng thái. Tùy thuộc vào yêu cầu của chúng tôi, chúng tôi có thể chọn một phụ trợ phù hợp.

Terraform hỗ trợ một số chương trình phụ trợ tích hợp bao gồm cục bộ, Amazon S3, HashiCorp Consul, Vault và Azure Storage. Chúng tôi cũng có thể tạo một chương trình phụ trợ tùy chỉnh nếu không có tùy chọn tích hợp nào đáp ứng nhu cầu.

Trong các ví dụ trước, các tệp trạng thái được lưu trữ trong chương trình phụ trợ cục bộ. Nhưng lưu trữ nó trong một chương trình phụ trợ từ xa là cách tốt nhất vì nó kêu gọi sự cộng tác và tăng tính bảo mật.

TẦM QUAN TRỌNG CỦA QUẢN LÝ NHÀ NƯỚC

Quản lý trạng thái trong các công cụ như Terraform là cần thiết do các điểm chính sau:

Xác định hiện trạng cơ sở hạ tầng của bạn

Tệp trạng thái cung cấp ảnh chụp nhanh chính xác về các tài nguyên hiện có và các thuộc tính hiện tại của chúng. Dữ liệu này là bắt buộc để hiểu cơ sở hạ tầng của chúng tôi và đảm bảo rằng nó ở trạng thái mong muốn.

Theo dõi các thay đổi đối với cơ sở hạ tầng theo thời gian

Mỗi khi chúng tôi áp dụng các thay đổi bằng Terraform, tệp trạng thái sẽ được cập nhật để phản ánh trạng thái mới của cơ sở hạ tầng của chúng tôi. Điều này cho phép chúng tôi theo dõi cơ sở hạ tầng của chúng tôi đã phát triển như thế nào và cung cấp một bản kiểm tra tất cả các thay đổi.

tự động hóa

Xác định trạng thái cơ sở hạ tầng mong muốn của bạn trong mã cho phép chúng tôi tự động hóa việc tạo và quản lý cơ sở hạ tầng của chúng tôi. Quản lý nhà nước đảm bảo rằng cơ sở hạ tầng của chúng tôi vẫn như mong muốn, ngay cả khi các thay đổi được thực hiện theo thời gian.

Quản lý phụ thuộc

Với Terraform, chúng tôi có thể xác định mối quan hệ giữa các tài nguyên trong tệp cấu hình của mình và Terraform sử dụng tệp trạng thái để đảm bảo rằng các mối quan hệ đó được duy trì. Điều này đảm bảo rằng những thay đổi đối với một tài nguyên không vô tình ảnh hưởng đến các tài nguyên khác.

Khắc phục thảm họa

Nếu xảy ra lỗi hoặc ngừng hoạt động, chúng tôi có thể sử dụng tệp trạng thái để tạo lại cơ sở hạ tầng ở trạng thái đã biết. Điều này có thể giúp giảm thiểu thời gian ngừng hoạt động và đảm bảo rằng cơ sở hạ tầng của chúng tôi được khôi phục nhanh chóng và hiệu quả.

Thực tiễn tốt nhất để quản lý nhà nước hiệu quả

Dưới đây là một số mẹo mà chúng ta có thể làm theo để quản lý các trạng thái một cách hiệu quả:

Sử dụng chương trình phụ trợ từ xa

Chương trình phụ trợ từ xa cung cấp một số lợi ích so với chương trình phụ trợ cục bộ. Nó cho phép nhiều người dùng làm việc trên cùng một cơ sở hạ tầng và họ cũng cung cấp bảo mật và độ tin cậy tốt hơn so với các chương trình phụ trợ cục bộ.

Bật lập phiên bản

Bằng cách tạo phiên bản cho tệp trạng thái, chúng tôi có thể theo dõi các thay đổi theo thời gian và quay lại phiên bản trước nếu cần. Ngoài ra, lập phiên bản cung cấp một dấu vết kiểm tra và giúp đảm bảo rằng các thay đổi được ghi lại một cách thích hợp.

Sử dụng cơ chế khóa

Chúng ta có thể sử dụng cơ chế khóa giúp tránh xung đột khi nhiều người dùng cùng làm việc trên cùng một cơ sở hạ tầng. Terraform hỗ trợ một số công cụ khóa bao gồm DynamoDB, Consul và S3.

Sao lưu tệp trạng thái của bạn

Chúng tôi có thể phục hồi dữ liệu bị hỏng nếu chúng tôi sao lưu tệp trạng thái thường xuyên. Chúng tôi phải lưu trữ các bản sao lưu ở một vị trí an toàn và tuân theo mọi yêu cầu tuân thủ có liên quan.

Phần kết luận

Chúng tôi đã có phần giới thiệu ngắn gọn về IaC và Terraform trong khi hiểu các tệp trạng thái và quản lý chúng thông qua các ví dụ. Hiểu cách thức hoạt động của trạng thái Terraform có thể giúp chúng tôi tránh những cạm bẫy phổ biến và đảm bảo rằng cơ sở hạ tầng của chúng tôi vẫn như mong muốn. Bằng cách làm theo các phương pháp hay nhất để quản lý trạng thái, chúng ta có thể sử dụng Terraform một cách tự tin và hiệu quả.