Puppetต้องการใบรับรองระหว่างไคลเอนต์ (puppet) ที่ถูกจัดการและเซิร์ฟเวอร์ (puppetmaster) คุณสามารถรันด้วยตัวเองบนไคลเอนต์จากนั้นไปที่เซิร์ฟเวอร์เพื่อลงนามใบรับรอง แต่คุณจะทำกระบวนการนี้โดยอัตโนมัติสำหรับกลุ่ม / เครื่องคลาวด์ได้อย่างไร
Puppetต้องการใบรับรองระหว่างไคลเอนต์ (puppet) ที่ถูกจัดการและเซิร์ฟเวอร์ (puppetmaster) คุณสามารถรันด้วยตัวเองบนไคลเอนต์จากนั้นไปที่เซิร์ฟเวอร์เพื่อลงนามใบรับรอง แต่คุณจะทำกระบวนการนี้โดยอัตโนมัติสำหรับกลุ่ม / เครื่องคลาวด์ได้อย่างไร
คำตอบ:
บนเซิร์ฟเวอร์ (puppetmaster) ให้เรียกใช้:
puppetca --generate <NAME>
จากนั้นคัดลอกสิ่งต่อไปนี้จากเซิร์ฟเวอร์ไปยังไคลเอนต์:
/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem
หากคุณต้องการเซ็น<NAME>
ชื่อเป็นชื่ออื่นที่ไม่ใช่ชื่อโฮสต์ให้ใช้:
puppetd --fqdn=<NAME>
และเพิ่มไปยัง /etc/puppet/puppet.conf หากใช้ daemon
[puppetd]
certname=<NAME>
puppet cert --generate <NAME>
ดูที่serverfault.com/a/457364/71452
หากคุณมีฐานข้อมูลโฮสต์คุณสามารถใช้คุณสมบัติลงชื่อเข้าใช้อัตโนมัติ ในpuppet.conf
ไฟล์ของคุณใน[puppetmasterd]
, เพิ่ม:
autosign = /path/to/autosign.conf
จากนั้นใช้ crontab เพื่อสร้างไฟล์นี้ ไฟล์ autosign เป็นเพียงรายการของโฮสต์ที่จะทำการ autosign เมื่อพวกเขาเชื่อมต่อกับ puppetmaster เป็นครั้งแรก ฉันใช้ LDAP เพื่อกำหนดค่าโฮสต์หุ่นกระบอกของฉันดังนั้น cron ของฉันดูเหมือน:
* * * * * root /usr/bin/ldapsearch -x '(objectClass=puppetClient)' cn | /bin/grep ^cn | /bin/sed 's!^cn: !!' > /etc/puppet/autosign.conf
ฉันแน่ใจว่าคนที่ใช้ iClassify จะสามารถเขียนข้อความค้นหาเพื่อทำสิ่งเดียวกันได้
แน่นอนคุณต้องมีความไว้วางใจในเครือข่าย ฉันใช้สิ่งนี้กับ EC2 เซิร์ฟเวอร์ puppetmaster ของฉันอยู่ในกลุ่มที่อนุญาตการเชื่อมต่อจากกลุ่มที่เชื่อถือได้เท่านั้น ฉันจะไม่แนะนำให้ทำเช่นนี้หาก puppetmaster ของคุณเปิดอินเทอร์เน็ต
คำตอบง่ายๆ: ลงชื่อคำขอใหม่โดยอัตโนมัติ แน่นอนว่านี่เป็นอันตรายเพราะคุณเชื่อใจในระบบใด ๆ ที่เชื่อมต่อกับ puppetmaster ของคุณซึ่งเป็นจุดประสงค์สำหรับการลงชื่อด้วยตนเอง
[puppetmasterd]
autosign = true
คุณสามารถระบุ false และไฟล์ที่จะใช้เพื่อกำหนดว่าคีย์ใดที่จะต้องลงชื่อด้วย
ดูการอ้างอิงการกำหนดค่าบน Puppet wiki
อีกตัวเลือกหนึ่งคือการใช้เครื่องมือเช่นCapistranoที่คุณระบุโหนด puppetmaster และสร้างโหนดอินสแตนซ์ของไคลเอ็นต์และในงาน:
[puppetmasterd]
[master]
ดูdocs.puppetlabs.com/guides/tools.htmlสำหรับข้อมูลเพิ่มเติม
บนเซิร์ฟเวอร์ (puppetmaster) ให้เรียกใช้:
puppetca --generate <NAME>
จากนั้นคัดลอกสิ่งต่อไปนี้จากเซิร์ฟเวอร์ไปยังไคลเอนต์:
/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem
หากคุณต้องการมีชื่ออื่นที่ไม่ใช่ชื่อโฮสต์ให้ใช้:
puppetd --fqdn=<NAME>
และเพิ่มไปยัง /etc/puppet/puppet.conf หากใช้ daemon
[puppetd]
certname=<NAME>