Teknologi untuk VM pribadi berumur pendek

8

Saya mencoba membangun sistem yang akan menjalankan komponen perangkat lunak yang berumur pendek (CI dan uji coba), itu wajib menurut persyaratan saya bahwa masing-masing tinggal di host pribadi. Saya mengambil definisi itu untuk memasukkan opsi paravirtualsation juga, karena sepertinya itu akan menyelamatkan saya banyak sakit kepala.

Saya bekerja pada Mac, jadi hampir semua teknologi keluar, libvirt dan quemu , dll tidak akan bekerja untuk saya. Namun saya berencana untuk menggunakan Debian; jadi apa pun yang berjalan di Debian kembali ke atas meja, asalkan saya bisa skrip penyediaan mesin host serta domain tamu itu.

Pengaturan yang saya maksudkan adalah yang dapat saya gunakan untuk mem-bootstrap installer Debian, bahwa sesuatu harus berarti bahwa setelah boot, mesin secara otomatis disediakan (Chef, Wayang, Babushka, tidak keberatan, sungguh-sungguh) - dan bagian dari penyediaan itu harus membangun rootfs templat yang dapat digunakan untuk mem-boot wadah. Wadah itu sendiri juga perlu disediakan, sehingga ketika wadah itu muncul, ia tahu pekerjaan apa yang harus dilakukan, dan dapat melakukan pekerjaan itu, lalu keluar.

Singkatnya, inilah alur kerja yang saya butuhkan:

  1. Boot mesin (virtual atau yang lain) dan siap untuk bekerja.
  2. Pekerjaan harus dilakukan oleh skrip yang dipasang oleh koki / boneka / babushka / dll
  3. Ketika pekerjaan masuk, mesin virtual harus mulai melakukan pekerjaan.
  4. VM harus melakukan pekerjaannya, keluar dan lepaskan sumber dayanya ke mesin induk / host. (Sangat penting bahwa ini ditingkatkan ke setidaknya ratusan VM tamu pada perangkat keras yang masuk akal)

Saya telah sampai pada titik di mana saya telah mencoba yang berikut, dan meninggalkan mereka karena alasan yang diuraikan di bawah ini:

Untuk mesin host

  1. Pre-seed gambar mikro ISO Debian dengan Instalinux (didukung LinuxCOE) ( Buruk: Tidak berfungsi sama sekali ("Tidak ada modul kernel yang ditemukan" (karena gambar Instalinux tidak sinkron dengan repositori FTP, tampaknya solusi ini terkenal rapuh,) itu juga tidak memungkinkan banyak ruang untuk pasca-instal, dan menjatuhkan kunci SSH yang diketahui, kunci host, dll ke mesin, sepertinya seperti api dan lupa, pada akhirnya saya memiliki mesin yang sedang berjalan, tetapi tidak ada akses ke sana .)
  2. Pra-seed Debian netinst ISO ( Buruk : masalah yang sama, seperti di atas, kecuali setidaknya instalasi biasanya selesai karena tidak ada perbedaan kernel antara ISO dan repositori FTP. Masih terbatasnya ruang lingkup untuk pasca pemasangan. Baik : Benar-benar andal dan dapat diulang, mudah dilemparkan ke tumpukan teknologi VM apa pun di Mac, atau pada mesin logam kosong, akan berfungsi di mana saja, namun saya tidak dapat cukup memasangnya )
  3. Berbagai metode untuk membangun rootfs, dan mengompilasinya sebagai image hard disk yang dapat di-boot ( Buruk : Sedikit yang bisa saya peroleh adalah rapuh sekali, akan sulit dipasang ke mesin nyata, dan merupakan proses pembangunan yang kompleks. Baik: Jika Saya bisa membuatnya bekerja, ini sepertinya memberikan ruang paling untuk pra-konfigurasi mesin ke spesifikasi yang diberikan dengan kunci ssh, kunci host, nama host, perangkat lunak yang diinstal dari Git dan apa pun yang lain, tetapi kemudian pertanyaannya adalah bagaimana mengemas untuk distribusi, atau cara skrip rekreasinya. )

Sejujurnya saya tidak yakin teknologi apa yang diharapkan digunakan orang untuk memunculkan VM dari yang tidak ada menjadi sistem yang berjalan, bekerja dan bermanfaat. Sepertinya tiga langkah bagi saya a) sistem operasi, b) konfigurasi sistem (pengguna, dll) dan kemudian c) perubahan sistem file.

Untuk mesin tamu (virtual):

  1. Banyak hal, sebagian besar saya pikir jawabannya di sini adalah rootfs readonly dibuat dengan debootstrap, dan partisi khusus pada wadah LXC yang berisi pekerjaan yang harus dilakukan untuk contoh khusus ini (manifes pekerjaan). Masukkan semua peringatan yang biasa tentang membangun OS, boot, membuat pengguna, memeriksa perangkat lunak dari git, dan melakukan pekerjaan.

Saya benar-benar tidak yakin alat apa yang harus dijangkau, sepertinya masalahnya harus diselesaikan dengan baik. Tapi saya tidak tahu di mana harus memulai.

Kebanyakan orang tampaknya menyarankan untuk mesin host bahwa saya harus memilih teknologi virtualisasi, boot mesin ke kondisi kerja, dan kemudian snapshot (libvirt tampaknya menjadi favorit logis untuk ini). Menggunakan snapshot untuk memunculkan instalasi selanjutnya untuk pengujian, atau dalam produksi.

Untuk mesin tamu, lxc tampaknya memberikan opsi termudah, kecuali bahwa latar belakang wadah, dan menghubungkannya nanti melalui konsol rusak di semua kernel sekarang, dan versi terbaru lxc tersedia untuk stabil Debian berusia lebih dari 18 bulan , dan tidak memiliki banyak fitur yang banyak digunakan.

Biasanya saya adalah pengembang aplikasi, dan saya tidak sering bekerja dengan teknologi tingkat server (dan saya yakin SF akan menandai pertanyaan ini sebagai "terlalu subyektif") tapi saya benar-benar tidak yakin alat mana yang harus dijangkau.

Kata terakhirnya adalah saya tahu satu proyek yang sama susun (travis-ci.org) yang menggunakan kotak Vagrant untuk ini. Itu tampak seperti instrumen yang agak tumpul, alat besar, lambat, berorientasi ruby ​​yang dirancang untuk penyediaan desktop skala kecil dari pengujian VM yang digunakan untuk infrastruktur layanan penting, tapi saya juga tahu beberapa dari mereka, dan mereka lebih pintar daripada saya, jadi mungkin mereka menyerah begitu saja.

Setiap bantuan dihargai.

Lee Hambley
sumber
Ya ampun ... Ini pasti bisa otomatis. Membangun sistem itu mudah. Saya berasumsi Anda dapat membuat skrip pekerjaan atau menggunakan alat manajemen konfigurasi pilihan Anda. Informasi lebih lanjut tentang tujuan atau hasil akhir dari upaya ini akan sangat membantu. Anda berada tepat di antara solusi cloud pribadi atau menggunakan sesuatu seperti LXC ...
ewwhite
Tentu saja, intinya adalah untuk dapat membangun host dengan cara yang tim saya dan saya (pengguna Mac) dapat secara berulang membangun host , di dalamnya kami dapat mengembangkan dengan tamu LCX, tetapi membangunnya dengan cara yang kami juga dapat menggunakan itu untuk produksi. Perkakas untuk aplikasi kami semuanya ditulis dalam Ruby, dan saya BENAR-BENAR ingin menggunakan LXC untuk para tamu. Mesin host secara alami berumur panjang, tetapi karena umur khas seorang tamu adalah 2-10 menit, seluruh infrastruktur bersifat fana, sungguh. Ini tentang dev vs produksi, dan memiliki proses berulang.
Lee Hambley

Jawaban:

2

Beberapa ide:

  1. Maksud Anda "ratusan VM pada perangkat keras yang masuk akal" membuat saya (tanpa pengalaman pribadi) memikirkan VM yang bisa boot melalui jaringan atau berbagi sebagian besar ruang volume mereka (/ usr) melalui NFS. Tergantung seberapa mirip VM Anda.
  2. "Betapa kecilnya aku bisa bekerja, sangat rapuh." Sulit dipercaya. Bisakah Anda lebih tepat apa masalahnya?
  3. "Akan sulit untuk menginstal ke mesin nyata" Maksudmu "sulit" dibandingkan dengan apa, dengan solusi 1-klik yang diinginkan untuk pembuatan VM? Saya akan bertanya: Seberapa sulit hal ini dan seberapa sering hal ini akan terjadi? Apa bedanya, menciptakan initrd untuk masing-masing perangkat keras?
  4. "Namun saya tidak dapat menginstalnya cukup setelah" Apa yang Anda tongkat / butuhkan dan mengapa itu tidak berhasil? Anda dapat mengunduh skrip sebagai bagian dari proses booting. VM mendapatkan IP-nya melalui DHCP (sulit dikonfigurasi ke alamat MAC VMs) dan Samba memberikan skrip post-install yang berbeda ke VM, tergantung pada alamat IP klien.
Hauke ​​Laging
sumber
+1 untuk boot jaringan. Saya tidak memiliki pengalaman yang cukup untuk menulis jawaban lengkap tentang hal itu, tetapi saya dapat memberitahu Anda bahwa saya telah berada di tempat yang menggunakan ratusan mesin, baik fisik dan virtual, dengan meminta mereka boot dari server PXE. Ini berarti Anda tidak perlu repot dengan gambar disk terpisah untuk setiap VM.
Moshe Katz
1

Saat membaca posting Anda, saya terus berpikir bahwa gelandangan dan jenkins dengan plugin gelandangan akan cocok dengan kebutuhan Anda dengan cukup baik. Kotak apa pun yang Anda miliki yang benar-benar dapat menangani jumlah VM yang Anda bicarakan seharusnya tidak memperhatikan biaya alat yang menjaga lingkungan.

James Thompson
sumber
0

Menggunakan beberapa hal yang berfungsi pada apel dan Debian, satu-satunya hal yang saya coba adalah kotak virtual. Apa yang bagus menggunakan virtualbox di sini adalah Anda dapat membangun VM di sistem mac Anda dan menyalinnya ke sistem Debian menggunakan versi kotak virtual yang sama dan itu akan boot.

Memiliki ratusan vms menggunakan kotak suara virtual seperti Anda akan menghabiskan cukup banyak waktu menggunakan antarmuka vboxmange untuk skrip info unik yang diperlukan untuk setiap vm. Seperti cairan untuk hard drive, alamat mac pada antarmuka jaringan.

Jika sistem dasar akan menggunakan perangkat lunak yang sama yang dikonfigurasi dengan cara yang sama, Anda dapat membuat snap shot sistem dalam kotak virtual dan membekukannya. Sehingga tidak ada perubahan yang dibuat tertulis pada snap shot beku Anda, tetapi sebaliknya ditulis ke area penyimpanan sementara yang baru. Kemudian hapus VM, kembalikan ke snap shot dan Anda bekerja dengan sistem bersih tanpa perubahan yang dibuat selama pengujian. Ini semua dapat ditulis menggunakan vboxmange .

Menggunakan snapshot Anda, Anda juga bisa membuat ratusan salinan gambar VM itu. Menggunakan antarmuka skrip vboxmange untuk membuat salinan, unik dalam hal yang berarti yaitu, uuids dan alamat mac. Kemudian minta panggilan skrip start up apa pun yang berubah, konfigurasi yang perlu Anda terapkan pada VM Anda untuk pengujian, atau menjalankan berbagai tes.

nelaaro
sumber