มีวิธีกำหนดโฮสต์ตัวแทนใน puppetmaster's nodes.pp หรือไม่
บอกว่าฉันต้องการโฮสต์ทั้งหมดในโดเมนเดียวเพื่อรับชุดคลาสฉันสามารถทำสิ่งที่ชอบ:
# nodes.pp
#
node basenode {
include admina, adminb, admic
}
node "*.acme.com" {
include adminc
}
มีวิธีกำหนดโฮสต์ตัวแทนใน puppetmaster's nodes.pp หรือไม่
บอกว่าฉันต้องการโฮสต์ทั้งหมดในโดเมนเดียวเพื่อรับชุดคลาสฉันสามารถทำสิ่งที่ชอบ:
# nodes.pp
#
node basenode {
include admina, adminb, admic
}
node "*.acme.com" {
include adminc
}
คำตอบ:
ไม่ได้ด้วยวิธีนี้ คุณสามารถสร้างโหนด 'เริ่มต้น' ที่จะใช้กับไคลเอ็นต์ที่ลงชื่อใด ๆ
node "default" {
include foo
}
แต่คุณสามารถมีค่าเริ่มต้นได้เพียง 1 รายการเท่านั้น หากคุณต้องการทำซ้ำฟังก์ชั่นที่คุณอธิบายคุณสามารถใช้วิธี external_nodes ในการจำแนกประเภท โดยทั่วไปคุณเขียนสคริปต์ที่ส่งคืน yaml ที่ถูกต้องเมื่อไคลเอนต์เชื่อมต่อ สคริปต์นั้นสามารถทำได้ทุกอย่างที่คุณต้องการตรวจสอบ fqdn สอบถาม db, กด ldap เป็นต้น
ตอนนี้คุณสามารถใช้นิพจน์ทั่วไปได้ใน Puppet 0.25 ดังนั้นสิ่งที่คุณต้องการจะเป็นไปได้:
node /^(foo|bar)\.example\.com$/ {
include blah
}
ดิสทริบิวชันไม่กี่ลำที่จัดส่ง 0.25 ณ ตอนนี้ดังนั้นใน Centos5 ของฉันที่มี 2.24.8 จาก repo ของ EPEL ฉันต้องทำสิ่งนี้สำหรับโหนดงานของฉันด้วยชื่อโฮสต์เช่น wn10.example.com:
node default {
$node_type = regsubst($hostname, '^([a-z]+).*$', '\1')
case $node_type{
wn: {include worker_node}
default: {include generic_node}
}
}