仮想マシンイメージを継続的な統合アーティファクトとして作成しますか?
-
05-07-2019 - |
質問
現在、新しいサーバーに展開するのが少し複雑なサーバー側の製品に取り組んでいます。これは、VMでのテストの理想的な候補になります。私たちはすでにCIシステムとしてHudsonを使用していますが、ビルドアーティファクトとして最新かつ最高のソフトウェアを備えた仮想マシンイメージを展開できることを本当に望んでいます。
では、これを正確に行うにはどうすればよいのでしょうか?この目的にはどのVMソフトウェアが推奨されますか?これを達成するには、どれくらいのスクリプトを作成する必要がありますか?ここでWindows 2003 ServerをOSとして使用する場合、特に問題はありますか?
解決
ここで受け入れられた回答を拒否することはできませんが、さらなる調査(回答のおかげです!)に基づいて、私はより良い解決策を見つけ、見つけたものを要約したいと思いました。
まず、VirtualBoxとVMWare Serverはどちらも優れた製品であり、どちらも無料なので、それぞれ評価する価値があります。 VMWare Serverはより確立された製品であり、必要に応じてサポートを受けることができるため、VMWare Serverを使用することにしました。 VMWare Playerからのオーバーヘッドが高すぎないと想定して、特別なサーバーインストールではなくVMとしてクライアントにソフトウェアを配布することも検討しているため、これは特に重要です。また、直接使用できるVIXと呼ばれる VMWareスクリプトインターフェイスがあります。 SSHやSFTPをインストールする必要なくVMにファイルをインストールできます。これは大きな利点です。
だから私たちのソリューションは基本的に次のとおりです...最初に「バニラ」を作成します; OSを備えたVMイメージ、それ以外は何もせず、リポジトリにチェックインします。次に、インストーラーとして機能するスクリプトを作成し、Hudsonによって作成されたアーティファクトをVMに配置します。このスクリプトには、ファイルを直接、SFTP経由で、およびVIX経由でコピーするためのインターフェースが必要です。これにより、ターゲットマシンに直接、または選択したVMを介してソフトウェアを引き続き配布できます。この結果のイメージは、CIサーバーのアーティファクトとして圧縮および配布されます。
他のヒント
VMソフトウェアに関係なく(VirtualBoxもお勧めできます)次のシナリオを見ていると思います:
- ビルドが完了しました
- CIは仮想マシンを起動します(または常に実行されています)
- CIはscp / sftpを使用して、ネットワーク経由でVMにビルドをアップロードします
- CIは、ssh(VMで実行されているターゲットOSで利用可能な場合)または他のリモートコマンド実行機能を使用して、VM環境でインストールをトリガーします
VMWare Serverは無料で非常に安定した製品です。また、VMスライスのスナップショットを作成し、必要に応じて仮想マシンの以前のバージョンにロールバックする機能も提供します。 Win 2003で正常に動作します。
ビルド用の新しいVMスライスのプロビジョニングに関しては、VMWareファイルを含むフォルダーをコピーして貼り付け、新しいVMのSIDとIPを変更するだけで、新しいマシンを作成できます。 VMスライスのサイズに応じて15分かかります。スクリプトは不要です。
VirtualBoxを使用する場合、サーバー上にあるため、ヘッドレスで実行することを検討します。通常、VirtualBoxはデスクトップアプリとして実行されますが、コマンドラインからVMを起動し、RDP経由で仮想マシンにアクセスすることができます。
VBoxManage startvm "Windows 2003 Server" -type vrdp
このシナリオでは、Jenkins + Vagrant + Chefを使用しています。
したがって、次のプロセスを実行できます。
-
vagrantプロビジョニングスクリプト(ChefまたはPuppet)を使用してVM環境のバージョンを制御します
-
Jenkins / Hudsonを使用してシステムを構築します
-
Vagrantスクリプトを実行して、CI出力から最新の安定版リリースを取得します
-
VMの状態を保存して、将来再利用します。
リファレンス:
vagrantup.com
VirtualBox をお勧めします。これは無料で、明確に定義されたプログラミングインターフェイスを備えていますが、自動ビルドの状況では個人的に使用していません。
現在、VMWareを選択することは悪い選択ではありません。
ただし、 VMWareがVMWareサーバーをサポートするように、SUNはVirtualBOXをサポートします。
VMWare Studioを使用してこのタスクを実行することもできますが、これも無料です。 基本的なワークフローは次のとおりです。 1.仮想マシンを説明するXMLファイルを作成します 2. studioを使用してシェルを作成します。 3. VMWareサーバーを使用して仮想マシンをプロビジョニングします。