web-dev-qa-db-ja.com

Ubuntuを作成するVM配布する

私はプログラミングコースのTAであり、Ubuntu 14.04 LTSに基づいて仮想マシンイメージを作成し、必要なすべてのソフトウェア(C++およびPython開発用)がプリインストールされている)を使用して、学生全員が同じ仮想システムが実行されており、さまざまな異なるマシンやオペレーティングシステムですべてを機能させるのに苦労することはありません。VirtualBoxをホストとして使用するつもりですVMソフトウェアは無料で利用できるためクロスプラットフォーム。

単純に、私はUbuntu 14.04 LTSディスクイメージを使用し、それを仮想ボックスで実行し、仮想ハードディスク(VDI)にインストールし、事前定義されたパスワードで「学生」アカウントを設定し、必要なすべてのソフトウェアをインストールし、シャットダウンします。仮想マシンを停止し、VDIファイルを配布します。各学生にVDIをVirtual Boxにインポートして実行し、個人アカウントをセットアップするよう依頼します(またはデフォルトの学生アカウントを使用します)。

  • 上記の手順は実行可能ですか?
  • 注意すべき落とし穴は何ですか?これはかなり簡単にできる必要があります。私たちは80人以上の学生を想定しており、TAは4つしかないため、個別のサポートは提供できません。
  • 動的に割り当てられたVDIタイプの仮想HDDを使用することには欠点がありますか?
  • Virtual BoxのGuest Additionsをすぐにインストールしても問題ありませんか、それともホスト固有の機能はありますか?
  • ユーザーアカウントの作成を処理するよりエレガントな方法はありますか?理想的には、Ubuntuがアカウント作成ウィザードを使用して、イメージを初めて起動するときにパスワードを設定(およびsudoersファイルに追加)するようにします。ただし、これは優先事項ではありません。私はデフォルトのアカウントを持っているのが良いと思います。
19

この質問はある程度の意見に基づいていますが、

はい、この手順は実行可能です-あなたが探しているものを達成するだろうと私は信じています。これは、他のLinuxディストリビューションで過去に私が行ったことです。

実際の唯一の落とし穴は、ディスクの間隔にあります...生徒のマシンに仮想ディスクのサイズを処理するのに十分なディスク領域があることを確認してください。また、テンプレート/参照ディスクを使用して、生徒がマシンを殺したときにディスクをすばやく再作成できるように、少なくとも1台のマシンでコピーをオフラインにしておいてください。

ダイナミックディスクの欠点は、VMがデータ/更新に伴って増大するにつれて、ホストOSがますます多くのディスク領域を割り当て続ける必要があることです。これには、時々頭痛の種となるパフォーマンスオーバーヘッドがあります。 -特に低電力で実行している場合VM(ホストマシンの電力からディスクを拡張するために使用される電力を差し引いたものは、VMが少し遅れる傾向があります)。学生がVMをいじったら、ラボのすべてのマシンが100GB以上になるとは限りません)

ゲストアドオンはマシン固有ではありません。これらは、ほとんどドライバーセットです。 VMを新しいホストにインポートすると、VMドライバがハードウェアを検出して調整し、新しいホストで動作するようにします。

エレガントなユーザー作成-確かに、最初の起動時に実行され、スクリプトが自動的に破棄される前にユーザーに新しいアカウントを作成するように求めるスクリプトですか? 5分空けたら、掘り返してご連絡します。

これが少なくとも部分的に役立つことを願っています。

18
Fazer87

VMを調整して配信可能なVirtualBox VMを渡す必要がある場合は、質問に正確に答えて、 Packer を使用してVMと必要な依存関係。これは、この目的のためだけに構築されており、 ISOからのイメージ を起動し、そのイメージに対して必要なプロビジョニングを実行して、成果物のVirtualBox VMイメージを作成できます。これは、成果物を複製したり、何かを追加したりする場合に備えて、成果物に対して何が行われたかを正確に文書化するため、あなたにとっても良いことです。また、プロジェクトをソース管理システムにチェックインして、変更を加えることもできます。 ここに例があります 開始するために行われていることの==。

ただし、すぐに実行したい場合は、 Vagrant を使用して、 標準のUbuntuイメージ で必要なプロビジョニングを実行するVagrantfileを生徒に配布することをお勧めします。これにはいくつかの利点があります。

  • VagrantはそのままVirtualBoxで動作し、VMとホストマシン間でファイルを簡単にコピーできるように学生のハードパーツをすべて処理し、インターネットを許可するようにネットワークを構成します。それらのボックスへのアクセスなど。これにより、VirtualBoxセットアップの問題をドキュメント化/デバッグする時間も節約できます。
  • Vagrantfileは、提供可能なVMよりもはるかに小さくなります。コースの途中でVMに変更または追加したい場合は、新しいVMを再構築する必要はありません。更新されたVagrantfileを提供してください。
  • 修復する能力を超えて何かを台無しにした場合、VMを簡単に破壊/再展開できます
  • Vagrantfileは、生徒がVMに対して何を行ったかを正確に示します。これにより、生徒が十分に理解できるようになったら、内部で何が起こっているかを確認でき、そこから学ぶこともできます。

これが Vagrantfileの例 であり、Ubuntu 14.04イメージでプロビジョニングを行う方法を示しています。

13
Joel B

完全に実現可能です。代わりの方法は、Vagrant、Puppet、Chef、またはVMをゼロから構築するための同様のものですが、これはセットアップするのに多くの作業です。

私のサイトの1つにある開発チームも同じようにして、新しい開発者をすばやく稼働させています。
画像内の1つの事前設定済みアカウント(Sudo権限付き)、および個人用アカウントを作成するために実行する必要のある手順が記載された短い説明文書。

注意:ほとんどの場合、VM内でネットワーク/インターネットアクセスが必要です。これは、ホストにブリッジするか、NATすることができます。どちらを選択するかにかかわらず、ホスト側の構成方法を生徒に指示する必要があります。 NIC内部にVM DHCPデバイスとして設定します。これは、ユーザーが後で静的IPを手動で構成する必要がある場合でも、ほとんどの構成にとって安全な出発点です。住所。
VMに静的IPアドレスを入力すると、本当に問題が発生します。他のVM同じLAN上...

9
Tonny