Con rối - Mô-đun
Trong Puppet, một mô-đun có thể được định nghĩa là một tập hợp các tài nguyên, lớp, tệp, định nghĩa và mẫu. Puppet hỗ trợ dễ dàng phân phối lại các mô-đun, điều này rất hữu ích trong tính mô-đun của mã vì người ta có thể viết một mô-đun chung được chỉ định và có thể sử dụng nó nhiều lần với rất ít thay đổi mã đơn giản. Ví dụ: điều này sẽ cho phép cấu hình trang web mặc định trong / etc / rối, với các mô-đun được vận chuyển bởi Puppet thích hợp trong / etc / share / rối.
Cấu hình mô-đun
Trong bất kỳ mô-đun Puppet nào, chúng ta có hai phân vùng giúp xác định cấu trúc của mã và kiểm soát các mẫu số.
Đường dẫn tìm kiếm của các mô-đun được định cấu hình bằng cách sử dụng danh sách thư mục được phân tách bằng dấu hai chấm trong puppetmasterd hoặc là masterd, phần sau của tệp cấu hình chính của Puppet với modulepath tham số.
[puppetmasterd]
...
modulepath = /var/lib/puppet/modules:/data/puppet/modules
Cài đặt kiểm soát truy cập cho mô-đun máy chủ tệp trong fileserver.conf, cấu hình đường dẫn cho mô-đun đó luôn bị bỏ qua và việc chỉ định đường dẫn sẽ tạo ra cảnh báo.
Đường dẫn tìm kiếm có thể được thêm vào trong thời gian chạy bằng cách đặt biến môi trường PUPPETLAB cũng phải là danh sách các biến được phân tách bằng dấu hai chấm.
Nguồn mô-đun
Con rối hỗ trợ một vị trí khác để lưu trữ các mô-đun. Bất kỳ mô-đun nào cũng có thể được lưu trữ trong hệ thống tệp khác nhau của bất kỳ máy cụ thể nào. Tuy nhiên, tất cả các đường dẫn nơi mô-đun được lưu trữ phải được chỉ định trong biến cấu hình được gọi làmodulepath nói chung, một biến đường dẫn trong đó Puppet quét tất cả các thư mục mô-đun và tải chúng lên khi nó đang khởi động.
Một đường dẫn mặc định hợp lý có thể được định cấu hình như sau:
/etc/puppet/modules:/usr/share/puppet:/var/lib/modules.
Ngoài ra, thư mục / etc / rối có thể được thiết lập như một mô-đun ẩn danh đặc biệt, mô-đun này luôn được tìm kiếm đầu tiên.
Đặt tên mô-đun
Con rối tuân theo cùng tiêu chuẩn đặt tên của một mô-đun cụ thể, trong đó tên mô-đun phải là các từ bình thường, khớp với [- \\ w +] (chữ cái, từ, số, dấu gạch dưới và dấu gạch ngang) và không chứa dấu phân cách vùng tên:: hoặc /. Mặc dù nó có thể được phép liên quan đến phân cấp mô-đun, nhưng đối với các mô-đun mới, nó không thể được lồng vào nhau.
Mô-đun Tổ chức nội bộ
Khi người dùng tạo một mô-đun mới trong Puppet, nó sẽ tuân theo cùng một cấu trúc và chứa tệp kê khai, tệp phân phối, các plugin và mẫu được sắp xếp theo cấu trúc thư mục cụ thể như được hiển thị trong đoạn mã sau.
MODULE_PATH/
downcased_module_name/
files/
manifests/
init.pp
lib/
puppet/
parser/
functions
provider/
type/
facter/
templates/
README
Bất cứ khi nào một mô-đun được tạo, nó chứa init.pptệp kê khai tại vị trí sửa chữa được chỉ định bên trong thư mục tệp kê khai. Tệp kê khai này là tệp mặc định thực thi đầu tiên trong bất kỳ mô-đun cụ thể nào và chứa tập hợp tất cả các lớp được liên kết với mô-đun cụ thể đó. Bổ sung.pptệp có thể được thêm trực tiếp trong thư mục tệp kê khai. Nếu chúng tôi đang thêm các tệp .pp bổ sung, chúng phải được đặt tên theo lớp.
Một trong những tính năng chính đạt được khi sử dụng mô-đun là chia sẻ mã. Về bản chất, một mô-đun phải là độc lập có nghĩa là người ta có thể bao gồm bất kỳ mô-đun nào từ bất kỳ đâu và thả nó vào đường dẫn mô-đun, được tải khi Puppet khởi động. Với sự trợ giúp của các mô-đun, người ta có được tính mô-đun trong mã hóa cơ sở hạ tầng Con rối.
Thí dụ
Hãy xem xét mô-đun autofs cài đặt bản đồ auto.homes cố định và tạo auto.master từ các mẫu.
class autofs {
package { autofs: ensure => latest }
service { autofs: ensure => running }
file { "/etc/auto.homes":
source => "puppet://$servername/modules/autofs/auto.homes"
}
file { "/etc/auto.master":
content => template("autofs/auto.master.erb")
}
}
Hệ thống tệp sẽ có các tệp sau.
MODULE_PATH/
autofs/
manifests/
init.pp
files/
auto.homes
templates/
auto.master.erb
Tra cứu mô-đun
Con rối tuân theo một cấu trúc được xác định trước, trong đó nó chứa nhiều thư mục và thư mục con trong một cấu trúc xác định. Các thư mục này chứa các loại tệp khác nhau được mô-đun yêu cầu để thực hiện các hành động nhất định. Một chút phép thuật hậu trường đảm bảo rằng tệp phù hợp được liên kết với ngữ cảnh phù hợp. Tất cả các tìm kiếm mô-đun đều nằm trong đường dẫn mô-đun, một danh sách các thư mục được phân tách bằng dấu hai chấm.
Đối với tham chiếu tệp trên máy chủ tệp, một tham chiếu tương tự được sử dụng để tham chiếu đến con rối: //$servername/modules/autofs/auto.homes phân giải tệp autofs / files / auto.homes trong đường dẫn của mô-đun.
Để làm cho một mô-đun có thể sử dụng được với cả trình khách dòng lệnh và trình điều khiển con rối, người ta có thể sử dụng một URL của đường dẫn từ con rối: ///. tức là một URL không có tên máy chủ rõ ràng. URL như vậy được xử lý hơi khác bởiPuppet và puppetd. Con rối tìm kiếm URL không máy chủ trong hệ thống tệp cục bộ.
Tệp mẫu được tìm kiếm theo cách tương tự như tệp kê khai và tệp: việc đề cập đến mẫu (“autofs / auto.master.erb”) sẽ khiến người quản lý rối tìm kiếm tệp đầu tiên trong $templatedir/autofs/auto.master.erb và sau đó autofs/templates/auto.master.erbtrên đường dẫn mô-đun. Với các phiên bản Con rối của mọi thứ trong Con rối, nó có sẵn để sử dụng. Điều này được gọi là tự động tải mô-đun. Con rối sẽ cố gắng tự động tải các lớp và định nghĩa từ mô-đun.