Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
35
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

使い捨てできるWindows環境(必要ソフト導入済み)の作り方

はじめに

「Vagrant up」だけで必要ソフトが準備された状態のWindows環境を作るのが目標。
とりあえず動くようになったので、自分用のメモとして記録。
※別環境でも試したので情報を追記。(2014/09/29)

試した環境

ホスト : Windows 8.1 Pro
ゲスト : Windows 7 Pro
Vagrant : 1.5.1
VirtualBox : 4.3.12

手順

  1. VagrantとVirtualBoxをインストール

  2. vagrant-windowsプラグインをインストール(Vagrant1.6では不要)

    コマンドプロンプトで下記を実行

    vagrant plugin install vagrant-windows
    
  3. 仮想マシン(Windows)の作成

    VirtualBox上の名前を「Win7Pro_64bit」に設定して、仮想マシンをインストール。
    仮想マシンの設定はWeb上の他の記事を参考に。

    ※設定を忘れないように下記にメモ。(下記は仮想マシン上で行う)

    • 管理者のユーザー名とパスワードは共にVagrant
    • WindowsUpdateの自動実行をOFF
    • リモートデスクトップを有効に
    • VBoxWindowsAdditionsを実行
    • 下記をコマンドプロンプトで実行(Vagrant1.6向けでは不要か?でも必要)(参考ページ)

      winrm quickconfig -q
      winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"}
      winrm set winrm/config @{MaxTimeoutms="1800000"}
      winrm set winrm/config/service @{AllowUnencrypted="true"}
      winrm set winrm/config/service/auth @{Basic="true"}
      sc config WinRM start= auto
      
  4. 仮想マシン上にchocolateyをインストール(下記は仮想マシン上で行う)

    1. PowerShellの実行ポリシーを変更

      Set-ExecutionPolicy RemoteSigned
      
    2. PowerShellでChocolateyをインストール

      iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
      
  5. 仮想マシンの電源をOFF

  6. Boxの作成

    1. デフォルト値を記述したVagrantfileを作成。
    2. Vagrantfileと同じ階層で下記コマンドを実行。package.boxができる。

      vagrant package --base "Win7Pro_64bit" --vagrantfile Vagrantfile
      
  7. Boxを追加

    vagrant box add Win7Pro_64bit package.box
    
  8. Vagrantfileを任意の作成

    任意の場所にフォルダを作成して下記内容のファイルを配置。

    Vagrantfile
    VAGRANTFILE_API_VERSION = "2"
    
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
        config.vm.guest = :windows
        config.vm.box = "Win7Pro_64bit"
        config.vm.provider :virtualbox do |vb|
            vb.gui = false
        end
    
        config.vm.provision "shell", path: "./setup.bat"
    end
    
  9. プロビジョン用のバッチファイルを作成

    下記内容のファイルをVagrantfileと同じ場所に配置。

    setup.bat
    cinst c:\vagrant\packages.config
    
  10. ゲストOSへインストールするソフトをファイルに記述

    インストール対象を記述したファイルをVagrantfileと同じ場所に配置。

    packages.config
    <?xml version="1.0" encoding="utf-8"?>
    <packages>
        <package id="MicrosoftSecurityEssentials" />
        <package id="GoogleChrome" />
    </packages>
    
  11. Vagrantで仮想マシンを起動

    Vagrantfileと同じ場所で下記コマンドを入力

    vagrant up
    
  12. リモートデスクトップでlocalhost:13389に接続。

メモ

  • ホスト上のVagrantfile配置フォルダは、ゲスト上のC:\Vagrantと同期(?)してる。
  • プロビジョニング用のバッチから実行するChocolateyで、なぜか停止する場合がある模様。
    • 確認できたのはFreeMindのインストール。
    • パッケージによってはダイアログの「はい」ボタンを押さないとインストールが先に進まない。(これが原因か?)
    • 止まってしまったらCtrl+Cで強制終了したら先に進んだ。
    • 手順9でcinstを呼び出すように記述しないで、手順12のあとに手動実行した方が無難かも。

まとめ

vagrantでwindowsの仮想マシンを作って、プロビジョニングでChocolateyを実行してるだけ。
Chocolateyのインストールもプロビジョニングで行うのが今後の課題。
ChefとかPowerShell DSCも試してみたいところ。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
35
Help us understand the problem. What are the problem?