配布するUbuntu VMの作成


19

私はプログラミングコースのTAであり、Ubuntu 14.04 LTSに基づいて仮想マシンイメージを作成し、すべての必要なソフトウェア(C ++およびPython開発用)を事前にインストールして、生徒全員が同じ仮想システムを実行できるようにします。さまざまな異なるマシンやオペレーティングシステムですべてが動作するようにします。Virtual BoxはホストVMソフトウェアとして無料で利用できるクロスプラットフォームなので、Virtual Boxを使用する予定です。

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

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

3
GPLの条件に基づいてソフトウェアを配布しているため、ソースコードのオファーを含める必要があることに注意してください。
ChrisInEdmonton

@ChrisInEdmonton良い点。私は自分でコードを書いていないので、これは技術的に修正されているのですか、それとも単なる再配布ですか?学生にUbuntuまたはサードパーティのソースを尋ねる(そうしない)ように指示するだけで十分ですか、それとも法律的にソースを積極的に提供する義務がありますか?画像を公開せず、アクセスを制限した限られたユーザーに画像を提供することは重要ですか?
ジョナスグライテマン

私は弁護士ではないので、単にGPLを紹介します。ここで問題になることはほとんどありません。:)
ChrisInEdmonton

2
Ubuntuイメージ自体と一緒にそれを行う必要はないと言うでしょう:gnu.org/licenses/…ソースコードをダウンロードする方法の指示のどこかに書いてください。
マークン

1
これを行う前に、Canonicalの知的財産および再配布ポリシーを注意深く確認することをお勧めします。GPLソフトウェアはソースとともに無料で再配布できますが、一般的なLinuxディストリビューションでライセンスされているソフトウェアはほぼすべてのライセンスで合理的な条件で再配布できますが、少なくとも最近ではCanonicalのIPポリシーについて論争があります。
CVn

回答:


18

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

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

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

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

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

エレガントなユーザー作成-確かではありませんが、最初の起動時に実行され、スクリプトが自己破壊する前にユーザーに新しいアカウントを作成するように要求するスクリプトでしょうか?掘り下げて、5分の余裕があるときに戻ってきます。

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


2
おかげで、それはかなり助けになります。私の主な関心事は、基本を台無しにしないことです。ユーザー作成に時間をかけすぎないでください。それほど重要ではありません。とにかく尋ねていたので、それを扱うための組み込みのメカニズムがあるかどうかを尋ねるのは、よくある問題だと思います。
ジョナスグライテマン

1
絶対に-そして組み込みのソリューションがあることは完全に可能ですので、私はそれを見つけたいです。
Fazer87

13

質問に正確に答えて、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の画像にいくつかのプロビジョニングを行う方法を示したが。


3
Vagrantおよび/またはPackerは、このための方法です。
サンディチャップマン

9

完全に実行可能です。代替手段は、Vagrant、Puppet、Chef、またはVMをゼロから構築するのと同様のものですが、セットアップには多くの作業が必要です。

私のサイトのいずれかの開発チームは、新しい開発者を迅速に立ち上げて稼働させるために同じことを行います。
画像内の1つの事前設定アカウント(sudo-rights付き)と、個人用アカウントを作成するために実行する必要がある手順が記載された短い説明文書。

注:VM内でネットワーク/インターネットアクセスが必要になる可能性が高いです。これは、ホストにブリッジングまたはNAT化できます。どちらを選択するかにかかわらず、ホスト側の設定方法を生徒に指示する必要があります。VM内のNICをDHCPデバイスとしてセットアップするだけです。これは、ユーザーが後で静的IPアドレスを手動で構成する必要がある場合でも、ほとんどの構成の安全な開始点です。
VMに静的IPアドレスを設定することは、実際にトラブルを引き起こしています。同じLAN上で別のVMがオンラインになることで、すでに使用されていることになります...


3
ただし、「セットアップする作業の量」は、イメージを作成する頻度に依存します。次の学期に同じコースを再度受講していますか?来学期に別の言語で同様のコースをTAにしていますか?後継者の生活をもっと楽にしたいですか?C ++コンパイラには、以降のバージョンで修正されるバグがあります。新しいC ++標準が2017年に登場します。プログラマーは、手作業で2分かかったタスクを2秒で実行するプログラムを作成するのに2時間かかる人であることを忘れないでください。;
ヨルグWミットタグ

2
@JörgWMittagもちろん、ポイントがあります。しかし、Vagrantなどに慣れていない場合、学習曲線は非常に急で時間がかかる可能性があります。個人的には、今学期にVMソリューションを使用して迅速なソリューションを選択し、学期中に長期的なアプローチのために他のソリューションへの開発に時間を費やすことになるでしょう。
トニー

2
ネットワークアクセスに関しては、分散VMにはおそらく同じMACアドレスが割り当てられます。NATの問題ではないかもしれませんが、とにかくMACアドレスをリセットすることをお勧めします。
user1937198

1
@ user1937198 MACはVirtualBox / vmdkによって設定され、VDI自体では設定されません。VirtualBoxで新しいVMをポイントしてクリックし、VDIファイルを追加すると、新しいMACが取得されます。(OVAからインポートすることにより、MACをリセットするかどうかを尋ねられます。)しかし、あなたは正しいです。ネットワークがブリッジングで実行されている場合、それは考慮すべきことであり、確かに問題です。
トニー

1
@SteveBarnes最後のフレーズに特に同意します。作業指示がどれほど優れていても、人々はそれに従うと間違ってしまいます。手順をスキップする(または間違った順序で実行する)か、実行する必要があるコマンドにタイプミスをするか、スクリプトをよく知っていて逸脱していると考えます。自動化できる場合(スペルチェッカーが実際に単語であるかどうかはわかりません)、最善のアプローチは自動化することです:エラーの余地はありません。
トニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.