Bahasa khusus domain membuat perbedaan besar dalam jumlah kode yang Anda tulis. Misalnya, Anda dapat berargumen bahwa tidak ada banyak perbedaan antara:
chmod 640 /my/file
dan
file { "/my/file":
mode => 640,
}
tapi ada banyak perbedaan di antara ini:
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"
dan
file { "/my/file":
mode => 640,
owner => foo,
group => bar,
content => "Hello world",
}
Apa yang terjadi jika wget gagal? Bagaimana skrip Anda akan mengatasinya? Dan apa yang terjadi jika ada sesuatu setelah itu dalam skrip Anda yang membutuhkan $ FILE untuk berada di sana dengan konten yang benar?
Anda mungkin berpendapat bahwa seseorang bisa saja memasukkan echo "Hello world" > $FILE
skrip, kecuali bahwa pada contoh pertama skrip harus dijalankan pada klien, sedangkan boneka mengkompilasi semua ini di server. Jadi, jika Anda mengubah konten, Anda hanya perlu mengubahnya di server dan mengubahnya untuk banyak sistem yang Anda inginkan. Dan boneka menangani dependensi dan masalah transfer untuk Anda secara otomatis.
Tidak ada perbandingan - alat manajemen konfigurasi yang tepat menghemat waktu dan kerumitan Anda. Semakin banyak Anda mencoba melakukannya, semakin banyak skrip shell yang tampaknya tidak memadai, dan semakin banyak upaya Anda akan menghemat dengan melakukannya dengan boneka.