Dağıtmak için bir Ubuntu VM'si oluşturma


19

Ben bir programlama dersi için TA'yım ve öğrencilerin hepsi aynı sanal sisteme sahip olacak şekilde önceden yüklenmiş tüm gerekli yazılımlarla (C ++ ve Python geliştirme için) Ubuntu 14.04 LTS tabanlı bir sanal makine görüntüsü oluşturmakla görevliyim ve mücadelelerden kaçınırız her şeyin çeşitli farklı makinelerde ve işletim sistemlerinde çalışmasını sağlamak. Virtual Box'ı ücretsiz ve mevcut çapraz platform olduğu için ana bilgisayar VM yazılımı olarak kullanmayı planlıyoruz.

Naïvely, ben sadece Ubuntu 14.04 LTS disk görüntüsünü kullanmak, Sanal Kutumda çalıştırmak, sanal sabit diske (VDI) yüklemek, önceden tanımlanmış bir şifre ile bir "öğrenci" hesabı kurmak, gerekli tüm yazılımı yüklemek, kapatmak sanal makineyi indirin ve VDI dosyasını dağıtın. Her öğrenciden VDI'yi Sanal Kutu'ya aktarmasını, çalıştırmasını ve kişisel hesaplarını oluşturmasını isteriz (veya sadece varsayılan öğrenci hesabını kullanırız).

  • Yukarıdaki prosedür uygulanabilir mi?
  • Dikkat edilmesi gereken tuzaklar nelerdir? Bunun hemen hemen aptalca dayanıklı olması gerekiyor. 80'den fazla öğrenci bekliyoruz ve sadece dört TA'sız, bu yüzden bireysel destek sağlayamıyoruz.
  • Dinamik olarak ayrılmış VDI tipi sanal HDD kullanmanın dezavantajları var mı?
  • Sanal Kutu'nun Konuk Eklemelerini hemen yarasadan kurmam uygun mu yoksa ana bilgisayara özgü bir şey yapıyor mu?
  • Kullanıcı hesabı oluşturma işleminin daha zarif bir yolu var mı? İdeal olarak, Ubuntu bunları bir hesap oluşturma sihirbazından geçirir ve görüntüyü ilk açtıklarında şifrelerini ayarlamalarını (ve sudoers dosyasına eklemelerini) sağlar. Yine de bu bir öncelik değil. Sanırım varsayılan bir hesaba sahip olmak iyidir.

3
Yazılımı GPL şartları altında dağıtırken kaynak kodu için bir teklif eklemeniz gerektiğini unutmayın.
ChrisInEdmonton

@ChrisInEdmonton İyi bir nokta. Kendim herhangi bir kod yazmadığım için, bu teknik olarak bir değişiklik mi yoksa sadece yeniden dağıtım mı? Öğrencileri, sormaları (istemeyecekleri) veya yasal olarak kaynakları proaktif olarak sağlamak zorunda mıyım diye Ubuntu'ya veya üçüncü taraf kaynaklara yönlendirmek yeterli mi? Görüntüyü yayınlamam, daha ziyade sınırlı erişime sahip sınırlı bir kitleye sunmamın önemi var mı?
Jonas Greitemann

Bir avukat olmadığım için sizi GPL'ye yönlendireceğim. Burada sorun olması pek olası değil. :)
ChrisInEdmonton

2
Bunu Ubuntu görüntüsünün kendisiyle birlikte yapmak zorunda olmadığınızı söyleyebilirim : gnu.org/licenses/… Kaynak kodunu nasıl indireceğinizle ilgili talimatlarda bir yere yazın.
Markon

1
Bunu yapmadan önce Canonical'in fikri mülkiyet ve yeniden dağıtım politikalarını dikkatle incelemek isteyebilirsiniz. GPL yazılımı kaynakla yeniden dağıtılabilirken ve tipik bir Linux dağıtımında lisanslanan yazılımların hemen hemen tüm lisanslarını makul şartlar altında yeniden dağıtıma izin verirken, en azından son zamanlarda Canonical'in IP politikası hakkında bazı tartışmalar olmuştur .
CVn

Yanıtlar:


18

Bu soru bir dereceye göre biraz fikir olsa da:

Evet bu prosedür uygulanabilir - Aradığınızı başaracağına ve geçmişte diğer linux dağıtımlarıyla yaptığım bir şey olduğuna inanıyorum.

Tek gerçek tuzak disk alanı etrafında ... öğrencilerin makinelerin Sanal Diskin boyutunu işlemek için yeterli disk alanına sahip olduğundan emin olun. Ayrıca, bir öğrenci makinelerini öldürdüğünde diski hızlı bir şekilde yeniden oluşturmak için şablon / referans diskini kullanabilmeniz için en az bir makinede bir kopyasını çevrimdışı tuttuğunuzdan emin olun.

Dinamik bir diskin dezavantajları, ana bilgisayar işletim sisteminin VM veri / güncellemelerle birlikte büyüdükçe daha fazla disk alanı ayırmaya devam etmesidir. Bu, zaman zaman baş ağrısı olabilen bir performans yüküne sahiptir - özellikle düşük güçlü bir VM'de çalışıyorsanız (bir diski genişletmek için kullanılan ana makine gücü eksi güç, VM'leri biraz geciktirir). daha sonra taşınabilir (laboratuvarınızdaki tüm makinelerde öğrenci VM'sini bozduğunda 100GB + olabilir)

Konuk eklentiler makineye özel değildir .. hemen hemen bir sürücü kümesidir. VM'yi yeni bir ana bilgisayara içe aktardığınızda, VM sürücüleri yeni ana bilgisayarda çalışmak için donanımınızı algılar ve değiştirir.

Zarif kullanıcı oluşturma - emin değilim, belki de ilk açılışta çalışan ve bir kullanıcıdan komut dosyasının kendini imha etmeden önce yeni bir hesap oluşturmasını isteyen bir komut dosyası mı? Biraz kazma yapacağım ve 5 dakikam olduğunda sana geri döneceğim.

Umarım bu en azından kısmen yardımcı olur.


2
Teşekkürler, çok yardımcı oluyor. Temel kaygım temelleri karıştırmamak. Kullanıcı oluşturma işlemine çok fazla zaman harcamayın. Gerçekten o kadar önemli değil. Sadece düşündüm, yine de sorduğumdan, oldukça yaygın bir sorun olduğunu düşündüğüm için, bununla başa çıkmak için yerleşik bir mekanizma olup olmadığını da sorabilirim.
Jonas Greitemann

1
kesinlikle - ve tamamen yerleşik bir çözüm olması mümkündür, bu yüzden bulmak istiyorum.
Fazer87

13

Sorunuzu tam olarak cevaplayarak, VM'yi uyarlamanız ve onlara teslim edilebilir bir VirtualBox VM'si vermeniz gerekiyorsa, VM'yi gerekli tüm bağımlılıklarla önceden paketlemek için Packer'ı kullanmanızı öneririm . Sadece bu amaç için üretilmiştir ve bir ISO'dan bir görüntüyü döndürmenize , bu görüntüye karşı istediğiniz herhangi bir provizyon gerçekleştirmenize ve daha sonra teslim edilebilir bir VirtualBox VM görüntüsü oluşturmanıza izin verir. Bu sizin için de iyidir, çünkü çoğaltmak / ona bir şey eklemek istediğinizde teslim edilebilir olana tam olarak ne yaptığını belgelemektedir. Ayrıca, projeyi bir kaynak kontrol sisteminde kontrol edebilir ve değişiklikler yapabilirsiniz. İşte başlamanız için yapılanlara bir örnek .

Ancak, hızlı bir şekilde yayınlanmalarını istiyorsanız, Vagrant'ı kullanmanızı ve standart bir Ubuntu görüntüsünde ihtiyaç duyduğunuz istenen provizyonu gerçekleştiren bir Vagrant dosyası dağıtmanızı öneririm . Bunun birkaç avantajı vardır:

  • Vagrant, VirtualBox ile kutudan çıkar çıkmaz çalışır ve öğrenciler için paylaşımlı klasörleri kurmak, böylece VM ile ana makine arasında kolayca kopyalayabilmeleri, kutuyu kendileri için internet erişimine izin verecek şekilde ağları yapılandırmak gibi tüm sabit parçaları işleyecektir. Bu, VirtualBox kurulum sorunlarını belgelemek / hatalarını ayıklamak zorunda kalmanıza da zaman kazandırır.
  • Vagrantfile, teslim edilebilir bir VM'den çok daha küçüktür. Kurs boyunca VM'ye bir şey değiştirmek / eklemek istiyorsanız, yeni bir VM yeniden oluşturmanız gerekmez, onlara güncel bir Vagrantfile verin.
  • Onarma yeteneklerinin ötesinde bir şey karıştırırlarsa, VM'yi ağrısız bir şekilde yok edebilir / yeniden yerleştirebilirler
  • Bir Vagrantfile, öğrencilere VM'ye ne yapıldığını tam olarak gösterecek, böylece yeterince anladıkları noktaya geldiklerinde, kaputun altında neler olup bittiğini görebilecekler ve muhtemelen ondan da öğrenecekler.

Aşağıda , Ubuntu 14.04 görüntüsünde nasıl bir ön hazırlık yapılacağını gösteren bir örnek Vagrantfile bulunmaktadır .


3
Vagrant ve / veya Packer bunu yapmanın yoludur.
Sandy Chapman

9

Mükemmel uygulanabilir. Alternatif Vagrant, Kukla, Şef veya VM'leri sıfırdan inşa etmek için benzer bir şey olurdu, ancak bu kurulum için çok iş.

Sitelerimden birindeki geliştirme ekibi, yeni geliştiricilerin hızlı bir şekilde çalışmaya başlaması için aynı şeyi yapıyor.
Resimde 1 önceden ayarlanmış hesap (sudo-hakları olan) ve kişisel hesapta oluşturmak için atmaları gereken adımları içeren kısa bir talimat belgesi.

Lütfen dikkat: Büyük olasılıkla VM içinde ağ / internet erişimine ihtiyacınız vardır. Bu, köprülenebilir veya ana bilgisayara NAT olarak yerleştirilebilir. Hangisini seçerseniz seçin, öğrencilere bunun ev sahibi tarafını nasıl yapılandıracaklarını bildirmeniz gerekir. VM içindeki NIC'yi DHCP cihazı olarak kurmanız yeterlidir. Daha sonra kullanıcının statik bir IP adresini manuel olarak yapılandırması gerekse bile, çoğu yapılandırma için güvenli bir başlangıç ​​noktasıdır.
Sanal makineye statik bir IP adresi koymak gerçekten sorun istiyor. Aynı LAN'da çevrimiçi olan başka bir VM tarafından kullanımda olması zorunludur ...


3
"Kurulması gereken çok iş", ne sıklıkta görüntü oluşturmanız gerektiğine bağlıdır. Önümüzdeki dönem yine aynı kursu mu veriyorsunuz? Önümüzdeki dönem belki de farklı bir dilde benzer bir kurs mu veriyorsunuz? Halefleriniz için hayatı kolaylaştırmak ister misiniz? C ++ derleyicilerinin sonraki sürümlerde düzeltilen hataları var. 2017'de yeni bir C ++ standardı ortaya çıkıyor. Unutmayın, bir programcı, 2 saniye içinde bir görevi yerine getirmek için bir programı yazmak için 2 saat harcayan ve 2 dakika el ile sürecek bir kişidir. ;-)
Jörg W Mittag

2
@ JörgWMittag Tabii ki bir noktanız var. Ancak Vagrant ve benzerlerine aşina değilseniz, öğrenme eğrisi oldukça dik / zaman alıcı olabilir. Şahsen ben muhtemelen bu dönem hızlı bir çözüm için VM çözümü için gider ve dönem boyunca uzun vadeli bir yaklaşım için diğer çözüm geliştirmek için biraz zaman harcamak.
Tonny

2
Ağ erişimi ile ilgili olarak, dağıtılmış VM'ler muhtemelen aynı MAC adreslerine sahip olacaktır. NAT ile ilgili bir sorun olmayabilir, ancak MAC adreslerini yine de sıfırlamak iyi bir fikirdir.
Kullanıcı1937198

1
@ user1937198 MAC, VDI'da ayarlanmamış VirtualBox / vmdk tarafından ayarlanır. VirtualBox içinde yeni bir VM'yi işaret edip tıklatıp VDI dosyasını eklerseniz yeni bir MAC alırsınız. (OVA'dan içe aktarma yoluyla, MAC'i sıfırlayıp sıfırlamayacağınız sorulacaktır.) Ama haklısınız. Dikkate alınması gereken başka bir şey ve ağ köprülemede çalıştırılıyorsa kesinlikle bir sorun.
Tonny

1
@SteveBarnes Size özellikle son olarak katılıyorum: Çalışma talimatı ne kadar iyi olursa olsun, insanlar onu takip ettiklerinde yanlış anlayacaktır. Adımları atlıyorlar (ya da yanlış sırada yapıyorlar), yürütmeleri gereken komutlarda yazım hataları yapıyorlar ya da daha iyi bildiklerini ve senaryodan saptıklarını düşünüyorlar. Otomatikleştirilebiliyorsa (yazım denetleyicim bunun gerçekten bir kelime olup olmadığından emin değilse) en iyi yaklaşım yine de otomatikleştirmektir: Hataya yer yoktur.
Tonny
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.