Windowsのスタンプ:Vagrantを使用したHyper-VでのWindows仮想マシンの自動展開(パート3)

以前の( 1、2 )出版物では、ハイパーバイザーとその後の自動展開のためのボックスを準備する方法について説明しました。 この三部作の最後の部分では、準備されたボックスの展開とプロビジョニングのトピックを明らかにしたいと思います。 また、ここで行われたことを要約し、最終的にすべての関連リンクを見つけることができます。



箱がVagrantに追加された後、車(または複数)を持ち上げて箱からすばやく「復活」させることができます。 それに関するすべてのメタデータは、ハードディスクイメージの隣の1つのディレクトリに保存されます。 この簡単な手順を見ていきましょう。



シェルのプロビジョニングの段階で何が起こりますか? ロード後にシステムが完全に上昇した場合(unattend.xmlファイルで回答するのを忘れた質問に固執するのではなく)、VagrantはVMに接続し、システムドライブ(通常はC:\ Tmp)に一時フォルダーを作成し、ドロップしますそこでスクリプトを作成し、私たちが指定したユーザーの下でローカルに実行します。 スクリプトファイルで多くの便利なことを行うことができます。そこで書いたものを表示したいだけです(リストはGistで入手できます)。

provision.ps1
 #  Chocolatey  .       ,      ,        .  ,         ,         iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')) #  Boxstarter    cinst boxstarter $env:Path+=";"+$env:AppData+"\Boxstarter" $env:PSModulePath+=";"+$env:APPDATA+"\Boxstarter" Import-Module Boxstarter.Chocolatey $Boxstarter.AutoLogin=$true #     Set-WindowsExplorerOptions -EnableShowHiddenFilesFoldersDrives -EnableShowFileExtensions #    RDP Enable-RemoteDesktop #   Far  7-zip choco install far,7zip -y #    Classic Shell,      Start choco install classic-shell -installArgs ADDLOCAL=ClassicStartMenu -y #     del C:\Users\Administrator\Desktop\*.lnk #     Install-WindowsUpdate -AcceptEula -SuppressReboots Restart-Computer
      
      



原則として、Install-WindowsUpdateを含む一部のコマンドがBoxstarterモジュールであることを除いて、特別なことは何もありません(それが私たちが気に入っている理由です)。



理想的には、その後、スクリプトをフォルダに入れて、切望されているvagrant upコマンドを実行できます。 ただし、この後、いくつかの問題が発生する可能性があります。 私はすぐにそれらについて警告したいと思います:



以上です! これで、任意の量の仮想マシンにスタンプを付けることができます(もちろん、ハイパーバイザーのリソースで十分です)。 インスタンスの名前を変更しない場合(ボックスから取得)、「_ 1」がそれぞれ名前に追加され、別のインスタンスの末尾には「_2」ではなく「_1_1」が追加されます。import_vm.ps1ファイルはそのように書き込まれます。



何かがうまくいかず、すべてが順調に進まなかった場合は、いつでも他の人のボクシングと協力することができます。 残念ながら、私は私のものを与えることはできません(ライセンスキーと証明書は既にそこに詰まっています)。しかし、記事で既に述べたマットロックボックスを使用することができます。 このボックスはインターネットから公開されているため、1つのコマンドで追加できます(デフォルトでは、Vagrantはクラウド内のボックスを検索します)。
mwrock / Windows2012R2 --provider hypervを浪費する


数台の車を上げる


最後に、いくつかのボタンを押してVMを起動しました。 環境全体をすぐに確立したい場合はどうしますか? もちろん、このためには少しスクリプトを作成する必要がありますが、すぐにPowershellを使用する必要はありません。 幸い、構成ファイルはRubyで記述されているため、1つのコマンドで1つのVagrantfileから複数のマシンを一度に持ち上げることができ、1つのファイルで複数の異なるボックスを指定することもできます。 手順については、 ドキュメントで詳しく説明しています 。 適切な言語スキルを使用すると、実際の奇跡を行うことができます:たとえば、自動的にJSONファイルを取得し、ネットワーク設定とホスト名をすべてのマシンに割り当てます。また、同じファイル内のロールに応じてそれらにChefレシピをローリングします( このように )。 しかし、これはすでに広まっているこの記事の範囲をはるかに超えています。



まとめ


さて、結果として何を得たのでしょうか? ネイティブ環境にWindowsマシンを迅速に展開し、完成した仮想マシンを調達し、要件に従って構成するためのシステム。

これは特に当社にどのように役立ちましたか? これにより、新しいインフラストラクチャの構築にかかる時間を大幅に節約できます。以前は、ISOファイルからシステムをインストールし、すべてのソフトウェアをセットアップして更新するのに半日かかりましたが、わずか数分です。 System Centerテンプレートからマシンのクローンを作成する場合でも、仮想ハードディスクファイルの継承などの不利な点は言うまでもなく、通常は時間がかかります。 また、ローカルシステム(Windows 8.1が搭載されたワークステーションでも)でテスト環境を迅速に作成できた開発者やテスターに​​とっても優れたツールです。 これを行うために、私は簡単な短い指示を書いたので、彼らは詳細を掘り下げて作業プロセスから気を散らす必要はありません。

次は? 現在、既存の環境の分析と文書化に積極的に取り組んでおり、Chefレシピの形式でそれらを説明しています。 当社のサービスは、パッケージとしてインストールおよび展開される予定です。 これにより、多くのプロセスが自動化され、人的要因に関連する多くのルーチンやエラーが取り除かれます。 一般的に、DevOps博士が処方したもの。 また、多くの異なるイメージをすばやく準備する必要がある場合は、Packerをマスターする計画で。 Hyper-VとAzureのサポートが最近登場しましたが、非常に有望に見えます。 計画には、VMとホスト間でフォルダーを迅速に同期する作業も含まれています。残念ながら、通常の共有は、多数のファイルとアクティブな操作(ビルドなど)に対してかなりゆっくりと動作します。

この記事が役に立ち、トピック全体が興味深い場合は、この分野でのその後の勝利と失敗について、喜んで別の出版物を作成します。



参照資料





All Articles