Con rối - Chức năng

Puppet hỗ trợ các chức năng như bất kỳ ngôn ngữ lập trình nào khác vì ngôn ngữ phát triển cơ bản của Puppet là Ruby. Nó hỗ trợ hai loại chức năng được biết đến với tênstatementrvalue chức năng.

  • Statementstự đứng và chúng không có bất kỳ loại trả lại nào. Chúng được sử dụng để thực hiện các tác vụ độc lập như nhập các mô-đun Con rối khác trong tệp kê khai mới.

  • Rvalue trả về giá trị và chỉ có thể được sử dụng khi câu lệnh yêu cầu một giá trị, chẳng hạn như một phép gán hoặc một câu lệnh trường hợp.

Chìa khóa đằng sau việc thực thi chức năng trong Puppet là, nó chỉ thực thi trên Puppet master và chúng không thực thi trên client hoặc Puppet agent. Do đó, họ chỉ có quyền truy cập vào các lệnh và dữ liệu có sẵn trên Puppet master. Có nhiều loại chức năng khác nhau đã có sẵn và thậm chí người dùng có đặc quyền tạo các chức năng tùy chỉnh theo yêu cầu. Một số chức năng sẵn có được liệt kê dưới đây.

Hàm tệp

Chức năng tệp của tài nguyên tệp là tải một mô-đun trong Puppet và trả về đầu ra mong muốn dưới dạng một chuỗi. Các đối số mà nó tìm kiếm là, tham chiếu <module name> / <file>, giúp tải mô-đun từ thư mục tệp của mô-đun Puppet.

Giống như script / tesingscript.sh sẽ tải các tệp từ <tên mô-đun> /script/files/testingscript.sh. Hàm có khả năng đọc và chấp nhận một đường dẫn tuyệt đối, giúp tải tệp từ bất kỳ đâu trên đĩa.

Bao gồm chức năng

Trong Puppet, hàm bao gồm rất giống với hàm bao gồm trong bất kỳ ngôn ngữ lập trình nào khác. Nó được sử dụng để khai báo một hoặc nhiều lớp, dẫn đến việc đánh giá tất cả các tài nguyên có bên trong các lớp đó và cuối cùng thêm chúng vào một danh mục. Cách hoạt động của nó là, hàm include chấp nhận một tên lớp, danh sách các lớp hoặc danh sách các tên lớp được phân tách bằng dấu phẩy.

Một điều cần ghi nhớ khi sử dụng includelà, nó có thể được sử dụng nhiều lần trong một lớp nhưng có giới hạn là chỉ bao gồm một lớp duy nhất một lần. Nếu lớp được bao gồm chấp nhận một tham số, hàm bao gồm sẽ tự động tìm kiếm các giá trị cho chúng bằng cách sử dụng <tên lớp> :: <tên tham số> làm khóa tra cứu.

Hàm bao gồm không làm cho một lớp được chứa trong lớp khi chúng được khai báo, vì vậy chúng ta cần sử dụng một hàm chứa. Nó thậm chí không tạo ra sự phụ thuộc vào lớp đã khai báo và các lớp xung quanh nó.

Trong hàm include, chỉ cho phép tên đầy đủ của một lớp, không cho phép tên tương đối.

Chức năng xác định

Trong Puppet, hàm được định nghĩa giúp xác định vị trí của một lớp hoặc loại tài nguyên nhất định được xác định và trả về giá trị Boolean hay không. Người ta cũng có thể sử dụng định nghĩa để xác định xem một tài nguyên cụ thể được định nghĩa hay biến được định nghĩa có giá trị. Điểm chính cần lưu ý khi sử dụng hàm đã định nghĩa là, hàm này nhận ít nhất một đối số chuỗi, có thể là tên lớp, tên kiểu, tham chiếu tài nguyên hoặc tham chiếu biến có dạng “$ name”.

Xác định kiểm tra chức năng cho cả loại chức năng gốc và được xác định, bao gồm các loại được cung cấp bởi mô-đun. Loại và lớp được khớp với tên của chúng. Hàm khớp với sự giảm tốc tài nguyên bằng cách sử dụng tham chiếu tài nguyên.

Xác định các khớp chức năng

# Matching resource types 
defined("file") 
defined("customtype")  

# Matching defines and classes 
defined("testing") 
defined("testing::java")  

# Matching variables 
defined('$name')  

# Matching declared resources 
defined(File['/tmp/file'])