ภาษาเฉพาะโดเมนนั้นสร้างความแตกต่างอย่างมากกับจำนวนรหัสที่คุณเขียน ตัวอย่างเช่นคุณอาจโต้แย้งว่าไม่มีความแตกต่างระหว่าง:
chmod 640 /my/file
และ
file { "/my/file":
mode => 640,
}
แต่มีความแตกต่างอย่างมากระหว่างสิ่งเหล่านี้:
FILE=/my/file
chmod 640 $FILE
chown foo $FILE
chgrp bar $FILE
wget -O $FILE "http://my.puppet.server/dist/$FILE"
# where the URL contains "Hello world"
และ
file { "/my/file":
mode => 640,
owner => foo,
group => bar,
content => "Hello world",
}
จะเกิดอะไรขึ้นถ้า wget ล้มเหลว? สคริปต์ของคุณจะจัดการกับสิ่งนั้นอย่างไร และจะเกิดอะไรขึ้นถ้ามีบางอย่างในสคริปต์ของคุณที่ต้องการ $ FILE เพื่อให้มีเนื้อหาที่ถูกต้อง
คุณอาจโต้เถียงว่ามีใครสามารถใส่echo "Hello world" > $FILE
สคริปต์ยกเว้นในตัวอย่างแรกสคริปต์จะต้องเรียกใช้บนไคลเอนต์ในขณะที่หุ่นกระบอกคอมไพล์ทั้งหมดนี้บนเซิร์ฟเวอร์ ดังนั้นถ้าคุณเปลี่ยนเนื้อหาคุณจะต้องเปลี่ยนมันบนเซิร์ฟเวอร์และมันจะเปลี่ยนสำหรับระบบได้มากเท่าที่คุณต้องการ และหุ่นจัดการการอ้างอิงและถ่ายโอนปัญหาให้คุณโดยอัตโนมัติ
ไม่มีการเปรียบเทียบ - เครื่องมือจัดการการกำหนดค่าที่เหมาะสมช่วยให้คุณประหยัดเวลาและความซับซ้อน ยิ่งคุณพยายามทำเท่าไหร่เชลล์สคริปต์ก็ยิ่งดูเหมือนไม่เพียงพอและยิ่งคุณพยายามประหยัดมากขึ้นด้วยการใช้หุ่นเชิด