Con rối - Tổng quan
Puppet là một công cụ quản lý cấu hình do Puppet Labs phát triển để tự động hóa việc quản lý và cấu hình cơ sở hạ tầng. Con rối là một công cụ rất mạnh giúp tạo ra khái niệm Cơ sở hạ tầng dưới dạng mã. Công cụ này được viết bằng ngôn ngữ Ruby DSL giúp chuyển đổi cơ sở hạ tầng hoàn chỉnh ở định dạng mã, có thể dễ dàng quản lý và cấu hình.
Con rối tuân theo mô hình máy khách-máy chủ, trong đó một máy trong bất kỳ cụm nào hoạt động như máy chủ, được gọi là máy chủ con rối và máy kia hoạt động như một máy khách được gọi là máy chủ trên các nút. Puppet có khả năng quản lý bất kỳ hệ thống nào từ đầu, bắt đầu từ cấu hình ban đầu cho đến cuối vòng đời của bất kỳ máy cụ thể nào.
Đặc điểm của hệ thống con rối
Sau đây là các tính năng quan trọng nhất của Puppet.
Lý tưởng
Con rối hỗ trợ Idempotency làm cho nó trở nên độc đáo. Tương tự như Chef, trong Puppet, người ta có thể chạy một cách an toàn cùng một bộ cấu hình nhiều lần trên cùng một máy. Trong luồng này, Puppet kiểm tra trạng thái hiện tại của máy mục tiêu và sẽ chỉ thực hiện thay đổi khi có bất kỳ thay đổi cụ thể nào trong cấu hình.
Idempotency giúp quản lý bất kỳ máy cụ thể nào trong suốt vòng đời của nó bắt đầu từ khi tạo ra máy, các thay đổi cấu hình trong máy cho đến cuối vòng đời. Tính năng Puppet Idempotency rất hữu ích trong việc giữ cho máy được cập nhật trong nhiều năm thay vì xây dựng lại cùng một máy nhiều lần, khi có bất kỳ thay đổi cấu hình nào.
Đa nền tảng
Trong Puppet, với sự trợ giúp của Lớp trừu tượng tài nguyên (RAL) sử dụng tài nguyên Con rối, người ta có thể nhắm mục tiêu cấu hình hệ thống được chỉ định mà không cần lo lắng về chi tiết triển khai và cách lệnh cấu hình sẽ hoạt động bên trong hệ thống, được xác định trong cấu hình bên dưới tập tin.
Con rối - Quy trình làm việc
Con rối sử dụng quy trình làm việc sau để áp dụng cấu hình trên hệ thống.
Trong Puppet, việc đầu tiên mà bậc thầy Puppet làm là thu thập các thông tin chi tiết của máy mục tiêu. Sử dụng hệ số có trên tất cả các nút Con rối (tương tự như Ohai trong Chef), nó sẽ nhận được tất cả các chi tiết cấu hình cấp độ máy. Những thông tin chi tiết này được thu thập và gửi lại cho Puppet master.
Sau đó, bậc thầy con rối so sánh cấu hình đã truy xuất với các chi tiết cấu hình đã xác định, và với cấu hình đã xác định, nó tạo một danh mục và gửi nó đến các tác nhân Con rối được nhắm mục tiêu.
Sau đó, tác nhân Con rối áp dụng các cấu hình đó để đưa hệ thống vào trạng thái mong muốn.
Cuối cùng, khi một nút có nút đích ở trạng thái mong muốn, nó sẽ gửi một báo cáo trở lại Puppet master, điều này giúp cho Puppet master hiểu được trạng thái hiện tại của hệ thống, như được xác định trong danh mục.
Con rối - Thành phần chính
Sau đây là các thành phần chính của Puppet.
Tài nguyên con rối
Tài nguyên con rối là thành phần quan trọng để tạo mô hình cho bất kỳ máy cụ thể nào. Các tài nguyên này có mô hình triển khai riêng. Con rối sử dụng cùng một mô hình để có được bất kỳ tài nguyên cụ thể nào ở trạng thái mong muốn.
Nhà cung cấp
Các nhà cung cấp về cơ bản là những người cung cấp dịch vụ cho bất kỳ tài nguyên cụ thể nào được sử dụng trong Puppet. Ví dụ: loại gói 'apt-get' và 'yum' đều hợp lệ để quản lý gói. Đôi khi, nhiều hơn một nhà cung cấp sẽ có sẵn trên một nền tảng cụ thể. Mặc dù mỗi nền tảng luôn có một nhà cung cấp mặc định.
Rõ ràng
Manifest là một tập hợp các tài nguyên được kết hợp bên trong hàm hoặc các lớp để cấu hình bất kỳ hệ thống đích nào. Chúng chứa một bộ mã Ruby để cấu hình hệ thống.
Mô-đun
Mô-đun là khối xây dựng chính của Puppet, có thể được định nghĩa là một tập hợp các tài nguyên, tệp, mẫu, v.v. Chúng có thể dễ dàng phân phối giữa các loại HĐH khác nhau được định nghĩa rằng chúng có cùng hương vị. Vì chúng có thể được phân phối dễ dàng, một mô-đun có thể được sử dụng nhiều lần với cùng một cấu hình.
Mẫu
Các mẫu sử dụng các biểu thức Ruby để xác định nội dung tùy chỉnh và đầu vào biến đổi. Chúng được sử dụng để phát triển nội dung tùy chỉnh. Các mẫu được xác định trong tệp kê khai và được sao chép vào một vị trí trên hệ thống. Ví dụ: nếu một người muốn xác định httpd với một cổng có thể tùy chỉnh, thì có thể thực hiện nó bằng cách sử dụng biểu thức sau.
Listen <% = @httpd_port %>
Biến httpd_port trong trường hợp này được xác định trong tệp kê khai tham chiếu đến mẫu này.
Tệp tĩnh
Tệp tĩnh có thể được định nghĩa là một tệp chung đôi khi được yêu cầu để thực hiện các tác vụ cụ thể. Chúng có thể được sao chép đơn giản từ vị trí này sang vị trí khác bằng Puppet. Tất cả các tệp tĩnh đều nằm trong thư mục tệp của bất kỳ mô-đun nào. Mọi thao tác với tệp trong tệp kê khai đều được thực hiện bằng cách sử dụng tài nguyên tệp.