Cơ sở hạ tầng dưới dạng Mã (IaC) là một phương pháp hiện đại cung cấp và triển khai tài nguyên Đám mây bằng cách tự động hóa thay vì thông qua cấu hình thủ công hoặc tùy ý. Hầu hết các công cụ IaC đều tự động hóa cấu hình và quản lý cơ sở hạ tầng thông qua việc sử dụng các tập lệnh hoặc tệp cấu hình. Nhiều giải pháp đã được phát triển để triển khai Cơ sở hạ tầng dưới dạng Mã, mỗi giải pháp đều có điểm mạnh và điểm yếu riêng. Hai công cụ IaC thường được sử dụng để điều phối dịch vụ là Terraform từ HashiCorp và Pulumi từ một công ty khởi nghiệp được đầu tư mạo hiểm. Hướng dẫn này phân tích Terraform và Pulumi, giải thích cách thức hoạt động của cả hai sản phẩm và mô tả các tình huống mà mỗi công cụ có thể hữu ích.

Những điều cơ bản của cơ sở hạ tầng dưới dạng mã

Infrastructure as Code quản lý cơ sở hạ tầng chặt chẽ thông qua tự động hóa. IaC tích hợp rõ ràng vào quy trình phát triển phần mềm và là trung tâm của khái niệm DevOps , tức là sự kết hợp giữa phát triển và vận hành. IaC tăng tốc triển khai mạng, giảm chi phí vận hành, loại bỏ lỗi và đảm bảo tính nhất quán trên toàn mạng. Sử dụng triết lý IaC, nhóm DevOps lập kế hoạch có phương pháp về cấu trúc, bố cục và cấu hình của mạng như một phần của quy trình phát triển.

Điều quan trọng là phải cẩn thận quyết định sử dụng công cụ IaC nào trước khi tiến hành bất kỳ triển khai nào. Pulumi và Terraform đều là công cụ Cơ sở hạ tầng dưới dạng Mã và cả hai đều tập trung vào việc điều phối dịch vụ, nhưng chúng hoạt động khá khác nhau. Pulumi cho phép các nhà phát triển sử dụng các ngôn ngữ lập trình và công cụ quen thuộc, trong khi Terraform áp dụng ngôn ngữ khai báo riêng của mình. Do đó, chúng phù hợp với các môi trường hơi khác nhau, mặc dù về mặt kỹ thuật, nhiều nhóm DevOps có thể sử dụng một trong hai. Cả hai công cụ thậm chí có thể được sử dụng cùng nhau như một phần của quy trình quản lý rủi ro hoặc chuyển tiếp, với cái giá phải trả là sự phức tạp gia tăng. Để hỗ trợ cho quyết định này, hướng dẫn này trước tiên giới thiệu và giải thích hai ứng dụng. Sau đó, hướng dẫn sẽ so sánh và đối chiếu chúng trên một số khía cạnh và kết thúc bằng phần tóm tắt và khuôn khổ ra quyết định cấp cao.

Giới thiệu về Terraform

Terraform là một công cụ IaC nguồn mở để xây dựng và mở rộng mạng và quản lý trạng thái hoạt động của mạng. Terraform không phải là một công cụ cấu hình phần mềm và không cài đặt và quản lý phần mềm trên bất kỳ thiết bị mục tiêu nào. Thay vào đó, Terraform được thiết kế để tạo, sửa đổi và hủy máy chủ. Nó rất phù hợp với các trung tâm dữ liệu và môi trường mạng được xác định bằng phần mềm (SDN) nơi thiết bị có khả năng được chuẩn hóa và ảo hóa. Terraform có thể xử lý các thành phần cấp thấp hơn, chẳng hạn như thiết bị lưu trữ và mạng, cũng như các thành phần cấp cao hơn, bao gồm các mục nhập DNS. Để triển khai quản lý trạng thái, Terraform ánh xạ các tài nguyên thực tế trở lại cấu hình ban đầu, lưu trữ siêu dữ liệu mạng và cải thiện hiệu suất mạng. Terraform đơn giản, dễ sử dụng và hầu như không yêu cầu kinh nghiệm lập trình.

Những công dụng chính của Terraform

Terraform thường được sử dụng để quản lý các nhà cung cấp dịch vụ bên ngoài, bao gồm cả mạng lưới đám mây, nhưng cũng có thể được sử dụng trên các giải pháp nội bộ. Terraform mô hình hóa các mối phụ thuộc giữa các ứng dụng và tiện ích bổ sung, do đó có thể đảm bảo lớp cơ sở dữ liệu hoạt động hoàn toàn trước khi bất kỳ máy chủ web nào được khởi chạy. Điều này làm cho nó đặc biệt hữu ích cho các ứng dụng đa tầng. Terraform độc lập với bất kỳ nhà cung cấp đám mây cụ thể nào và có thể kiểm soát nhiều đám mây, do đó tăng khả năng chịu lỗi. Nhiều nhà cung cấp và đám mây có thể được quản lý bằng một tệp cấu hình duy nhất. Sự dễ dàng trong việc lắp ráp một mạng lưới đám mây nhanh chóng trong Terraform khiến nó trở thành lựa chọn tốt cho các bản demo và các môi trường dùng một lần khác. Terraform cũng thuận tiện khi thử nghiệm, xác thực các bản sửa lỗi và chứng nhận chấp nhận chính thức.

Terraform hoạt động như thế nào

Terraform sử dụng phương pháp khai báo để tự động hóa. Các tệp Terraform mô tả trạng thái cuối của hệ thống, nhưng không mô tả các bước thực hiện để đạt được trạng thái đó. Terraform hoạt động ở mức trừu tượng cao và không yêu cầu lập trình cấp thấp. Bạn chỉ cần cung cấp mô tả về tài nguyên đám mây và các dịch vụ phải được tạo hoặc thay đổi. Trạng thái cuối được chỉ định bằng Ngôn ngữ cấu hình HashiCorp (HCL), mà Terraform khuyến nghị, hoặc JSON. HCL là một ngôn ngữ rất đơn giản và không yêu cầu kinh nghiệm lập trình trước đó để sử dụng nó.

Các nhà cung cấp dịch vụ và tài nguyên trong mạng đều được chỉ định bằng HCL. Tài nguyên mô tả một phần cơ sở hạ tầng cụ thể, chẳng hạn như mạng ảo. Để đơn giản hóa cấu trúc của cấu hình, HCL cung cấp các khối, đối số và biểu thức. Khối được sử dụng để nhóm các tác vụ hoặc mục lại với nhau một cách hợp lý. Đối số gán một giá trị cố định hoặc một biểu thức cho một mã định danh. HCL không có bất kỳ dữ liệu phức tạp hoặc cấu trúc điều khiển nào.

Để thực hiện cấu hình thực tế, Terraform sử dụng các nhà cung cấp , có thể là chính thức hoặc do cộng đồng phát triển. Nhà cung cấp là các API được sử dụng để khai báo một tập hợp các loại tài nguyên và nguồn dữ liệu. Chúng cho phép Terraform quản lý một loại thiết bị hoặc thành phần cụ thể. Mặc dù các nhà cung cấp thường được liên kết với một nhà cung cấp cơ sở hạ tầng cụ thể, một số là tiện ích chung, chẳng hạn như trình tạo mật khẩu. Các nhà cung cấp Terraform, bao gồm Nhà cung cấp Linode , được truy cập thông qua Terraform Registry . Bạn cũng có thể tạo các mô-đun của riêng mình. Tệp Terraform, có phần .tfmở rộng, thường chứa các khối nhà cung cấp và ít nhất một khối tài nguyên.

Sau đây là ví dụ minh họa cách Terraform có thể hoạt động kết hợp với nhà cung cấp Linode:

provider "linode" {
  token = "YOUR_LINODE_API_TOKEN"
}

resource "linode_instance" "terraform-web" {
        image = "linode/ubuntu20.04"
        label = "Terraform-Web-Example"
        group = "Terraform"
        region = "us-east"
        type = "g6-standard-1"
        authorized_keys = [ "YOUR_PUBLIC_SSH_KEY" ]
        root_pass = "YOUR_ROOT_PASSWORD"
}

Quy trình làm việc của Terraform

Có ba bước trong quy trình làm việc thông thường của Terraform:

  1. Viết – Viết các tệp cấu hình bằng HCL. Cấu hình phải mô tả đầy đủ các thành phần cần thiết và trạng thái cuối cùng của hệ thống.
  2. Plan – Xem trước kết quả cuối cùng bằng cách sử dụng terraform plan. Lệnh này nhắc Terraform phân tích các tệp và tạo một kế hoạch hành động, giải thích chính xác những gì nó định làm. Kế hoạch này biểu đồ hóa tất cả các phụ thuộc và liệt kê các thành phần có thể được cấu hình song song.
  3. Áp dụng – Khi kế hoạch được hoàn thiện, sử dụng terraform applyđể đẩy cấu hình tới các thiết bị.

Người dùng thường xuyên qua lại giữa các giai đoạn viết và lập kế hoạch, cho đến khi kế hoạch phù hợp với kỳ vọng của họ. Đây là cách dễ dàng, không rủi ro để xác thực và tinh chỉnh cấu hình. Khi cấu hình được áp dụng, Terraform sử dụng một loạt các hoạt động tạo, đọc, cập nhật và xóa (CRUD) để đưa mạng vào trạng thái cuối cùng. Có thể dễ dàng thực hiện các thay đổi đối với cấu hình mạng. Terraform xác định chính xác những gì đã thay đổi và tạo ra một kế hoạch gia tăng giúp giảm thiểu sự gián đoạn. Bước đầu tiên, terraform initđược sử dụng để phân bổ trước các nhà cung cấp cần thiết và khi mạng không còn cần thiết nữa, terraform destroycó thể phá bỏ mạng.

Terraform và các sản phẩm khác

Mặc dù Terraform không phải là công cụ quản lý cấu hình, nhưng nó có thể được sử dụng kết hợp với một công cụ khác để cung cấp giải pháp toàn diện. Terraform cung cấp bố cục mạng cấp cao hơn, trong khi công cụ quản lý cấu hình hoạt động trên từng thiết bị. Một cách tiếp cận khác để tích hợp các thành phần này là để Terraform khởi động dịch vụ quản lý cấu hình. Terraform cung cấp dịch vụ Terraform Cloud trả phí, miễn phí cho tối đa năm người. Cloud hợp lý hóa quy trình làm việc của Terraform và bổ sung thêm không gian làm việc. Nó được thiết kế cho các nhóm làm việc cùng nhau trên cùng một mạng.

Linode cung cấp một số hướng dẫn về Terraform , giải thích cách cài đặt và sử dụng Terraform.

Giới thiệu về Pulumi

Tương tự như Terraform, Pulumi là một công cụ IaC nguồn mở chủ yếu được sử dụng để điều phối dịch vụ. Nó có thể triển khai, quản lý và cập nhật cơ sở hạ tầng đám mây, container, cơ sở dữ liệu và dịch vụ lưu trữ. Pulumi có thể cung cấp cả các thành phần cấp thấp hơn như lưu trữ và mạng, và các thành phần cấp cao hơn. Sự khác biệt lớn nhất là Pulumi cho phép người dùng mô tả trạng thái mạng bằng các ngôn ngữ lập trình truyền thống và các công cụ quen thuộc. Cơ sở hạ tầng có thể được xác định bằng JavaScript, Typescript, Python, Go hoặc bất kỳ ngôn ngữ .NET nào, bao gồm C#. Tương tự như vậy, có thể sử dụng các IDE, khung thử nghiệm và công cụ hiện có với Pulumi.

Công dụng chính của Pulumi

Pulumi được thiết kế để cho phép các tổ chức quản lý cơ sở hạ tầng của họ bằng các bộ kỹ năng và công cụ hiện có. Điều này cho phép tích hợp tốt hơn các hệ thống cũ, tương tác với đám mây mạng thông qua bộ công cụ phát triển phần mềm Pulumi (SDK). Cách tiếp cận này phù hợp với văn hóa DevOps, vì nhóm phát triển có thể chỉ định cơ sở hạ tầng bằng các ngôn ngữ lập trình bắt buộc nổi tiếng. Không cần phải học bất kỳ ngôn ngữ mới nào.

Với Pulumi, các nhóm có thể triển khai lên bất kỳ đám mây nào, tích hợp với hệ thống CI/CD và xem xét các thay đổi trước khi thực hiện. Pulumi cung cấp nhiều tính năng nâng cao như khả năng kiểm tra, dịch vụ mã hóa tích hợp và tích hợp với nhà cung cấp danh tính. Nó có thể thực hiện các điểm kiểm tra hoặc ảnh chụp nhanh và lưu trữ các mục cấu hình nhạy cảm, chẳng hạn như mật khẩu, dưới dạng bí mật.

Pulumi hoạt động như thế nào

Pulumi tuân theo “mô hình trạng thái mong muốn”. Đầu tiên, nó tính toán trạng thái cuối cùng của mạng. Sau đó, công cụ triển khai của Pulumi so sánh trạng thái này với trạng thái hiện tại và xác định những gì phải được tạo hoặc thay đổi. Máy chủ ngôn ngữ, chẳng hạn như Python, thực thi chương trình, trong khi công cụ triển khai Pulumi sử dụng các nhà cung cấp tài nguyên của mình để quản lý các thành phần riêng lẻ. Sau khi triển khai, Pulumi cập nhật chế độ xem cơ sở hạ tầng hiện tại để phản ánh trạng thái mới. Mỗi nhà cung cấp tài nguyên bao gồm một trình cắm thêm tài nguyên cùng với một tập hợp các ràng buộc có thể lập trình cho các tài nguyên. Công cụ triển khai sử dụng trình cắm thêm để quản lý mục tiêu. Các thay đổi cấu hình được áp dụng bằng lệnh pulumi up. Pulumi thực thi cấu hình theo thứ tự tuần tự, trong khi cố gắng quản lý tất cả các phụ thuộc. Pulumi không yêu cầu máy chủ chuyên dụng và có thể triển khai từ thiết bị cục bộ.

Kiến trúc của Pulumi

Một số khái niệm kiến ​​trúc chính hỗ trợ Pulumi bao gồm các dự án, chương trình, ngăn xếp, trạng thái và tài nguyên. Mỗi mạng được liên kết với một dự án Pulumi . Đây là một thư mục chứa một hoặc nhiều chương trình và siêu dữ liệu cần thiết để chạy chúng. Mỗi dự án phải chứa một pulumi.yamltệp cấu hình trong thư mục dự án hoặc trong thư mục cha. Tệp YAML chỉ ra môi trường thời gian chạy và danh sách các tệp nhị phân cần thiết. Lệnh pulumi newtạo một dự án mới và tạo tệp cấu hình mặc định.

Các chương trình được viết bằng ngôn ngữ lập trình phổ biến, thường là JavaScript hoặc Python. Một chương trình mô tả bố cục của mạng đám mây và phân bổ các đối tượng tài nguyên để tạo các thành phần mới. Tài nguyên là một thành phần cơ sở hạ tầng cơ bản, chẳng hạn như CPU, thiết bị lưu trữ hoặc phiên bản cơ sở dữ liệu. Cũng có thể tạo một tài nguyên tùy chỉnh như Google Cloud hoặc tài nguyên thành phần , là một nhóm hợp lý các tài nguyên khác. Một ví dụ điển hình về tài nguyên thành phần là Kubernetes Cluster. Pulumi SDK chứa các thư viện cho mỗi tài nguyên tùy chỉnh. Mỗi tài nguyên có một cụm thuộc tính, tương ứng với các thuộc tính và trạng thái của thiết bị mục tiêu.

Bạn có thể tạo một phiên bản có thể cấu hình của chương trình, được gọi là stack , bằng pulumi uplệnh. Stack biểu thị một môi trường triển khai riêng biệt. Pulumi tạo một stack mặc định cho mỗi dự án mới, nhưng có thể có nhiều stack trong cùng một dự án. Stack thứ cấp có thể được tạo bằng lệnh pulumi stack init <stackName>, trong đó <stackname>là tên duy nhất cho stack mới. Mỗi stack phải có tệp YAML riêng chứa thông tin cụ thể về stack. Các hoạt động của Pulumi tham chiếu đến môi trường đang hoạt động, do đó pulumi upluôn tạo một phiên bản triển khai dựa trên chương trình và siêu dữ liệu hiện tại.

Có thể sử dụng các ngăn xếp khác nhau để thử nghiệm và để đưa ra các bản cập nhật ứng dụng. Ví dụ, một tổ chức có thể có các ngăn xếp phát triển và sản xuất. Các ngăn xếp có thể xuất các giá trị, sau đó có thể được kết hợp vào các ngăn xếp và công cụ khác, trong khi các tham chiếu ngăn xếp cho phép truy cập giữa các ngăn xếp. Bạn có thể liệt kê tất cả các ngăn xếp bằng lệnh stack lshoặc chạy pulumi stackđể xem chi tiết ngăn xếp. pulumi destroyLệnh được sử dụng để xóa mọi tài nguyên ngăn xếp còn lại. Sau đó, có thể xóa bản thân ngăn xếp bằng lệnh plum stack rm.

Pulumi lưu trữ siêu dữ liệu dưới dạng trạng thái , được sử dụng để quản lý tài nguyên đám mây. Trạng thái được lưu trữ trong phần phụ trợ do bạn chọn. Pulumi khuyên bạn nên lưu trữ trạng thái bằng tiện ích Pulumi Service của họ, có thể tự lưu trữ hoặc sử dụng như một dịch vụ trực tuyến. Tuy nhiên, có các giải pháp lưu trữ khác. Pulumi Service cho phép bạn nhập tài nguyên, lấy điểm kiểm tra và ảnh chụp nhanh, mã hóa trạng thái và lưu trữ cấu hình nhạy cảm, chẳng hạn như mật khẩu, dưới dạng bí mật. Để sử dụng Pulumi, bạn phải đăng nhập vào tài khoản Pulumi.

Sau đây là ví dụ minh họa cách sử dụng Pulumi và JavaScript để tạo Linode:

const linode = require("@pulumi/linode")
const domain = new linode.Domain("my-domain", {
  domain: "foobar.example",
  soaEmail: "example@foobar.example",
  type: "master",
});

Sau đây là cách một chương trình tương tự sẽ xuất hiện trong Python:

import pulumi_linode as linode
domain = linode.Domain("my-domain",
  domain='foobar.example',
  soa_email='example@foobar.example',
  type='master',
)

Pulumi và các sản phẩm khác

Pulumi không phải là công cụ quản lý cấu hình. Nó hoạt động tốt nhất khi kết hợp với một công cụ khác có thể cấu hình các ứng dụng cụ thể trên các tài nguyên đám mây. Pulumi có khả năng triển khai các container Docker, có khả năng loại bỏ nhu cầu về công cụ quản lý cấu hình.

Pulumi yêu cầu tài khoản trả phí cho nhiều người dùng. Sản phẩm Pulumi for Teams trả phí cung cấp các tính năng chia sẻ mã, tích hợp Git và Slack và hỗ trợ triển khai CI/CD. Pulumi sử dụng dịch vụ Pulumi Console trên web để quản lý đồng thời, giúp giảm bớt một số tính phức tạp và hỗ trợ đường cong học tập. Pulumi CLI sử dụng dịch vụ này theo mặc định, nhưng bạn được phép tự quản lý trạng thái.

Linode cung cấp hướng dẫn giải thích cách bắt đầu sử dụng Pulumi . Hướng dẫn giải thích cách cài đặt và sử dụng công cụ.

So sánh Terraform và Pulumi

Terraform và Pulumi có chung mục tiêu. Chúng là các công cụ điều phối dịch vụ, xử lý tốt các mạng đám mây và đa đám mây. Cả hai công cụ đều đảm bảo mạng cơ sở hạ tầng có cấu hình mong muốn, ghi nhớ trạng thái hiện tại và xử lý hiệu quả mọi bản cập nhật. Cả Terraform và Pulumi đều không xử lý quản lý cấu hình, nhưng cả hai công cụ đều tích hợp với Docker, giúp giảm thiểu mối lo ngại này.

Sự khác biệt chính giữa hai ứng dụng liên quan đến cách chúng được sử dụng. Trong Terraform, trạng thái cuối của hệ thống được chỉ định bằng ngôn ngữ khai báo HCL. Khi sử dụng Pulumi, các chi tiết được chỉ định bằng ngôn ngữ lập trình truyền thống như Python, Go hoặc C#. Terraform và ngôn ngữ HCL áp dụng các hướng dẫn mã nghiêm ngặt hơn, trong khi Pulumi cung cấp khả năng tự do mã hóa lớn hơn. Vì Pulumi hoạt động với các ngôn ngữ lập trình mạnh mẽ nên nó cung cấp quyền truy cập vào các cấu trúc dữ liệu, thuật toán và lớp phổ biến. Một số báo cáo cho thấy việc bắt đầu sử dụng HCL rất dễ dàng, nhưng khó thành thạo công cụ này hơn. Thật không may, rất khó để sử dụng một số tính năng nâng cao nếu không có kiến ​​thức nâng cao hơn. Ứng dụng Pulumi Console giúp quản lý đồng thời và trạng thái triển khai dễ dàng và trực quan hơn một chút. Phải sử dụng Terraform Cloud để có được cùng chức năng. Nếu không, thông tin trạng thái của Terraform phải được lưu trữ trên ổ cứng cục bộ.

Pulumi được coi là có hỗ trợ kiểm thử tốt hơn. Nó có thể được sử dụng kết hợp với các tập lệnh cũ vì nó hỗ trợ các bài kiểm tra đơn vị trong bất kỳ khuôn khổ nào. Các ngăn xếp khác nhau có thể được sử dụng trong mỗi môi trường để hỗ trợ các nỗ lực phát triển. Terraform không có chức năng kiểm thử chính thức, nhưng nhiều người thấy rằng nó dễ khắc phục sự cố và gỡ lỗi hơn. Terraform cũng có tính mô-đun hơn và làm nhiều hơn để cho phép tái sử dụng thành phần.

Pulumi có thể tích hợp với các nhà cung cấp Terraform để giúp các tổ chức thoát khỏi Terraform. Nó thậm chí còn cung cấp tf2pulumitiện ích để chuyển đổi HCL sang định dạng tương thích với Pulumi.

Một số thuộc tính cơ bản thường được sử dụng để thảo luận về các công cụ IaC khác nhau. Terraform và Pulumi có thể được so sánh và đối chiếu thêm theo các chiều sau.

Nguồn mở so với tính khả dụng thương mại

Cả Pulumi và Terraform đều có sẵn ở định dạng mã nguồn mở miễn phí. Tuy nhiên, cả hai đều có dịch vụ trả phí cao cấp bao gồm các cải tiến cho công việc nhóm và tự động hóa. Terraform Cloud hợp lý hóa một số quy trình nhất định và được tiếp thị cho các công ty lớn hơn. Một số chức năng của Cloud là miễn phí, trong khi các tính năng khác chỉ khả dụng cho các tài khoản trả phí. Pulumi for Teams cũng hướng đến các nhóm lớn hơn.

Công nghệ sử dụng

Terraform được viết bằng ngôn ngữ Go. Tuy nhiên, nó chỉ chấp nhận các tệp cấu hình được viết bằng ngôn ngữ HCL của riêng nó hoặc bằng JSON. Pulumi được viết bằng Typescript, Python và Go, và chấp nhận các tài nguyên được viết bằng JavaScript, Typescript, Python, Go hoặc ngôn ngữ .NET. Nó không có ngôn ngữ khai báo tùy chỉnh của riêng nó.

Các nhà cung cấp Terraform được truy cập thông qua Terraform Registry. Pulumi SDK chứa các thư viện cho hầu hết các nhà cung cấp chính.

Cách tiếp cận mang tính tuyên bố so với cách tiếp cận mang tính mệnh lệnh

Mặc dù các tệp Pulumi được viết bằng ngôn ngữ bắt buộc, chẳng hạn như Python, nhưng cả hai công cụ đều thực sự sử dụng phương pháp khai báo. Tình huống Terraform thì đơn giản. Các tệp được viết theo cách khai báo. Các tệp chỉ định cách xây dựng cơ sở hạ tầng, nhưng không chỉ định cách cấu hình cơ sở hạ tầng. Trong Pulumi, mục đích của các tệp tài nguyên cũng tương tự như vậy để chỉ ra bố cục mạng. Mã không cho Pulumi biết lệnh nào cần chạy để triển khai mạng.

Cấu hình có thể thay đổi so với cấu hình không thể thay đổi

Cả hai công cụ đều hỗ trợ cấu hình có thể thay đổi. Điều này có nghĩa là các thành phần có thể được sửa đổi sau khi chúng được tạo. Tuy nhiên, cả Pulumi và Terraform đều hoạt động tốt hơn khi sử dụng phương pháp bất biến, phá hủy và tạo lại các thành phần thay vì cấu hình lại chúng. Đây là quy trình thanh lịch và hiệu quả hơn để quản lý các thành phần đám mây, vì nó thực thi tính nhất quán và tránh trôi mạng.

Phân phối đẩy và kéo

Cả Terraform và Pulumi đều sử dụng phân phối đẩy. Chúng cung cấp cấu hình cho các thiết bị mục tiêu.

Tài nguyên bên ngoài

Đây là một lĩnh vực mà Terraform có lợi thế. Terraform đã tồn tại trong một thời gian dài hơn, có cộng đồng lớn hơn và được ghi chép đầy đủ hơn. Pulumi cũng có cộng đồng người dùng, nhưng nhỏ hơn nhiều. Tuy nhiên, Pulumi là một công cụ mới hơn nhiều, vì vậy nó có thể bắt kịp trong tương lai gần.

Lựa chọn giữa Terraform và Pulumi

Mặc dù Terraform và Pulumi có điểm mạnh và điểm yếu tương đối, cả hai đều đạt được các mục tiêu IaC rất giống nhau. Do đó, quyết định cuối cùng giữa hai công cụ này có thể phụ thuộc vào cách nhóm DevOps của bạn được cấu trúc. Nếu bạn đang phát triển một môi trường mạng từ đầu và không ngại học một ngôn ngữ khai báo mới, Terraform là một lựa chọn chắc chắn. Nhưng nếu bạn muốn tận dụng các tập lệnh, công cụ kiểm tra và kỹ năng lập trình hiện có, bạn có thể sử dụng Pulumi tốt hơn. Nếu bạn phải kết hợp các cấu trúc điều khiển như vòng lặp và điều kiện vào mã, thì Pulumi là lựa chọn tốt nhất. Nếu một trong hai cách tiếp cận được chấp nhận, bạn có thể cân nhắc mức độ trưởng thành tương đối và độ sâu cộng đồng của các công cụ, điều này có lợi cho Terraform. Tuy nhiên, Pulumi đang phát triển nhanh chóng và đang tự ý cạnh tranh với Terraform, vì vậy có khả năng cải thiện nhanh chóng. Công nghệ IaC luôn phát triển và bối cảnh cạnh tranh có thể khác sau một hoặc hai năm.

Vì Pulumi tích hợp với Terraform để cung cấp đường dẫn nâng cấp mượt mà, nên cũng có thể sử dụng cả hai công cụ cùng nhau. Bạn có thể ủy quyền các thành phần mạng cấp thấp hơn cho Terraform, trong khi đặt các thiết bị cấp cao hơn dưới sự giám sát của Pulumi. Như thường lệ, lựa chọn chính xác phụ thuộc vào hoàn cảnh của bạn và bản chất chính xác của mạng của bạn.

Thông tin thêm

Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.