Quản lý cấu hình là gì?
Quản lý cấu hình là quá trình duy trì các ứng dụng, hệ thống và máy chủ ở trạng thái mong muốn. IaC sẽ đảm bảo cơ sở hạ tầng của bạn ở trạng thái mong muốn nhưng sau đó, đặc biệt là terraform sẽ không quản lý trạng thái mong muốn của cài đặt hệ điều hành hoặc ứng dụng của bạn.
Đó là nơi các công cụ quản lý cấu hình xuất hiện đảm bảo rằng hệ thống và ứng dụng hoạt động theo cách được mong đợi khi có thay đổi. Quản lý cấu hình giúp bạn không thực hiện các thay đổi cấu hình mà không có sự quản lý bằng tài liệu.
Tại sao cần sử dụng Quản lý cấu hình
Kịch bản hoặc lý do bạn muốn sử dụng Quản lý cấu hình, hãy gặp quản trị viên hệ thống của chúng ta, người làm việc trên tất cả các hệ thống – anh ấy tên là Dũng.
Điều gì sẽ xảy ra nếu hệ thống của chúng ta gặp sự cố, nếu có hỏa hoạn, một máy chủ hoạt động không tốt? Dũng biết chính xác phải làm gì anh ấy có thể khắc phục sự cố đó một cách dễ dàng. Tuy nhiên, các vấn đề sẽ trở nên khó khăn với Dũng nếu nhiều máy chủ bắt đầu gặp sự cố, đặc biệt khi bạn có môi trường lớn và ngày càng mở rộng.
Đây là lý do tại sao Dũng cần phải có một công cụ quản lý cấu hình. Các công cụ Quản lý Cấu hình có thể giúp Dũng trông giống như một ngôi sao nhạc rock, tất cả những gì anh ấy phải làm là định cấu hình đúng mã cho phép anh ấy đưa ra hướng dẫn về cách thiết lập từng mã các máy chủ một cách hiệu quả và ở quy mô lớn.
Công cụ quản lý cấu hình
Có sẵn nhiều công cụ quản lý cấu hình và mỗi công cụ đều có các tính năng cụ thể giúp công cụ này hoạt động tốt hơn trong một số tình huống so với các công cụ khác.
- Chef
- Chef đảm bảo cấu hình được áp dụng nhất quán trong mọi môi trường, ở mọi quy mô lớn với cơ sở hạ tầng tự động hóa.
- Chef là một công cụ mã nguồn mở được phát triển bởi OpsCode được viết bằng Ruby và Erlang.
- Chef phù hợp nhất cho các tổ chức có cơ sở hạ tầng không đồng nhất và đang tìm kiếm các giải pháp hoàn thiện.
- Recipes và Cookbooks xác định mã cấu hình cho hệ thống của bạn.
- Ưu – Có sẵn một bộ sưu tập lớn các recipes
- Ưu – Tích hợp tốt với Git, cung cấp khả năng kiểm soát phiên bản mạnh mẽ
- Nhược – Phải học rất nhiều và cần một lượng thời gian đáng kể để làm quen.
- Nhược – Máy chủ chính không có nhiều quyền kiểm soát.
- Kiến trúc – Server/Client
- Dễ dàng thiết lập – Trung bình
- Ngôn ngữ – Procedural – Chỉ định cách thực hiện tác vụ
- Puppet
- Puppet là công cụ quản lý cấu hình hỗ trợ triển khai tự động.
- Puppet được xây dựng bằng Ruby và sử dụng DSL để viết bảng kê khai.
- Puppet cũng hoạt động tốt với cơ sở hạ tầng không đồng nhất, nơi tập trung vào khả năng mở rộng.
- Ưu – Cộng đồng hỗ trợ lớn.
- Ưu – Cơ chế báo cáo được viết rất tốt.
- Nhược – Các nhiệm vụ nâng cao yêu cầu kiến thức về ngôn ngữ Ruby.
- Nhược – Máy chủ chính không có nhiều quyền kiểm soát.
- Kiến trúc – Server/Client
- Dễ thiết lập – Trung bình
- Ngôn ngữ – Declarative – Chỉ định những việc cần làm
- Ansible
- Ansible là một công cụ tự động hóa CNTT giúp tự động hóa việc quản lý cấu hình, triển khai trên đám mây, triển khai và điều phối.
- Cốt lõi của Ansible playbooks được viết bằng YAML (Nên làm một phần về YAML như chúng ta đã thấy điều này một vài lần)
- Ansible hoạt động tốt khi các môi trường tập trung vào việc khởi động và chạy mọi thứ một cách nhanh chóng.
- Hoạt động trên playbook cung cấp hướng dẫn cho máy chủ của bạn.
- Ưu – Không agents trên trên các node từ xa.
- Ưu – YAML rất dễ học.
- Nhược – Tốc độ thực hiện thường kém hơn các công cụ khác (Nhanh hơn Dũng tự làm thủ công)
- Nhược – YAML không mạnh bằng Ruby nhưng học nó dễ dàng hơn Ruby.
- Kiến trúc – client only
- Dễ thiết lập – Rất dễ
- Ngôn ngữ – Procedural – Chỉ định cách thực hiện tác vụ
- SaltStack
- SaltStack là một công cụ dựa trên CLI giúp tự động hóa việc quản lý cấu hình và thực thi từ xa.
- SaltStack dựa trên Python trong khi các hướng dẫn được viết bằng YAML hoặc DSL của nó.
- Hoàn hảo cho các môi trường ưu tiên khả năng mở rộng và khả năng phục hồi.
- Ưu – Dễ sử dụng khi thiết lập và chạy
- Ưu – Cơ chế báo cáo tốt
- Nhược – Giai đoạn thiết lập khó khăn
- Nhược – Giao diện người dùng web mới kém phát triển hơn nhiều so với các giao diện người dùng khác.
- Kiến trúc – Server/Client
- Dễ thiết lập – Trung bình
- Ngôn ngữ – Declarative – Chỉ định những việc cần làm
Ansible vs Terraform
Công cụ quản lý cấu hình phổ biến nhất có thể là Ansible (Dễ sử dụng và yêu cầu cơ bản về ngôn ngữ dễ dàng hơn). Bây giờ chúng ta sẽ tìm hiểu một số khác biệt giữa Ansible và Terraform.
Ansible | Terraform | |
---|---|---|
Loại | Ansible là công cụ quản lý cấu hình | Terraform là công cụ điều phối |
Cơ sở hạ tầng | Ansible hỗ trợ cho cơ sở hạ tầng có thể thay đổi (mutable) | Terraform hỗ trợ cho cơ sở hạ tầng không thể thay đổi (immutable) |
Ngôn ngữ | Ansible tuân theo ngôn ngữ thủ tục | Terraform tuân theo ngôn ngữ khai báo |
Cung cấp | Ansible có cung cấp một phần (VM, Mạng, Lưu trữ) | Terraform có cung cấp rộng rãi (VM, Mạng, Lưu trữ) |
Đóng gói | Ansible hỗ trợ đầy đủ cho việc đóng gói & tạo template | Terraform hỗ trợ một phần cho đóng gói & tạo template |
Quản lý vòng đời | Ansible không có quản lý vòng đời | Terraform phụ thuộc nhiều vào vòng đời và quản lý trạng thái |