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.
Ini akan menjadi pendapat yang tidak populer, tetapi sistem manajemen konfigurasi belum tentu lebih baik. Terkadang sederhana memang yang terbaik.
Ada kurva pembelajaran yang pasti dan overhead administrasi yang terkait dengan sistem konfigurasi yang Anda pilih. Anda semua memperkenalkan ketergantungan. Seperti halnya otomatisasi, Anda juga harus berhati-hati bahwa keamanan dipertahankan dalam konfigurasi yang digunakan.
Saya hanya punya beberapa contoh di mana kami menggunakan manajemen konfigurasi dan macet. Itu selalu ketika ada sejumlah besar sistem dengan konfigurasi berulang dan kebutuhan untuk melakukan penyebaran cookie-cutter yang dapat dikonfigurasi.
sumber
Anda telah menjawab pertanyaan Anda sendiri ...
Otomasi menjadi lebih terukur dan diformalkan . Wayang dan Koki dianggap standar akhir-akhir ini (lihat iklan pekerjaan ).
Script shell berbatu bersama memiliki tempat mereka, tetapi mereka tidak scalable dalam konteks gerakan DevOps. Keterbacaan adalah bagian dari itu.
sumber
Chef membuatnya lebih mudah untuk mengelola dan membuat versi pengaturan infrastruktur yang kompleks, terutama dalam semua jenis lingkungan cloud vs harus secara manual ftp atau scp sekelompok skrip shell yang disusun dengan cara yang tidak standar. Bergantung pada berapa banyak dependensi yang Anda butuhkan untuk mengelola, ukuran kemenangan ini dapat sangat bervariasi, membuat keputusan untuk beralih ke solusi CM yang tidak jelas bagi banyak orang.
Manfaat nyata (sering tanpa tanda jasa) dari Chef adalah idempoten . Mampu memastikan keadaan sumber daya terlepas dari kombinasi resep yang dijalankan dengan minat yang tumpang tindih adalah manfaat besar atas konfigurasi skrip shell. Jika Anda memiliki skrip shell untuk konfigurasi sekarang, tanyakan pada diri sendiri berapa banyak dari mereka dapat dijalankan beberapa kali tanpa konsekuensi yang tidak diinginkan / tidak diinginkan?
Solusi CM yang tepat membantu memastikan kesuksesan pada skala dengan menyederhanakan otomatisasi lintas platform dan kolaborasi tim. Meskipun dimungkinkan untuk mencapai semua ini dengan kelompok skrip shell versi terorganisasi dengan baik, versi terawat; Anda harus bertanya pada diri sendiri "mengapa". Koki / Wayang dan teknologi serupa muncul karena sekelompok SysOps yang berbakat bosan harus menyelesaikan masalah yang sama berulang-ulang dan berangkat untuk memberi kami pilihan yang lebih baik.
Potongan kunci:
sumber
Alat manajemen konfigurasi modern seperti Puppet dan Chef memungkinkan Anda untuk menentukan keadaan sistem alih-alih mengkhawatirkan kegiatan yang diperlukan untuk mencapai server yang dikonfigurasi.
Misalnya, perintah chmod Anda mengasumsikan bahwa file itu ada, pengguna yang memiliki file itu ada, bahwa direktori telah dibuat, dan sebagainya. Karena itu skrip Anda harus mempertimbangkan semua prasyarat ini.
Alat manajemen konfigurasi berbasis negara lebih sederhana: Anda hanya peduli bahwa file tersebut memiliki izin yang benar. Bagaimana hal itu dicapai adalah masalah alat.
sumber
chmod
tidak menganggap bahwa file itu ada karena file itu dibuat oleh atau diuji untuk keberadaan oleh skrip.Jika server dapat digunakan oleh Anda, atau Anda memiliki alasan untuk berdiri lebih dari satu pasangan sekaligus, sistem CM full-blown akan jauh lebih baik memenuhi kebutuhan Anda daripada serangkaian skrip shell.
Jika kebutuhan bangunan Anda sederhana, (atau ingin membuat server perdagangan bebas organik buatan tangan secara artistik), maka tetap sederhana.
Secara pribadi, setelah menggunakan Chef secara luas di pertunjukan sebelumnya, saya berusaha 'tetap sederhana' di pertunjukan ini, tetapi saya benar-benar merindukan primitif, abstraksi, dan kekuatan yang diberikan oleh Chef. Bahkan jika Anda sampai pada situasi di mana Anda bisa mendapatkan apa yang Anda butuhkan dari beberapa perintah shell, Anda bisa menjalankannya dengan blok 'command', memasukkan perintah shell Anda persis seperti yang Anda tuliskan di shell.
Dengan itu, Anda dapat menjalankan Chef tanpa server (chef-solo), dan saya cukup yakin bahwa Wayang memiliki analog, di mana Anda masih dapat memanfaatkan buku resep dan resep orang lain tanpa menjalankan server pusat.
Manfaat lain adalah komunitas: ada banyak orang (banyak di antaranya akan lebih pintar dan / atau lebih berpengalaman dari Anda). Secara pribadi saya suka ketika orang lain telah melakukan pekerjaan saya untuk saya, seringkali lebih luas daripada yang saya lakukan.
sumber
Saya membuat kerangka kerja otomatisasi server berbasis skrip shell: https://github.com/myplaceonline/posixcube
Saya yakin saya bukan orang pertama yang membuat proyek semacam ini tetapi saya tidak dapat menemukan sesuatu yang sesuai dengan kebutuhan saya, jadi saya pikir orang lain mungkin menganggap ini berguna. Saya hanya memiliki pengalaman dengan Chef, tetapi ketika saya mulai melihat-lihat Ansible dan yang lainnya, saya ingin mencoba skrip shell, dan saya sangat menyukai hasilnya sejauh ini.
sumber