Thứ sáu, 17/05/2019 | 00:00 GMT+7

Giới thiệu về quản lý cấu hình

Là một chủ đề rộng hơn, quản lý cấu hình (CM) đề cập đến quá trình xử lý một cách có hệ thống các thay đổi đối với hệ thống theo cách mà nó duy trì tính toàn vẹn theo thời gian. Mặc dù quy trình này không bắt nguồn từ ngành CNTT, nhưng thuật ngữ này vẫn được sử dụng rộng rãi để chỉ quản lý cấu hình server .

Tự động hóa đóng một role thiết yếu trong quản lý cấu hình server . Đó là cơ chế được sử dụng để làm cho server đạt được trạng thái mong muốn, được định nghĩa đây bằng cách cung cấp các tập lệnh sử dụng ngôn ngữ và tính năng cụ thể của công cụ. Trên thực tế, tự động hóa là trung tâm của quản lý cấu hình cho server và đó là lý do tại sao người ta cũng thường gọi các công cụ quản lý cấu hình là Công cụ tự động hóa hoặc Công cụ tự động hóa CNTT .

Một thuật ngữ phổ biến khác được sử dụng để mô tả các tính năng tự động hóa được thực hiện bởi các công cụ quản lý cấu hình là Server Orchestration hoặc IT Orchestration , vì các công cụ này thường có khả năng quản lý một đến hàng trăm server từ một máy điều khiển trung tâm.

Có một số công cụ quản lý cấu hình có sẵn trên thị trường. Puppet, Ansible, Chef và Salt là những lựa chọn phổ biến. Mặc dù mỗi công cụ sẽ có những đặc điểm riêng và hoạt động theo những cách hơi khác nhau, nhưng chúng đều được thúc đẩy bởi cùng một mục đích: đảm bảo trạng thái của hệ thống trùng với trạng thái được mô tả bởi các tập lệnh cấp phép của bạn.

Lợi ích của quản lý cấu hình cho server

Mặc dù việc sử dụng quản lý cấu hình thường đòi hỏi nhiều nỗ lực và lập kế hoạch ban đầu hơn so với quản trị hệ thống thủ công, nhưng tất cả những cơ sở hạ tầng server đơn giản nhất sẽ được cải thiện bởi những lợi ích mà nó mang lại. Đến tên một vài:

Cung cấp nhanh server mới

Khi nào một server mới cần được triển khai, một công cụ quản lý cấu hình có thể tự động hóa hầu hết, nếu không phải tất cả, quy trình cung cấp cho bạn. Tự động hóa làm cho việc cung cấp nhanh hơn và hiệu quả hơn nhiều vì nó cho phép các việc tẻ nhạt được thực hiện nhanh hơn và chính xác hơn bất kỳ con người nào có thể. Ngay cả khi có tài liệu thích hợp và kỹ , việc triển khai thủ công một web server , chẳng hạn, có thể mất hàng giờ so với vài phút với quản lý / tự động hóa cấu hình.

Phục hồi nhanh chóng từ các sự kiện quan trọng

Với việc cung cấp nhanh chóng có một lợi ích khác: phục hồi nhanh chóng sau các sự kiện quan trọng. Khi server chuyển sang chế độ offline do các trường hợp không xác định, có thể mất vài giờ để kiểm tra hệ thống đúng cách và tìm hiểu điều gì thực sự đã xảy ra. Trong các tình huống như thế này, triển khai một server thay thế thường là cách an toàn nhất để đưa dịch vụ của bạn trở lại trực tuyến trong khi kiểm tra chi tiết được thực hiện trên server bị ảnh hưởng. Với quản lý cấu hình và tự động hóa, điều này có thể được thực hiện một cách nhanh chóng và tin cậy .

Không còn server Snowflake

Thoạt nhìn, quản trị hệ thống thủ công có vẻ là một cách dễ dàng để triển khai và nhanh chóng sửa chữa server , nhưng nó thường đi kèm với một cái giá. Theo thời gian, có thể trở nên cực kỳ khó để biết chính xác những gì được cài đặt trên một server và những thay đổi nào đã được thực hiện khi quá trình này không được tự động hóa. Các bản sửa lỗi thủ công, chỉnh sửa cấu hình và cập nhật phần mềm có thể biến server thành những bông tuyết độc đáo, khó quản lý và thậm chí khó tái tạo. Bằng cách sử dụng công cụ quản lý cấu hình, quy trình cần thiết để mở một server mới hoặc cập nhật một server hiện có sẽ được ghi lại tất cả trong các tập lệnh cấp phép.

Kiểm soát version cho môi trường server

Khi bạn đã dịch cài đặt server của bạn thành một tập hợp các tập lệnh cấp phép, bạn sẽ có khả năng áp dụng cho môi trường server của bạn nhiều công cụ và quy trình làm việc mà bạn thường sử dụng cho mã nguồn phần mềm.

Các công cụ kiểm soát version , chẳng hạn như Git, được dùng để theo dõi các thay đổi được thực hiện đối với việc cung cấp và duy trì các nhánh riêng biệt cho các version cũ của tập lệnh. Bạn cũng có thể sử dụng kiểm soát version để triển khai policy xem xét mã cho các tập lệnh cấp phép, trong đó mọi thay đổi phải được gửi dưới dạng yêu cầu kéo và được trưởng dự án phê duyệt trước khi được chấp nhận. Thực tiễn này sẽ bổ sung thêm tính nhất quán cho cài đặt cơ sở hạ tầng của bạn.

Môi trường nhân bản

Quản lý cấu hình làm cho việc sao chép các môi trường với cùng một phần mềm và cấu hình giống hệt nhau trở nên đơn giản. Điều này cho phép bạn xây dựng hiệu quả một hệ sinh thái nhiều tầng, với các server production , phát triển và thử nghiệm. Bạn thậm chí có thể sử dụng các máy ảo local để phát triển, được xây dựng bằng các tập lệnh cấp phép giống nhau. Phương pháp này sẽ giảm thiểu các vấn đề gây ra bởi sự khác biệt về môi trường thường xuyên xảy ra khi các ứng dụng được triển khai để production hoặc được chia sẻ giữa các đồng nghiệp với các cài đặt máy khác nhau (hệ điều hành, version phần mềm và / hoặc cấu hình khác nhau).

Tổng quan về Công cụ quản lý cấu hình

Mặc dù mỗi công cụ CM đều có các thuật ngữ, triết lý và hệ sinh thái riêng, nhưng chúng thường chia sẻ nhiều đặc điểm và có các khái niệm tương tự.

Hầu hết các công cụ quản lý cấu hình sử dụng mô hình bộ điều khiển / chủ và nút / tác nhân. Về cơ bản, bộ điều khiển chỉ đạo cấu hình của các node , dựa trên một loạt các hướng dẫn hoặc nhiệm vụ được xác định trong các tập lệnh cấp phép của bạn.

Dưới đây, bạn có thể tìm thấy các tính năng phổ biến nhất có trong hầu hết các công cụ quản lý cấu hình cho server :

Khung tự động hóa

Mỗi công cụ CM cung cấp một cú pháp cụ thể và một tập hợp các tính năng mà bạn có thể sử dụng để viết các tập lệnh cấp phép. Hầu hết các công cụ sẽ có các tính năng làm cho ngôn ngữ của chúng tương tự như các ngôn ngữ lập trình thông thường, nhưng theo cách đơn giản hóa. Biến, vòng lặp và điều kiện là các tính năng phổ biến được cung cấp để tạo điều kiện tạo các tập lệnh cung cấp linh hoạt hơn.

Hành vi lý tưởng

Các công cụ quản lý cấu hình theo dõi trạng thái của tài nguyên để tránh lặp lại các việc đã được thực thi trước đó. Nếu một gói đã được cài đặt, công cụ sẽ không cố cài đặt lại. Mục tiêu là sau mỗi lần chạy cấp phép, hệ thống đạt (hoặc giữ) trạng thái mong muốn, ngay cả khi bạn chạy nó nhiều lần. Đây là những gì đặc trưng cho các công cụ này là có một hành vi không cố định . Tuy nhiên, hành vi này không nhất thiết phải được thực thi trong mọi trường hợp.

Sự kiện hệ thống

Các công cụ quản lý cấu hình thường cung cấp thông tin chi tiết về hệ thống được cung cấp. Dữ liệu này có sẵn thông qua các biến toàn cục, được gọi là dữ kiện . Chúng bao gồm những thứ như network interface , địa chỉ IP, hệ điều hành và phân phối. Mỗi công cụ sẽ cung cấp một loạt dữ kiện khác nhau. Chúng được dùng để làm cho các tập lệnh và mẫu cung cấp thích ứng hơn cho nhiều hệ thống.

Hệ thống đúc

Hầu hết các công cụ CM sẽ cung cấp một hệ thống tạo khuôn mẫu tích hợp được dùng để tạo điều kiện thuận lợi cho việc cài đặt các file và dịch vụ cấu hình. Các mẫu thường hỗ trợ các biến, vòng lặp và điều kiện được dùng để tối đa hóa tính linh hoạt.Ví dụ: bạn có thể sử dụng một mẫu để dễ dàng cài đặt một server ảo mới trong Apache, trong khi sử dụng lại cùng một mẫu cho nhiều cài đặt server . Thay vì chỉ có các giá trị tĩnh, được mã hóa cứng, một mẫu phải chứa các trình giữ chỗ cho các giá trị có thể thay đổi từ server này sang server lưu trữ, chẳng hạn như NameServerDocumentRoot .

Khả năng mở rộng

Mặc dù các tập lệnh cấp phép có thể rất chuyên biệt cho các nhu cầu và đòi hỏi của một server cụ thể, có nhiều trường hợp khi bạn có các cài đặt server tương tự hoặc các phần của cài đặt có thể được chia sẻ giữa nhiều server . Hầu hết các công cụ cung cấp sẽ cung cấp các cách mà bạn có thể dễ dàng sử dụng lại và chia sẻ các phần nhỏ hơn trong cài đặt cung cấp của bạn dưới dạng module hoặc plugin.

Các module và plugin của bên thứ ba thường dễ tìm thấy trên Internet, đặc biệt đối với các cài đặt server thông thường như cài đặt web server PHP. Các công cụ CM có xu hướng có một cộng đồng mạnh được xây dựng xung quanh chúng và user được khuyến khích chia sẻ các tiện ích mở rộng tùy chỉnh của họ. Sử dụng các tiện ích mở rộng do user khác cung cấp có thể giúp bạn tiết kiệm rất nhiều thời gian, đồng thời là một cách tốt để học cách user khác giải quyết các vấn đề chung bằng công cụ bạn chọn.

Chọn công cụ quản lý cấu hình

Có rất nhiều công cụ CM có sẵn trên thị trường, mỗi công cụ có một bộ tính năng khác nhau và mức độ phức tạp khác nhau. Các lựa chọn phổ biến bao gồm Chef, Ansible và Puppet. Thách thức đầu tiên là chọn một công cụ phù hợp với nhu cầu của bạn.

Có một số điều bạn nên cân nhắc trước khi đưa ra lựa chọn:

Cơ sở hạ tầng phức tạp

Hầu hết các công cụ quản lý cấu hình yêu cầu một hệ thống phân cấp tối thiểu bao gồm một máy điều khiển và một nút sẽ được quản lý bởi nó. Múa rối, ví dụ, đòi hỏi phải có một ứng dụng đại lý phải được cài đặt trên mỗi nút, và một ứng dụng chủ phải được cài đặt trên máy điều khiển. Mặt khác, Ansible có cấu trúc phi tập trung không yêu cầu cài đặt phần mềm bổ sung trên các node , nhưng dựa vào SSH để thực hiện các việc cung cấp. Đối với các dự án nhỏ hơn, cơ sở hạ tầng đơn giản hóa có vẻ phù hợp hơn, tuy nhiên điều quan trọng là phải xem xét các khía cạnh như khả năng mở rộng và bảo mật, những điều này có thể không được thực thi bởi công cụ.

Một số công cụ có thể có nhiều thành phần và bộ phận chuyển động hơn, điều này có thể làm tăng độ phức tạp của cơ sở hạ tầng của bạn, tác động đến đường cong học tập và có thể làm tăng chi phí triển khai tổng thể.

Đường cong học tập

Như đã đề cập trước đó trong bài viết này, các công cụ CM cung cấp cú pháp tùy chỉnh, đôi khi sử dụng Ngôn ngữ dành riêng cho domain (DSL) và một tập hợp các tính năng bao gồm khuôn khổ của chúng để tự động hóa. Như với các ngôn ngữ lập trình thông thường, một số công cụ sẽ yêu cầu một đường học tập cao hơn để thành thạo. Các yêu cầu về cơ sở hạ tầng cũng có thể ảnh hưởng đến mức độ phức tạp của công cụ và mức độ nhanh chóng mà bạn có thể nhận thấy lợi tức đầu tư.

Giá cả

Hầu hết các công cụ CM đều cung cấp version miễn phí hoặc open-souce , với đăng ký trả phí cho các tính năng và dịch vụ nâng cao. Một số công cụ sẽ có nhiều hạn chế hơn những công cụ khác, vì vậy tùy thuộc vào nhu cầu cụ thể của bạn và cách cơ sở hạ tầng của bạn phát triển, bạn có thể phải trả tiền cho những dịch vụ này.Bạn cũng nên coi việc đào tạo là một khoản chi phí bổ sung tiềm ẩn, không chỉ về mặt tiền tệ mà còn về thời gian cần thiết để giúp group của bạn bắt kịp tốc độ với công cụ bạn chọn.

Dụng cụ nâng cao

Như đã đề cập trước đây, hầu hết các công cụ đều cung cấp các dịch vụ trả phí có thể bao gồm hỗ trợ, tiện ích mở rộng và công cụ nâng cao. Điều quan trọng là phải phân tích nhu cầu cụ thể của bạn, quy mô cơ sở hạ tầng của bạn và liệu có nhu cầu sử dụng các dịch vụ này hay không. Ví dụ: bảng quản lý là một dịch vụ phổ biến được cung cấp bởi các công cụ này và chúng có thể tạo điều kiện thuận lợi cho quá trình quản lý và giám sát tất cả các server của bạn từ một điểm trung tâm. Ngay cả khi bạn chưa cần những dịch vụ như vậy, hãy xem xét các lựa chọn cho nhu cầu cần thiết trong tương lai.

Cộng đồng và Hỗ trợ

Một cộng đồng mạnh mẽ và thân thiện có thể cực kỳ giàu có để hỗ trợ và cung cấp tài liệu, vì user thường rất vui khi chia sẻ kiến thức và các tiện ích mở rộng của họ (mô-đun, plugin và tập lệnh cung cấp) với những user khác. Điều này có thể hữu ích để tăng tốc quá trình học tập của bạn và tránh chi phí bổ sung với hỗ trợ hoặc đào tạo có trả phí.

Bảng dưới đây sẽ cung cấp cho bạn cái nhìn tổng quan về sự khác biệt chính giữa ba trong số các công cụ quản lý cấu hình phổ biến nhất hiện có trên thị trường: Ansible, Puppet và Chef.

Ansible Puppet Bếp trưởng
Ngôn ngữ tập lệnh YAML DSL tùy chỉnh dựa trên Ruby Ruby
Cơ sở hạ tầng Máy điều khiển áp dụng cấu hình trên các node thông qua SSH Puppet Master đồng bộ hóa cấu hình trên Puppet Nodes Chef Workstation đẩy cấu hình lên Chef Server, từ đó các Chef Nodes sẽ được cập nhật
Yêu cầu phần mềm chuyên dụng cho các node Không Đúng Đúng
Cung cấp điểm kiểm soát tập trung Không. Mọi máy tính đều có thể là bộ điều khiển Có, thông qua Puppet Master Có, thông qua Chef Server
Thuật ngữ Script Playbook / Role Manifests / Mô-đun Công thức nấu ăn / Sách dạy nấu ăn
Lệnh thực thi tác vụ Tuần tự Không liên tiêp Tuần tự

Bước tiếp theo

Lúc này, ta đã thấy cách quản lý cấu hình hoạt động cho các server và những điều cần cân nhắc khi chọn một công cụ để xây dựng cơ sở hạ tầng quản lý cấu hình của bạn. Trong các hướng dẫn tiếp theo của loạt bài này, ta sẽ có trải nghiệm thực tế với ba công cụ quản lý cấu hình phổ biến: Ansible, Puppet và Chef.

Để bạn có cơ hội tự mình so sánh các công cụ này, ta sẽ sử dụng một ví dụ đơn giản về việc cài đặt server sẽ hoàn toàn tự động bởi từng công cụ. Cài đặt này bao gồm một server Ubuntu 18.04 chạy Apache để lưu trữ một trang web đơn giản.

Kết luận

Quản lý cấu hình có thể cải thiện đáng kể tính toàn vẹn của server theo thời gian bằng cách cung cấp một khuôn khổ để tự động hóa các quy trình và theo dõi các thay đổi được thực hiện đối với môi trường hệ thống. Trong hướng dẫn tiếp theo của loạt bài này, ta sẽ xem cách triển khai chiến lược quản lý cấu hình trên thực tế bằng cách sử dụng Ansible as tool.


Tags:

Các tin liên quan