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:
- Boot mesin (virtual atau yang lain) dan siap untuk bekerja.
- Pekerjaan harus dilakukan oleh skrip yang dipasang oleh koki / boneka / babushka / dll
- Ketika pekerjaan masuk, mesin virtual harus mulai melakukan pekerjaan.
- 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
- 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 .)
- 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 )
- 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):
- 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.