Mengotomatiskan penyebaran server

28

Saya menemukan saya terus-menerus menyiapkan server dan VPS yang hampir identik untuk sejumlah klien saya dan itu bisa sangat memakan waktu. Seringkali satu-satunya hal yang berubah antara setiap penyebaran adalah situs web berbeda yang akan dilayani. Apakah ada cara mudah untuk mengotomatisasi semua ini dan mengambil membosankan membosankan pengaturan 56 server yang identik?

Server yang saya gunakan sejauh ini hanya Ubuntu, tetapi mungkin saja saya mulai menggunakan OS linux lain atau bahkan Windows. Sejauh ini saya telah melihat Capistrano, tetapi tampaknya berfokus pada penulisan program ruby ​​kecil untuk melakukan pekerjaan itu, dan saya tidak memiliki pengetahuan sama sekali

Josh Hunt
sumber

Jawaban:

20

Wayang terdengar sempurna untuk apa yang Anda coba lakukan, dengan peringatan bahwa sampai sekarang, tidak ada dukungan untuk Windows.

Dalam kasus Anda, Anda akan mendefinisikan node Server dalam hal semua paket yang identik di seluruh mesin. Kemudian, Anda mendefinisikan masing-masing host sebagai node yang mewarisi dari Server, dan mengatur hal-hal unik khusus untuknya.

Wayang adalah deklaratif - ini memungkinkan Anda untuk menggambarkan kotak Anda dalam hal sumber daya yang harus dimiliki setiap kotak. Jadi jika Anda ingin ssh- Anda menulis kelas untuk sumber daya itu - dan di dalam kelas Anda dapat memasukkan logika tentang bagaimana ssh disebut sedikit berbeda pada FreeBSD vs Ubuntu. Ia juga tahu untuk menggunakan yumdi dalam Redhat dan apt-getdi dalam distro berbasis Debian, dan portsdi BSD. Sekarang di node Server Anda, Anda hanya akan memiliki garis seperti include ssh- dan boneka akan melakukan hal yang benar dan menempatkan SSH pada mesin tanpa Anda harus ingat apakah itu Ubuntu atau Redhat atau FreeBSD.

Apa yang menyenangkan adalah bahwa semua hal-hal Server hidup di satu tempat - dan jika suatu saat Anda menambahkan definisi node Server, SEMUA mesin akan memperbarui konfigurasi mereka sesuai.

Saat ini, saya hanya mengelola tiga kotak menggunakan Wayang - tetapi sudah terbayar. Setelah menghabiskan satu minggu menyiapkan kotak yang akan kami gunakan untuk presentasi stimulus dalam percobaan, ternyata driver kartu grafis terlalu tua dalam versi Ubuntu yang saya pakai (8.04). Saya harus menginstal Ubuntu terbaru (9.04), tetapi setelah itu saya hanya perlu apt-get dan menjalankan boneka - dan semua yang saya habiskan seminggu untuk menyiapkannya telah dipulihkan.

Wayang memang memiliki sedikit kurva belajar, tetapi saya telah berhasil menghindari belajar Ruby - Saya tahu saya menggunakannya, karena itulah yang ditulis wayang - tapi sejauh ini saya telah berhasil hanya memodifikasi contoh - contoh di dokumentasi dan resep di wiki . Kelemahan lain adalah bahwa boneka memang membutuhkan waktu sedikit lebih lama untuk melakukan hal-hal pertama kali. Keuntungannya adalah semua yang Anda ubah di semua mesin disimpan di satu tempat - ini adalah praktik standar untuk menjaga konfigurasi boneka Anda dalam sistem kontrol versi - sehingga Anda selalu dapat melihat ke belakang dan melihat bagaimana Anda telah menyiapkan server di masa lalu - atau memutar kembali beberapa perubahan yang gagal.

Akhirnya, inilah video cepat yang melakukan demo boneka sederhana yang membuat saya mulai dengan cepat.

Paul Ivanov
sumber
3
Digg.com menggunakan boneka untuk mengelola server mereka, beberapa contoh dasar dapat ditemukan di blog mereka: blog.digg.com/?p=335 blog.digg.com/?p=562
Adam Gibbins
Saya percaya tim admin Fedora menggunakan boneka juga.
Mei
9

Kami menggunakan Cobbler dan Puppet untuk membangun dan mengotomatisasi konfigurasi mesin nyata dan virtual.

Cobbler menyatukan DHCP, boot PXE dan Kickstart untuk melakukan penyebaran tidak lebih dari menambahkan profil mesin dan menekan tombol daya. Untuk VM, koan perintah melakukan sihir Xen (dalam kasus kami) untuk memulai instalasi - pada dom0I ketik saja:

koan --system vps.fqdn --server cobbler --no-gfx

kemudian virsh consolemenonton gedung VPS tanpa interaksi apa pun.

Kami menggunakan RHEL dan mengatur banyak profil untuk disk partisi, mengonfigurasi jaringan, dan menginstal paket dasar untuk kelas server yang berbeda. Cobbler mendukung trah Debian dan Ubuntu tetapi saya belum pernah mencobanya. Selain itu: kegunaan lain yang menarik untuk Cobbler termasuk menjalankan ISO memtest dan pembaruan firmware HP .

Setelah sistem kami dibangun dengan Cobbler Puppet mengambil alih untuk mengkonfigurasi aplikasi, daemon sistem, mendaftarkan kotak dengan RHN, dll. Wayang berjalan sebagai daemon yang secara berkala memeriksa bahwa konfigurasi sistem sesuai dengan manifes yang ditentukan - Anda tahu pembaruan Anda telah hilang ke semua server. Ini juga cara yang bagus untuk memastikan bahwa sebuah kotak yang telah rusak untuk pemeliharaan memiliki konfigurasi yang benar sebelum Anda mengembalikannya ke layanan langsung.

Wayang benar-benar luar biasa. Anda tidak perlu mengatur setiap aspek konfigurasi di bawah kontrolnya - mulailah dengan mengaturnya sesuatu yang sederhana yang perlu Anda konfigurasi pada setiap kotak (sudoers adalah contoh kanonik) dan ambil dari sana. Pastikan manifes wayang Anda diversi versi juga; tidak ada yang lebih baik daripada dengan mudah dapat memutar kembali ke konfigurasi yang dikenal-baik tanpa harus mengingat apa yang harus disesuaikan.

markdrayton
sumber
6

Di mana saya bekerja saat ini, kita harus mengelola bagian Linux dari server farm kami yang hanya lebih dari 300 server Linux. Ini termasuk HP Proliants, diikuti oleh IBM 3850s, beberapa blade IBM, VMware ESX, dan beberapa KVM untuk server manajemen internal kami.

tukang sepatu

Kami melihat tukang sepatu tetapi masalahnya ada tukang sepatu sangat RHEL / Red Hat khusus. Setidaknya kita perlu mendukung RHEL dan SLES, dan Ubuntu berikutnya.

wayang

Kami memang mempertimbangkan boneka, namun kemudian memutuskan untuk tidak melakukannya karena itu tergantung pada Ruby, yang berarti bahwa pemutakhiran Ruby, berpotensi merusak sistem manajemen kami.

hotwire

Hotwire adalah apa yang kami gunakan (dikembangkan secara internal, tetapi merupakan open-source), dan telah melakukannya selama beberapa tahun terakhir. Pertama-tama menginventarisir sistem yang akan dibangun, yang berarti menginventarisir pusat data, rak, perangkat keras, sistem operasi, jaringan, dll, dan kedua melakukan pembangunan & penyebaran cepat. Setelah sistem dibangun, inventaris otomatis hotwire menjaga inventaris tetap sinkron, sementara cfengine mempertahankannya. Hotwire tahu tentang perangkat keras server dengan berbicara dengan data SMBIOS / DMI di Bios via python-dmidecode .

Poin bonusnya adalah menggabungkan inventaris dan proses pembangunan menjadi satu, jadi ada lebih sedikit untuk dikelola, dan fitur inventaris-langsung sangat bagus seperti yang kita ketahui jika ada sesuatu yang tidak beres.

Kerugiannya adalah bahwa antarmuka pengguna masih perlu dipoles, dan ada bug di sana-sini, tetapi pengembangan masih panas, dan bug yang dilaporkan diperbaiki relatif cepat.

cfengine

Kami menggunakan cfengine karena selain itu, dan boneka, tidak ada yang lain. Sebenarnya itu alat yang baik, tetapi "baik" hanya sebagai fungsi dari seberapa baik kebijakan Anda - jika Anda menetapkan kebijakan berbahaya, maka kesalahan kecil dapat menyebabkan banyak kerusakan. Misalnya, berdasarkan kebijakan, kami tidak "memodifikasi" file, kami menggantinya, atau tidak. Juga semua file yang diganti memiliki tajuk yang membuat setiap orang yang mengeditnya tahu bahwa itu akan diganti saat dijalankan berikutnya (dijalankan melalui cron setiap jam).

Konfigurasi dan semua file yang didorong oleh cfengine ke server juga disimpan dalam SCM, dan menggunakan kait pasca-komit, jika memungkinkan, kami memeriksa sintaks dan jika itu gagal, maka komit ditolak. Ini mudah untuk aplikasi yang bagus seperti Apache, tetapi tidak begitu mudah untuk sebagian besar aplikasi perusahaan.

Xerxes
sumber
Anda memutuskan menentang Wayang karena itu tergantung pada Ruby? Berdasarkan ini, Anda dapat memutuskan hampir apa saja, karena libc atau peningkatan kernel mungkin merusaknya.
Cristian Ciupitu
2
Anda memang benar, tetapi pada akhirnya, itu kompromi - berapa banyak paket yang ingin saya "khawatirkan" pada peningkatan berikutnya. Jika pemutakhiran kernel / glibc salah - Anda biasanya mengharapkan untuk mengetahui segera karena itu adalah komponen paling mendasar dari OS, namun jika Ruby keluar sedikit berbeda, Anda tidak akan benar-benar memperhatikan, tetapi ketika Anda melakukannya, Anda dapat memiliki 300 server yang telah ditingkatkan dan berjalan pada versi itu, dan sekarang Wayang adalah korban. Tetapi sekali lagi, saya tidak memahat apa pun di atas batu; ini hanya preferensi saya dalam masalah ini.
Xerxes
3

Untuk instalasi otomatis tergantung pada sistem target:

  • Debian / Ubuntu: FAI atau preseeding
  • RedHat / Fedora: Kickstart
  • Novell / openSuSE: AutoYaST
  • Solaris: Jumpstart
  • Windows: unattended.sourceforge.net

Untuk manajemen konfigurasi di atas itu saya sarankan menggunakan boneka.

Michael Prokop
sumber
2

Saya mengalami banyak kesuksesan dengan Wayang , tetapi Anda harus menulis banyak konfigurasi.

Dave Cheney
sumber
2

Pilihan lain untuk Wayang di sini. Kami menggunakannya secara luas untuk melakukan semua instalasi server dan aplikasi dan manajemen konfigurasi. 200+ node dan terus bertambah. Dukungan Windows tampaknya sedang dalam pengembangan, meskipun dalam kondisi apa saya tidak yakin.

Kami masih melihat ke sisi bootstrap OS awal hal, tetapi seperti yang disebutkan di atas Cobbler terlihat menarik. Kami saat ini menggunakan campuran boot PXE dengan preseeding Debian / Ubuntu, tetapi ini hampir tidak optimal.

Mike Pountney
sumber
Hei Mike, apakah Anda pikir Anda dapat menambahkan tag boneka untuk pertanyaan ini? Saya akan melakukannya, tetapi tidak memiliki perwakilan yang diperlukan
Paul Ivanov