Pertanyaan Mengapa menggunakan Chef / Puppet di atas skrip shell?


Alat baru untuk Wayang dan Koki. Sepertinya pekerjaan yang mereka lakukan dapat dilakukan dengan shell scripting. Mungkin itu dilakukan dalam skrip shell sampai ini muncul.

Saya setuju mereka lebih mudah dibaca. Tapi, apakah ada kelebihan lain selain skrip shell selain hanya bisa dibaca?


78
2018-05-01 10:13






Jawaban:


Bahasa khusus domain membuat perbedaan besar dalam jumlah kode yang Anda tulis. Misalnya, Anda dapat menyatakan bahwa tidak ada banyak perbedaan antara:

chmod 640 /my/file

dan

file { "/my/file":
    mode => 640,
}

tetapi ada banyak perbedaan 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 naskah Anda akan mengatasinya? Dan apa yang terjadi jika ada sesuatu setelah itu di skrip Anda yang mengharuskan $ FILE berada di sana dengan konten yang benar?

Anda mungkin berpendapat bahwa seseorang bisa saja meletakkannya echo "Hello world" > $FILE dalam skrip, kecuali bahwa dalam 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 sebanyak mungkin sistem yang Anda inginkan. Dan pegangan boneka dependensi dan transfer masalah untuk Anda secara otomatis.

Tidak ada perbandingan - alat manajemen konfigurasi yang tepat menghemat waktu dan kerumitan Anda. Semakin banyak yang Anda coba lakukan, semakin banyak skrip shell yang tidak memadai, dan semakin banyak usaha yang akan Anda hemat dengan melakukannya dengan boneka.


55
2018-05-01 11:14



@ Paul Gear, itu adalah penyederhanaan yang berlebihan untuk mengatakan bahwa alat manajemen konfigurasi adalah cara untuk pergi dalam jangka panjang. Sebagai contoh, menggunakan AWS skrip shell dapat membangun server dari awal, menjalankan beberapa tes, dan setelah Anda yakin insting AWS adalah ok, buatlah gambar. Kemudian Anda dapat menyebarkan gambar ini ke pratinjau atau lingkungan pementasan untuk pengujian lebih lanjut, setelah Anda memvalidasi gambar yang baik untuk tujuan Anda, kemudian Anda mendorong ke produksi. Alat manajemen konfigurasi tidak membantu sama sekali dalam skenario ini. - Derek Litz
Sekarang jika Anda ingin mengelola 100 server khusus yang digunakan orang setiap hari (dan Anda memiliki sedikit kendali atas apa yang mereka lakukan, keliru atau tidak) di situlah alat manajemen konfigurasi harus digunakan. - Derek Litz
Ini bukan contoh yang sangat meyakinkan. Saya bisa mulai dengan wget dan kemudian saya tidak akan berakhir dalam keadaan aneh. Apakah file seperti transaksi yang akan dibatalkan jika salah satu langkah tidak berhasil? - PSkocik


Ini akan menjadi pendapat yang tidak populer, tetapi sistem manajemen konfigurasi belum tentu lebih baik. Terkadang sederhana adalah yang terbaik.

Ada kurva belajar yang pasti dan overhead administrasi yang terkait dengan sistem konfigurasi yang Anda pilih. Anda setelah semua memperkenalkan ketergantungan. Seperti halnya otomatisasi, Anda juga harus berhati-hati agar keamanan dipertahankan dalam konfigurasi yang diterapkan.

Saya hanya punya beberapa contoh di mana kami menerapkan manajemen konfigurasi dan macet. Itu selalu ketika ada sejumlah besar sistem dengan konfigurasi berulang dan kebutuhan untuk melakukan penyebaran cookie-cutter dikonfigurasi.


31
2018-05-01 14:58



Ketika biaya mengelola lingkungan begitu besar sehingga mengelola otomatisasi benar-benar lebih murah. Jika lebih mudah untuk mengubah skrip yang dikelola di Git atau mengatur segalanya dalam multiplexer ssh kita melakukan itu. Apa yang paling penting bagi saya adalah saya memonitor sistem dan memverifikasi bahwa semuanya berfungsi seperti yang diharapkan. Selama saya diberitahu ketika ada sesuatu yang salah dikonfigurasi, tidak begitu penting bagaimana hal itu dikonfigurasi. - kenchilada
@whwhite "kapan Anda memutuskan untuk mengotomatiskan vs. tidak" xkcd.com/1205 - MikeyB
Alat yang lebih modern seperti Ansible memiliki lebih sedikit penyebaran / manajemen overhead daripada Chef atau Wayang, yang membutuhkan sedikit atau tidak ada ketergantungan (Ansible khususnya adalah tanpa agen). Ini benar-benar menurunkan bar untuk diadopsi. - GomoX
@whwhite Anda mengotomatiskan saat Anda menginginkan produktivitas pribadi. Anda belajar dengan mengotomatiskan, Anda tidak belajar dengan melakukan tugas-tugas duniawi. Pembelajaran = peningkatan produktivitas dan peningkatan iteratif. Otomatisasi menggabungkan dengan ini untuk menghasilkan lebih banyak positif. Ini bola salju positif, bukan yang negatif. Kemajuan Teknis vs Utang Teknis. - Derek Litz
@ A-B-B Tidak, itu tidak tersirat. Saya bahkan tidak menyebutkan skrip shell, saya menyebutkan otomatisasi sebagai praktik umum. Anda dapat mengotomatiskan hal-hal dengan skrip shell dan mempelajari abstraksi scripting daripada melakukan sesuatu secara manual yang tidak hanya akan menghemat waktu Anda melakukan tugas itu lagi, itu akan mencegah kesalahan. Juga, Anda harus bisa menulis skrip selanjutnya sedikit lebih baik daripada yang terakhir. Bola salju positif ... Namun, jika Anda ahli dalam menulis skrip dan Anda tidak membuat skrip sesuatu yang pernah Anda jalankan lagi, itu tidak membantu Anda belajar atau menghemat waktu Anda dengan cara apa pun. - Derek Litz


Anda telah menjawab pertanyaan Anda sendiri ...

Otomasi menjadi lebih terukur dan diformalkan. Wayang dan Chef dianggap standar hari ini (periksa iklan pekerjaan).

Skrip shell berbatu-batu memiliki tempat mereka, tapi mereka tidak terukur dalam konteks gerakan DevOps. Keterbacaan adalah bagian dari itu.


23
2018-05-01 10:40



Apakah skrip shell entah bagaimana kurang diformalkan? Apakah mengutip iklan lowongan kerja membuat argumen meyakinkan? Dan seorang devops cukup memalukan, karena dia tidak terlalu dicurahkan sebagai pengembang. Tautan tidak mengatakan apa pun tentang skalabilitas. Apakah klaim bahwa skrip shell tidak dapat skalabel? Saya pikir Wayang menarik, tetapi tidak harus karena alasan dalam jawaban. - A-B-B
Iklan kerja mencerminkan pasar nyata untuk keterampilan khusus. Ya, menggunakan manajemen konfigurasi untuk tujuan yang dimaksudkan lebih terukur, lebih kuat dan lebih mudah untuk didokumentasikan daripada skrip shell. Saya telah berada di banyak lingkungan, dan sebagian besar skrip yang saya lihat tidak dibangun dengan cara yang dianggap "kualitas produksi" dan diatur untuk menangani pengecualian. Lihat jawaban yang diterima untuk memahami alasannya. - ewwhite
"Dan seorang devop cukup memalukan, karena dia tidak banyak dilirik sebagai pengembang." Ini tidak benar. DevOps adalah spesialisasi pengembangan, seperti Pengembangan Web. Pola dan praktik pengembangan perangkat lunak masih berlaku. Anda harus membaca tentang DevOps. - Chaim Eliyah


Chef membuatnya jauh lebih mudah untuk dikelola dan versi pengaturan infrastruktur yang kompleks, terutama di semua jenis lingkungan cloud vs harus ftp secara manual atau scp sekelompok skrip shell yang diorganisasikan dengan cara yang tidak terbakukan. Tergantung pada berapa banyak dependensi yang perlu Anda kelola, ukuran kemenangan ini dapat sangat bervariasi, membuat keputusan untuk pindah 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 tumpang tindih kepentingan adalah manfaat besar atas konfigurasi skrip shell. Jika Anda memiliki skrip shell untuk konfigurasi sekarang, tanyakan pada diri Anda berapa banyak dari mereka dapat dijalankan beberapa kali tanpa konsekuensi yang tidak diinginkan / tidak diinginkan?

Solusi CM yang tepat membantu memastikan kesuksesan dalam skala dengan menyederhanakan otomatisasi lintas platform dan kolaborasi tim. Meskipun dimungkinkan untuk menyelesaikan semua ini dengan kelompok skrip shell yang terorganisir dengan baik, dipelihara dengan baik, dan berversi; Anda harus bertanya pada diri sendiri "mengapa". Chef / Wayang dan teknologi serupa muncul karena sekelompok SysOps yang berbakat lelah harus menyelesaikan masalah yang sama ini berulang kali dan mulai memberi kami pilihan yang lebih baik.

Potongan-potongan kunci:

  • Idempoten
  • Kemudahan Manajemen Ketergantungan (versi)
  • Organisasi Standar (diterima di tingkat industri)
  • Abstraksi untuk memisahkan tugas konfigurasi server dari detail tingkat sistem
  • Kemampuan untuk meningkatkan pengetahuan masyarakat (yang dijamin untuk merangkul semua prinsip di atas)

13
2018-05-03 19:11



Idempotensi hampir tidak mungkin dilakukan dengan ss. Dependensi dikelola dengan baik oleh yum / apt, dll. Penerimaan tidak relevan. Pengetahuan komunitas ada untuk ss. Saya menerima, bagaimanapun, bahwa tidak harus menyalin banyak skrip, dan juga mengkonfigurasi sistem secara terpusat, keduanya berguna. Saya mendengar boneka membutuhkan agen sisi klien. - A-B-B


Alat manajemen konfigurasi modern seperti Wayang dan Koki memungkinkan Anda untuk menentukan negara dari suatu sistem bukannya mengkhawatirkan kegiatan diperlukan untuk mencapai server yang dikonfigurasi.

Sebagai contoh, perintah chmod Anda mengasumsikan bahwa file itu ada, pengguna yang memiliki file itu ada, bahwa direktori telah dibuat, dan seterusnya. 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 itu tercapai adalah masalah alat itu.


10
2018-05-20 02:19



Sebenarnya saya chmod tidak menganggap bahwa file itu ada karena file itu dibuat oleh atau diuji untuk eksis oleh skrip. - A-B-B


Jika server dapat digunakan untuk Anda, atau Anda memiliki alasan untuk berdiri lebih dari satu pasangan pada satu waktu, sistem CM yang lengkap akan jauh lebih baik memenuhi kebutuhan Anda daripada serangkaian skrip shell.

Jika kebutuhan membangun Anda sederhana, (atau seperti seni-organik adil-perdagangan server kerajinan tangan organik), maka tetap sederhana.

Secara pribadi, setelah menggunakan Chef secara ekstensif di pertunjukan sebelumnya, saya berusaha untuk 'tetap sederhana' di pertunjukan ini, tapi saya benar-benar merindukan primitif, abstraksi, dan kekuatan yang disediakan Chef. Bahkan jika Anda mendapatkan situasi di mana Anda bisa mendapatkan apa yang Anda butuhkan dari beberapa perintah shell, Anda dapat menjalankannya dengan blok 'perintah', memasukkan perintah shell persis seperti yang Anda tuliskan di shell.

Dengan demikian, Anda dapat menjalankan Chef tanpa server (koki-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 daripada Anda). Secara pribadi saya suka ketika orang lain telah melakukan pekerjaan saya untuk saya, seringkali lebih luas daripada yang seharusnya.


9
2018-05-01 22:32





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 seperti itu 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 memberikan skrip shell, dan saya suka hasilnya sejauh ini.


1
2017-12-25 01:15