Tin tức và phân tích của tất cả các thiết bị di động

Hiểu các công cụ IaC: Cloudformation vs Terraform

AWS CloudFormation và Terraform – không biết nên chọn gì? Bài viết này sẽ giúp bạn đưa ra quyết định sáng suốt.

Điện toán đám mây đã cách mạng hóa thế giới DevOps. Nó không chỉ là một từ thông dụng nữa; ở đây và ở đây để thay đổi cách chúng tôi phát triển và duy trì các ứng dụng của mình. Mặc dù có vô số lý do để sử dụng điện toán đám mây ở mọi quy mô doanh nghiệp, nhưng có một hạn chế nhỏ là bạn phải cung cấp cơ sở hạ tầng của mình theo cách thủ công.

Bạn phải truy cập bảng điều khiển của nhà cung cấp đám mây và cho họ biết chính xác những gì bạn muốn. Điều này hoạt động tốt đối với các trường hợp sử dụng nhỏ, nhưng điều gì sẽ xảy ra nếu bạn có những người khác nhau thực hiện các thay đổi cấu hình trong bảng điều khiển. Bạn có thể kết thúc với một cơ sở hạ tầng rất phức tạp sẽ ngày càng khó bảo trì. Không có cách nào hiệu quả để cộng tác hoặc theo dõi các thay đổi trong cơ sở hạ tầng đám mây. Vâng, thực sự nó là. Cơ sở hạ tầng như mã.

Cơ sở hạ tầng dưới dạng mã là một thuật ngữ rất phổ biến trong điện toán đám mây. Đó là quá trình quản lý cơ sở hạ tầng CNTT của bạn thông qua mã. Vâng đúng vậy. Thay vì vào bảng điều khiển và làm mọi thứ theo cách thủ công; Cơ sở hạ tầng dưới dạng Mã, hoặc IAAC hoặc IAC, cho phép bạn ghi các tệp cấu hình, sau đó hiển thị cơ sở hạ tầng đám mây của bạn. IAC mang lại cho chúng tôi những lợi thế như tính nhất quán, bảo trì dễ dàng và nhanh chóng và không có chỗ cho lỗi của con người.

Sử dụng IAC với Amazon Dịch vụ web

AWS là dịch vụ điện toán đám mây hàng đầu thế giới với thị phần gấp đôi nhà cung cấp đám mây tiếp theo. Có hơn 200 dịch vụ trên AWS có thể xử lý hàng trăm, hàng nghìn trường hợp sử dụng.

Khi bắt đầu sử dụng IAC với AWS, bạn thường thu hẹp các lựa chọn của mình xuống AWS Cloud Builder và công cụ nguồn mở, Terraforma. Khi cố gắng lựa chọn giữa hai công cụ, có thể khá choáng ngợp khi hiểu được vô số tính năng mà cả hai công cụ cung cấp. Trong bài viết này, chúng ta sẽ xem xét sự khác biệt giữa AWS CloudFormation và Terraform để giúp bạn quyết định công cụ nào phù hợp hơn với nhu cầu của mình.

địa hình so với AWS CloudFormation: Sự khác biệt

tính mô đun

Khi sử dụng IAC trong các tổ chức lớn, tính mô đun có thể là một yếu tố quan trọng trong việc lựa chọn công cụ phù hợp.

tạo đám mây

CloudFormation không có hỗ trợ riêng cho các mô-đun. Nó cho phép bạn sử dụng thứ gọi là ngăn xếp lồng nhau làm mô-đun.

Ví dụ: bạn có thể có cấu hình tiêu chuẩn về cách cung cấp bộ chứa S3 trong tổ chức của mình. Vì vậy, bạn tạo một mẫu CloudFormation tiêu chuẩn để tạo các bộ chứa S3. Giờ đây, khi người dùng cuối muốn tạo bộ chứa S3, họ có thể sử dụng mẫu CloudFormation này làm ngăn xếp lồng nhau và tạo bộ chứa S3 tiêu chuẩn.

Ngoài ra còn có một dịch vụ AWS ít được biết đến hơn, AWS Service Catalog có thể giúp bạn mô đun hóa AWS CloudFormation của mình. Danh mục dịch vụ là một dịch vụ AWS được thiết kế dành riêng cho các tổ chức muốn giới hạn phạm vi của Dịch vụ AWS để đáp ứng các yêu cầu về tuân thủ, bảo mật, chi phí hoặc hiệu suất. Và đoán xem? Danh mục dịch vụ AWS sử dụng các mẫu CloudFormation trong phần phụ trợ.

Hãy hiểu nó một cách nhanh chóng với một ví dụ. Các nhóm S3, nếu không được sử dụng đúng cách, có thể sớm gây ra hậu quả thảm khốc cho dữ liệu nhạy cảm của bạn. Hãy lấy ví dụ tương tự, bạn muốn có một cách sử dụng S3 tiêu chuẩn trong tổ chức của mình. Tùy chọn đầu tiên là tạo một mẫu ngăn xếp lồng nhau có thể được sử dụng trong các ngăn xếp CloudFormation khác và cũng tốt như vậy.

Nếu không muốn người dùng phải sử dụng mẫu tiêu chuẩn này làm ngăn xếp lồng nhau, bạn có thể sử dụng AWS Service Directory. Danh mục dịch vụ sẽ cho phép người dùng sử dụng mẫu tiêu chuẩn này từ giao diện người dùng của bảng điều khiển và chỉ định một số tham số để tùy chỉnh nhỏ. Điều này sẽ cho phép bạn kiểm soát cách cơ sở hạ tầng được cung cấp trong tài khoản AWS của bạn và ngăn chặn mọi tình huống không mong muốn.

địa hình

Terraform có hỗ trợ mô-đun gốc. Nó cho phép bạn tạo các cấu hình tiêu chuẩn giống như AWS CloudFormation và sử dụng chúng trong các cấu hình địa hình khác.

Vì Terraform là một công cụ nguồn mở nên bạn cũng có thể tìm và sử dụng một số mô-đun nguồn mở được tạo sẵn trong Terraform Registry. Bạn cũng có thể tạo các mô-đun của riêng mình với các cấu hình của riêng bạn và lưu trữ chúng trong sổ đăng ký mô-đun riêng.

Cá nhân tôi thích sử dụng Terraform hơn CloudFormation nếu mô đun hóa là một yêu cầu lớn.

Sử dụng ngăn xếp lồng nhau trong CloudFormation không dễ dàng như sử dụng các mô-đun trong Terraform. Yếu tố chính là việc chuyển dữ liệu từ mẫu CFN sang ngăn xếp lồng nhau có thể khá phức tạp.

Không có nơi tiêu chuẩn để chia sẻ các mẫu CloudFormation. Bạn có một thư mục dịch vụ AWS, nhưng đó chỉ là một cách để thực thi một số chính sách tạo cơ sở hạ tầng thông qua bảng điều khiển. Tất cả chúng ta đều viết mã. Khi sử dụng thư mục dịch vụ, mặc dù một số tác vụ phức tạp được đóng gói bởi các tệp CloudFormation, nhưng bạn vẫn phải thực hiện tác vụ thủ công là đi tới bảng điều khiển và chỉ định các tham số để tạo cơ sở hạ tầng của mình.

Mặt khác, Terraform có một phương pháp cố định để tạo, duy trì và chia sẻ các mô-đun. Bạn có thể xem các yêu cầu mô-đun chính xác trong Sổ đăng ký mô-đun Terraform và sử dụng chúng trong các tệp Terraform của bạn rất dễ dàng.

Kiểm soát và quản lý cơ sở hạ tầng

Nếu bạn muốn giới hạn tài nguyên mà mọi người có thể tạo trong tài khoản AWS của bạn: Cả AWS CloudFormation và Terraform đều cung cấp cho bạn phương tiện để làm điều đó.

Trước tiên hãy nói về CloudFormation. Bản thân CloudFormation không cung cấp bất kỳ quyền kiểm soát nào đối với cách sử dụng các mẫu, nhưng bạn có thể sử dụng các chính sách AWS IAM để chỉ cho phép người dùng trong tài khoản AWS của bạn chỉ sử dụng các mẫu CloudFormation tiêu chuẩn để tạo tài nguyên. Trong ví dụ về bộ chứa S3 của chúng tôi, bạn có thể muốn hạn chế tất cả quyền “Tạo S3” đối với người dùng và chỉ cho phép họ tạo bộ chứa S3 từ Danh mục dịch vụ AWS hoặc ngăn xếp lồng nhau.

Terraform cho phép bạn kiểm soát nội dung nào mà người dùng của bạn có thể tạo bằng các chính sách dưới dạng công cụ của mã Outpost. Sentinel cho phép bạn thực thi các chính sách dựa trên logic, chi tiết để cho phép hoặc từ chối hành động của người dùng thông qua Terraform. Ví dụ: bạn có thể từ chối tất cả các tài nguyên tạo nhóm S3 và chỉ cho phép người dùng tạo nhóm S3 từ một mô-đun tiêu chuẩn.

quản lý nhà nước

Cả AWS CloudFormation và Terraform đều cần theo dõi các tài nguyên mà chúng duy trì.

Terraform lưu trữ trạng thái cơ sở hạ tầng của bạn trong một tệp trạng thái. Tệp này được lưu trữ cục bộ theo mặc định, tuy nhiên, nó có thể được lưu trữ trên các chương trình phụ trợ từ xa chẳng hạn như S3 và cho phép nhiều người dùng thực hiện các thay đổi đối với cùng một bộ cơ sở hạ tầng.

CloudFormation không duy trì tệp trạng thái, ít nhất là một tệp chúng tôi có thể thấy. CloudFormation là một dịch vụ được quản lý, vì vậy tất cả hoạt động bảo trì và kiểm tra đều được thực hiện ở chế độ nền.

Cả AWS CloudFormation và Terraform đều cho phép bạn xem những thay đổi nào sẽ được thực hiện đối với cơ sở hạ tầng của bạn. Trong Terraform, bạn có thể chạy lệnh – “terraform plan” và cách Terraform lập kế hoạch áp dụng các thay đổi cấu hình. Trong CloudFormation, người dùng có thể xem thông tin này thông qua Changesets.

Lưỡi

Terraform sử dụng ngôn ngữ cấu hình HashiCorp, HCL, một ngôn ngữ do HashiCorp tạo ra. Nó rất giống với JSON với các tính năng và khả năng tích hợp bổ sung.

Mẫu CloudFormation được viết ở định dạng YAML hoặc JSON

Đăng nhập và rút tiền

Cả AWS CloudFormation và Terraform đều có khả năng ghi nhật ký tốt. Theo kinh nghiệm của tôi, các lỗi và sự cố rất đơn giản (phần lớn).

CloudFormation: Theo mặc định, CloudFormation khôi phục tất cả các thay đổi khi thay đổi ngăn xếp không thành công. Đây là một tính năng tốt có thể tắt để gỡ lỗi.

Terraform: Terraform sẽ không tự động hoàn tác các thay đổi khi không thành công. Đây không phải là vấn đề vì bạn luôn có thể chạy hủy terraform để xóa cấu hình được chia sẻ một phần và khởi động lại Terraform.

Phạm vi

Terraform không giới hạn ở đám mây AWS. Yếu tố quan trọng nhất khi lựa chọn giữa Terraform và CloudFormation là Terraform hỗ trợ các nhà cung cấp và dịch vụ đám mây khác.

Vì vậy, nếu bạn định sử dụng IAC cho nhiều nền tảng đám mây, thì Terraform là lựa chọn tốt nhất dành cho bạn. CloudFormation, mặc dù là một công cụ mạnh mẽ, nhưng chỉ giới hạn ở AWS. Sử dụng Terraform, bạn có thể thiết lập cơ sở hạ tầng và triển khai ứng dụng của mình trên nhiều nền tảng đám mây, giúp ứng dụng của bạn khả dụng và đáng tin cậy hơn.

hỗ trợ chức năng

Thông thường, khi AWS giới thiệu các dịch vụ và tính năng mới, CloudFormation sẽ được cập nhật trước Terraform vì đây là dịch vụ AWS. Hiện tại, cả hai công cụ đều bao gồm hầu hết các dịch vụ và tính năng của các dịch vụ này. Đây có thể là một nhược điểm nhỏ khi sử dụng Terraform, tuy nhiên, chúng tôi có giải pháp.

Cũng có thể tạo ngăn xếp CloudFormation trong mã Terraform. Vì vậy, nếu bạn đang sử dụng Terraform và không có tính năng nào, bạn có thể tạm thời định cấu hình ngăn xếp CloudFormation trong mã Terraform.

Hỗ trợ kỹ thuật

Gói hỗ trợ kỹ thuật trả phí của AWS cũng bao gồm hỗ trợ CloudFormation.

HashiCorp cũng trả tiền hỗ trợ kỹ thuật cho Terraform.

Đăng kí

Cả AWS CloudFormation và Terraform đều là những công cụ mạnh mẽ và hoàn chỉnh. Những khác biệt trên sẽ giúp bạn đưa ra quyết định sáng suốt về việc chọn công cụ nào dựa trên yêu cầu của bạn. Đề xuất cá nhân, nếu bạn dự định sử dụng nhiều nền tảng đám mây trong tương lai hoặc hiện đang sử dụng nhiều đám mây, bạn nên sử dụng Terraform làm cửa hàng duy nhất cho mọi nhu cầu của mình. Nếu bạn đang tìm kiếm một công cụ IAC chỉ dành cho AWS, thì cả AWS CloudFormation và Terraform đều là lựa chọn hợp lý.

Nếu bạn quan tâm đến việc học Terraform, hãy xem các khóa học trực tuyến này.