Máy chủ tệp rối
Hướng dẫn này bao gồm việc sử dụng khả năng phục vụ tệp của Puppet.
Dịch vụ con rối bao gồm một máy chủ tệp để truyền tệp tĩnh. Nếu một khai báo tài nguyên tệp chứa một con rối: URI trong thuộc tính nguồn của nó, các nút sẽ truy xuất tệp đó từ máy chủ tệp của chủ:
# sao chép một tập tin từ xa vào / etc / sudoers
tệp {"/ etc / sudoers":
chế độ => 440,
chủ sở hữu => root,
nhóm => root,
nguồn => "con rối: /// mô-đun / module_name / sudoers"
}
Tất cả các URI máy chủ tệp rối được cấu trúc như sau:
puppet://{server hostname (optional)}/{mount point}/{remainder of path}
Nếu tên máy chủ của máy chủ bị bỏ qua (nghĩa là puppet:///{mount point}/{path}
lưu ý dấu gạch chéo ba), URI sẽ phân giải đến bất kỳ máy chủ nào mà nút đánh giá coi là chủ của nó. Vì điều này làm cho mã kê khai dễ mang theo hơn và có thể sử dụng lại, tên máy chủ nên được bỏ qua bất cứ khi nào có thể.
Phần còn lại của con rối: URI ánh xạ tới hệ thống tệp của máy chủ theo một trong hai cách, tùy thuộc vào việc các tệp được cung cấp bởi a module
hoặc được hiển thị thông qua a custom mount point
.
Phục vụ tập tin mô-đun
Vì phần lớn việc phục vụ tệp nên được thực hiện thông qua các mô-đun, máy chủ tệp Puppet cung cấp một điểm gắn kết đặc biệt và bán ma thuật gọi là các mô-đun, có sẵn theo mặc định. Nếu điểm gắn kết của URI là các mô-đun, Puppet sẽ:
- Giải thích đoạn tiếp theo của đường dẫn là tên của một mô-đun
- ... xác định vị trí mô-đun đó trong đường dẫn mô-đun của máy chủ (như được mô tả ở đây trong mục Tra cứu mô-đun của ...
- ... và giải quyết phần còn lại của đường dẫn bắt đầu trong thư mục / tệp của mô-đun đó.
Điều đó có nghĩa là, nếu một mô-đun có tên test_module được cài đặt trong /etc/puppet/modules
thư mục của máy chủ trung tâm , thì con rối sau: URI ...
puppet:///modules/test_module/testfile.txt
... sẽ giải quyết theo đường dẫn tuyệt đối sau:
/etc/puppet/modules/test_module/files/testfile.txt
Nếu test_module
được cài đặt /usr/share/puppet/modules
, cùng một URI sẽ giải quyết:
/usr/share/puppet/modules/test_module/files/testfile.txt
Mặc dù không cần cấu hình bổ sung để sử dụng điểm gắn mô-đun, một số điều khiển truy cập có thể được chỉ định trong cấu hình máy chủ tệp bằng cách thêm [modules]
khối cấu hình; xem Bảo mật.
Phục vụ tập tin từ các điểm gắn tùy chỉnh
Con rối cũng có thể phục vụ các tệp từ các điểm gắn tùy ý được chỉ định trong cấu hình máy chủ tệp của máy chủ (xem bên dưới). Khi phục vụ các tệp từ điểm gắn tùy chỉnh, Puppet không thực hiện trừu tượng URI bổ sung được sử dụng trong giá trị mô-đun và sẽ giải quyết đường dẫn theo tên gắn kết dưới dạng cấu trúc thư mục đơn giản.
Cấu hình máy chủ tệp
Vị trí mặc định cho dữ liệu cấu hình của máy chủ tệp là /etc/puppet/fileserver.conf
; điều này có thể được thay đổi bằng cách chuyển --fsconfig
cờ cho chủ rối.
Định dạng của fileserver.conf
tệp gần giống như của rsync
và tương tự như tệp INI:
[mount_point]
path /path/to/files
allow *.domain.com
deny *.wireless.domain.com
Các tùy chọn sau hiện có thể được chỉ định cho một điểm gắn kết nhất định:
- Đường dẫn đến vị trí gắn kết trên đĩa
- Bất kỳ số lượng chỉ thị cho phép
- Bất kỳ số lượng chỉ thị từ chối
đường dẫn là tùy chọn bắt buộc duy nhất, nhưng vì cấu hình bảo mật mặc định là từ chối tất cả quyền truy cập, nên một điểm gắn kết không có chỉ thị cho phép sẽ không có sẵn cho bất kỳ nút nào.
Con đường có thể chứa bất kỳ hoặc tất cả %h
, %H
và %d
, được tự động thay thế bằng tên máy của khách hàng, tên miền đầy đủ của nó và tên miền của mình, tương ứng. Tất cả được lấy từ chứng chỉ SSL của khách hàng (vì vậy hãy cẩn thận nếu bạn có sự trùng khớp tên máy chủ / chứng chỉ). Điều này rất hữu ích trong việc tạo các mô-đun nơi các tệp cho mỗi máy khách được giữ hoàn toàn riêng biệt, ví dụ: đối với các khóa máy chủ ssh riêng. Ví dụ, với cấu hình
[private]
path /data/private/%h
allow *
yêu cầu tệp /private/file.txt
từ máy khách client1.example.com sẽ tìm tệp /data/private/client1/file.txt
, trong khi yêu cầu tương tự từ đó client2.example.com
sẽ cố gắng truy xuất tệp /data/private/client2/file.txt trên máy chủ tệp.
Hiện tại các đường dẫn không thể chứa dấu gạch chéo hoặc lỗi sẽ xảy ra. Ngoài ra, hãy lưu ý rằng trong puppet.conf
bạn không chỉ định vị trí thư mục có dấu gạch chéo.
Bảo vệ
Bảo mật máy chủ tệp Puppet bao gồm cho phép và từ chối truy cập (ở các mức độ cụ thể khác nhau) trên mỗi điểm gắn kết. Các nhóm nút có thể được xác định để xin phép hoặc từ chối theo ba cách: theo địa chỉ IP, theo tên hoặc bằng một ký tự đại diện chung (*). Điểm gắn tùy chỉnh mặc định để từ chối tất cả quyền truy cập.
Ngoài các điểm gắn kết tùy chỉnh, có hai điểm gắn kết đặc biệt có thể được quản lý bằng fileserver.conf
: modules
và plugins
. Cả hai điểm gắn kết này đều phải có tùy chọn đường dẫn được chỉ định. Hành vi của điểm gắn mô-đun được mô tả ở trên trong Phục vụ tệp từ Điểm gắn tùy chỉnh. Gắn kết bổ trợ không phải là điểm gắn kết thực sự, mà là một móc nối để cho phép fileserver.conf chỉ định các nút nào được phép đồng bộ hóa các plugin từ Puppet Master. Cả hai điểm gắn kết này đều tồn tại theo mặc định và cả hai mặc định cho phép tất cả quyền truy cập; nếu bất kỳ chỉ thị cho phép hoặc từ chối nào được đặt cho một trong các giá trị gắn kết đặc biệt này, cài đặt bảo mật của nó sẽ hoạt động giống như các giá trị gắn kết thông thường (nghĩa là nó sẽ mặc định từ chối tất cả quyền truy cập). Lưu ý rằng đây là những điểm gắn kết duy nhất mà từ chối * không dư thừa.
Nếu các nút không kết nối trực tiếp với máy chủ tệp Puppet, ví dụ: sử dụng proxy ngược và Mongrel (xem Sử dụng Mongrel), thì máy chủ tệp sẽ thấy tất cả các kết nối đến từ địa chỉ IP của máy chủ proxy thay vì của nút Puppet Agent . Trong trường hợp này, tốt nhất là hạn chế quyền truy cập dựa trên tên máy chủ. Ngoài ra, (các) máy đóng vai trò proxy ngược (thường là 127.0.0.0/8) sẽ cần phải được phép truy cập vào các điểm gắn kết áp dụng.
Sự ưu tiên
Từ chối cụ thể hơn và cho phép các tuyên bố được ưu tiên hơn các tuyên bố ít cụ thể hơn; nghĩa là, một câu lệnh cho phép cho node.domain.com sẽ cho phép nó kết nối mặc dù câu lệnh từ chối cho * .domain.com. Ở một mức độ cụ thể nhất định, các tuyên bố từ chối được ưu tiên hơn các báo cáo cho phép.
Hành vi không thể đoán trước có thể xuất phát từ việc trộn các chỉ thị địa chỉ IP với các chỉ thị tên máy chủ và tên miền, vì vậy hãy cố gắng tránh làm điều đó. (Hiện tại, nếu địa chỉ IP của node.domain.com là 192.168.1.80 và fileserver.conf chứa cho phép 192.168.1.80 và từ chối node.domain.com, thì lệnh cho phép dựa trên IP sẽ thực sự được ưu tiên. Hành vi này có thể được thay đổi trong tương lai và không nên dựa vào.)
Tên máy chủ
Tên máy chủ có thể được chỉ định bằng tên máy chủ hoàn chỉnh hoặc chỉ định toàn bộ tên miền bằng cách sử dụng * ký tự đại diện:
[export]
path /export
allow host.domain1.com
allow *.domain2.com
deny badhost.domain2.com
Các địa chỉ IP
Địa chỉ IP có thể được chỉ định tương tự như tên máy chủ, sử dụng địa chỉ IP hoàn chỉnh hoặc địa chỉ ký tự đại diện. Bạn cũng có thể sử dụng ký hiệu kiểu CIDR:
[export]
path /export
allow 127.0.0.1
allow 192.168.0.*
allow 192.168.1.0/24
Toàn cầu cho phép
Chỉ định một ký tự đại diện sẽ cho phép bất kỳ nút nào truy cập vào điểm gắn kết:
[export]
path /export
allow *
Lưu ý rằng hành vi mặc định cho các điểm gắn tùy chỉnh tương đương với từ chối *.