Thứ tư, 20/11/2013 | 00:00 GMT+7

Cách hiểu Môi trường cấu hình Chef trên VPS

Các công cụ quản lý cấu hình cung cấp một con đường để triển khai mã và cấu hình nhất quán, có thể dự đoán được cho nhiều client khác nhau từ một server quản lý tập trung. Chef là một trong những công cụ quản lý cấu hình phổ biến nhất. Nó sử dụng Ruby và xử lý cấu hình bằng cách đóng gói các chi tiết vào những gì nó gọi là công thức nấu ăn.


Chef cung cấp một cách nhanh chóng để triển khai toàn bộ môi trường thay vì chỉ các ứng dụng đơn lẻ. Trong bất kỳ tình huống nào bạn cài đặt một phần mềm và sau đó sửa đổi các file cấu hình của nó, Chef được dùng để tự động hóa quá trình này.

Trong hướng dẫn này, ta sẽ cung cấp tổng quan chung về cách Chef tổ chức các file của bạn và những công cụ và hệ thống mà Chef sử dụng để hoàn thành mục tiêu của bạn .

Nếu bạn muốn làm theo, có một hướng dẫn về cách cài đặt Chef 12 trên Ubuntu 14.04 tại đây.

Thuật ngữ đầu bếp


Điều quan trọng là phải hiểu các thành phần khác nhau tạo nên Chef.

Cơ sở hạ tầng hoạt động đầu bếp

Ta sẽ bắt đầu bằng cách thảo luận về các mô hình khác nhau tạo nên chiến lược triển khai cấp cao.

Hệ thống Chef được xác định theo các role mà mỗi máy hoặc tài nguyên đóng trong quá trình triển khai:

  • Chef Server : Đây là vị trí trung tâm lưu trữ các công thức cấu hình, sách nấu ăn, định nghĩa nút và máy trạm. Nó là máy trung tâm mà mọi máy khác trong tổ chức sẽ sử dụng để cấu hình triển khai.

  • Nút đầu bếp : Các node đầu bếp là các mục tiêu triển khai được cấu hình bởi Chef. Mỗi nút đại diện cho một môi trường máy riêng biệt, có thể nằm trên phần cứng vật lý hoặc được ảo hóa.

Mỗi môi trường hệ điều hành này chứa một ứng dụng client Chef có thể giao tiếp với Chef Server.

  • Máy trạm Chef : Máy trạm Chef là nơi các chi tiết cấu hình Chef được tạo hoặc chỉnh sửa. Các file cấu hình sau đó được đẩy đến server Chef, nơi chúng sẽ có sẵn để triển khai cho bất kỳ nút nào.

Cấu hình của các thành phần khác nhau này cho phép bạn có nhiều máy trạm và nút. Các node có thể được cấu hình ngay khi chúng trực tuyến và kết nối với server .

Mặc dù phác thảo trên tạo ấn tượng rằng đây là các thực thể riêng biệt, nhưng một máy có thể thực hiện hai hoặc tất cả các role này. Có một dự án tên là chef-solo cho phép bạn từ bỏ việc sử dụng server và hoạt động bằng cách cấu hình máy tính mà nó được cài đặt.

Chi tiết server


Server là điểm kiểm soát trung tâm được truy cập bởi tất cả các máy đầu bếp khác, dù là khách hàng hay người quản lý. Về cơ bản nó là một repository lớn hoặc database của tất cả các chi tiết cấu hình.

Nó xử lý các kết nối và quyền từ các node và máy trạm và tổ chức dữ liệu để client có thể dễ dàng kéo. Server cũng có thể bao gồm giao diện web để quản lý hoặc cấu hình một số chi tiết.

Chi tiết nút


Như đã đề cập ở trên, một nút có thể là một máy vật lý hoặc máy ảo. Yêu cầu duy nhất của nó là nó có quyền truy cập vào mạng và có thể giao tiếp với server đầu bếp. User chạy phần mềm đầu bếp cũng cần có khả năng cài đặt phần mềm và áp dụng các thay đổi hệ thống.

Mỗi nút giao tiếp với server trung tâm bằng một ứng dụng gọi là đầu bếp-khách hàng . Thao tác này xử lý việc kéo dữ liệu ra khỏi server và thực hiện các bước cấu hình cần thiết để đưa nút về trạng thái cuối cùng. Chương trình đầu bếp-khách hàng và server đầu bếp giao tiếp thông qua việc sử dụng xác thực dựa trên khóa RSA.

Chef-client sử dụng một công cụ gọi là ohai để thống kê về nút. Chúng được sử dụng để cài đặt các chi tiết cấu hình nhất định và điền các biến có trong file .

Chi tiết máy trạm


Máy trạm có các công cụ cần thiết để tạo và sửa đổi các chi tiết cấu hình cho bất kỳ nút nào có sẵn và có thể giao tiếp với server đầu bếp để cung cấp các công cụ này.

Một công cụ quan trọng để quản lý đầu bếp trên máy trạm được gọi là dao . Knife hoạt động như một cổng để bạn có thể cấu hình bất kỳ thứ gì sẽ được lưu trữ trên server . Nó có thể quản lý các node và cấu hình và thường được dùng để truy cập vào server theo cách "dành riêng cho đầu bếp". Mặc dù có thể đăng nhập vào server bằng SSH và áp dụng các thay đổi đối với tất cả dữ liệu mà nó xử lý theo cách thủ công, nhưng điều này không thực sự tuân theo các quy trình mà đầu bếp thực hiện.

Các cấu hình và định nghĩa được tạo và sửa đổi trên một máy trạm được commit kiểm soát version và sau đó được đẩy lên server . Kho lưu trữ được gọi là đầu bếp- kho. Nó chứa tất cả dữ liệu cần thiết cho cấu hình của đầu bếp.

Cấu trúc file Repo của Chef


Chef xử lý cấu hình và thông tin phụ thuộc của nó trên một máy trạm trong một cấu trúc folder cụ thể. Điều quan trọng là phải hiểu hệ thống phân cấp này để tạo hiệu quả các công thức nấu ăn và thúc đẩy các thay đổi.

Như ta đã đề cập ở trên, các file cấu hình server nên được giữ trong quyền kiểm soát version trong repository lưu trữ được gọi là “kho đầu bếp”. Đây chỉ là một folder bình thường chứa các file đầu bếp.

Trong folder này, ta có thể tìm thấy cấu trúc giống như sau:

  • chứng chỉ / : Chứa các certificate SSL có thể được liên kết với client để xác thực.
  • Chefignore : Liệt kê các file và folder trong cấu trúc không được đưa vào trong phần đẩy lên server .
  • config / : Chứa một trong hai file cấu hình repository
    • rake.rb : Xác định một số khai báo biến để tạo certificate SSL và một số tùy chọn chung.
  • sách nấu ăn / : Chứa các sách nấu ăn cấu hình cơ sở hạ tầng cho tổ chức của bạn.
  • data_bag / : Chứa nhiều túi dữ liệu khác nhau cho cấu hình của bạn.

Các túi dữ liệu là các folder con được bảo vệ có chứa các chi tiết cấu hình nhạy cảm. Chúng chỉ có thể truy cập được đối với những nút có certificate SSL phù hợp và chứa các file được định dạng JSON với chi tiết cấu hình.

  • môi trường / : Chứa một vị trí cấp cao nhất để chứa các chi tiết để triển khai môi trường.

Mọi môi trường khác với môi trường mặc định phải được định nghĩa trong folder này.

  • Rakefile : Tệp này xác định các việc mà đầu bếp có thể thực hiện trong các cấu hình của nó.
  • role / : Chứa các file xác định các role có thể được gán cho các node .

Cấu trúc file sách dạy nấu ăn đầu bếp


Trong folder sách nấu ăn trong repository đầu bếp, các folder con xác định các sách nấu ăn cụ thể cho các ứng dụng. Trong mỗi folder cấu hình ứng dụng riêng biệt là một cấu trúc xác định cách cài đặt dịch vụ này và những thay đổi nào phải được thực hiện để nó hoạt động chính xác.

Trong ứng dụng, bạn sẽ tìm thấy các file và định nghĩa xác định cách một ứng dụng phải được cài đặt và cấu hình.

Tệp metadata.rb hoặc metadata.json chứa thông tin metadata về dịch vụ. Điều này bao gồm thông tin cơ bản như tên của sách nấu ăn và version , nhưng nó cũng là nơi lưu trữ thông tin phụ thuộc. Nếu sách nấu ăn này phụ thuộc vào các sách nấu ăn khác được cài đặt, nó có thể liệt kê chúng trong file này và đầu bếp sẽ cài đặt và cấu hình chúng trước sách nấu ăn hiện tại.

Thư mục thuộc tính chứa các định nghĩa thuộc tính được dùng để overrides hoặc xác định cài đặt cho các node sẽ có dịch vụ này.

Thư mục định nghĩa chứa các file khai báo tài nguyên. Điều này nghĩa là bạn có thể group chức năng lại với nhau dưới một tiêu đề.

Thư mục file mô tả cách đầu bếp phân phối file trên toàn bộ nút mà sách nấu ăn này được triển khai.

Thư mục công thức nấu ăn chứa “công thức nấu ăn” xác định cách cấu hình dịch vụ. Công thức nấu ăn thường là các file nhỏ cấu hình các khía cạnh cụ thể của hệ thống lớn hơn. Nếu sách nấu ăn được sử dụng để cài đặt và cấu hình web server , thì công thức nấu ăn có thể kích hoạt module hoặc cài đặt mặc định firewall lành mạnh.

Thư mục mẫu được sử dụng để quản lý cấu hình phức tạp hơn. Bạn có thể cung cấp toàn bộ file cấu hình có chứa các lệnh Ruby được nhúng. Các biến được in có thể được xác định trong các file khác.

Kết luận


Mặc dù hướng dẫn này có thể không giúp bạn bắt đầu viết các cấu hình Chef của riêng mình, nhưng nó sẽ cung cấp cho bạn một cái nhìn tổng quan tốt về những thành phần riêng lẻ trong một môi trường triển khai phức tạp. Khi bạn bắt đầu hiểu cách tương tác của nút, server , máy trạm hoạt động và có thể tìm đường xung quanh Chef-repo, bạn có thể bắt đầu hiểu cách một số sách dạy nấu ăn có sẵn hoạt động.

Trong phần thảo luận tiếp theo , ta sẽ thảo luận về cách cài đặt Chef 12 trên server Ubuntu 14.04. Sau đó, ta cũng sẽ trình bày cách tạo một số sách nấu ăn của bạn và cấu hình một môi trường có thể được triển khai cho các máy khác trong mạng của bạn.

<div class = “author”> Bởi Justin Ellingwood </div>


Tags:

Các tin liên quan