Con rối yêu cầu chứng chỉ giữa máy khách (con rối) được quản lý và máy chủ (con rối). Bạn có thể chạy thủ công trên máy khách và sau đó vào máy chủ để ký chứng chỉ, nhưng làm thế nào để bạn tự động hóa quy trình này cho các cụm / máy đám mây?
Con rối yêu cầu chứng chỉ giữa máy khách (con rối) được quản lý và máy chủ (con rối). Bạn có thể chạy thủ công trên máy khách và sau đó vào máy chủ để ký chứng chỉ, nhưng làm thế nào để bạn tự động hóa quy trình này cho các cụm / máy đám mây?
Câu trả lời:
Trên máy chủ (con rối) chạy:
puppetca --generate <NAME>
Sau đó sao chép nội dung sau từ máy chủ vào máy khách:
/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem
Nếu bạn muốn đăng nhập <NAME>
như một cái gì đó ngoài tên máy chủ, hãy sử dụng:
puppetd --fqdn=<NAME>
Và thêm vào /etc/puppet/puppet.conf nếu chạy daemon
[puppetd]
certname=<NAME>
puppet cert --generate <NAME>
xem serverfault.com/a/457364/71452
Nếu bạn có cơ sở dữ liệu máy chủ, bạn có thể sử dụng tính năng tự động gán. Trong puppet.conf
tệp của bạn , trong [puppetmasterd]
, thêm:
autosign = /path/to/autosign.conf
Sau đó sử dụng một crontab để tạo tập tin này. Tệp tự động chỉ là một danh sách các máy chủ lưu trữ tự động khi chúng lần đầu tiên kết nối với người điều khiển rối. Tôi sử dụng LDAP để định cấu hình máy chủ con rối của mình, vì vậy cron của tôi trông như sau:
* * * * * root /usr/bin/ldapsearch -x '(objectClass=puppetClient)' cn | /bin/grep ^cn | /bin/sed 's!^cn: !!' > /etc/puppet/autosign.conf
Tôi chắc rằng những người sử dụng iClassify sẽ có thể viết một truy vấn để làm điều tương tự.
Tất nhiên, bạn cần phải có một số niềm tin trong mạng. Tôi sử dụng cái này trên EC2. Máy chủ rối của tôi nằm trong một nhóm chỉ cho phép kết nối từ các nhóm đáng tin cậy khác. Tôi không khuyên bạn nên làm điều này nếu con rối của bạn mở mạng internet.
Câu trả lời đơn giản: tự động ký yêu cầu mới. Điều này tất nhiên là nguy hiểm vì bạn tin tưởng một cách mù quáng vào bất kỳ hệ thống nào kết nối với người điều khiển rối của bạn, đó là mục đích để yêu cầu ký thủ công.
[puppetmasterd]
autosign = true
Bạn cũng có thể chỉ định false và một tệp để sử dụng để xác định khóa nào sẽ ký.
Xem tài liệu tham khảo cấu hình trên wiki rối.
Một tùy chọn khác là sử dụng một công cụ như Capistrano , trong đó bạn chỉ định nút rối và tạo các nút đối tượng khách và trong tác vụ:
[puppetmasterd]
tiêu đề của phần bây giờ sẽ là [master]
. Xem docs.puppetlabs.com/guides/tools.html để biết thêm thông tin.
Trên máy chủ (con rối) chạy:
puppetca --generate <NAME>
Sau đó sao chép nội dung sau từ máy chủ vào máy khách:
/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem
Nếu bạn muốn có một cái gì đó khác với tên máy chủ, hãy sử dụng:
puppetd --fqdn=<NAME>
Và thêm vào /etc/puppet/puppet.conf nếu chạy daemon
[puppetd]
certname=<NAME>