Vagrant Provision を Chocolatey で快適にした話
以前に Vagrant up するときに Visual Studio を自動インストールする方法を書きましたが、ほかのツールもいろいろとインストールしたいですよね。
Windows のアプリケーションは基本的にサイレント インストールする設計になっていないアプリも多いので、いろいろと面倒なのですが、apt-get install
と同じぐらいの手軽さで Windows アプリもインストールさせてよ!と思う人は多いようで、ちゃんとプロジェクトがあります。名前は、"Chocolatey" です。
たぶん .NET 開発者なら知らない人はいないであろう NuGet と呼ばれる技術をバックエンドにつかったもので、choco install
でアプリケーションを手軽にインストールできます。
実際のところ、ホスト マシンですら Chocolatey で構築してしまおうという人も多いのですが、サイレント インストールなので細かい設定ができなかったりして、私はあまりホストのセットアップに使うのは好きではありません。 一方、1 日 1 回以上作成する可能性すらある検証マシンの場合、とにかく入ってくれればいいというシチュエーションは少なくなく、Chocolatey との相性は抜群と言えます。
Chocolatey をインストールする
Chocolatey を使うためには、まずは Chocolatey をインストールしなければなりません。 ワンライナーで手軽にインストールできるようにしてくれているので、ありがたくその方法を使います。
インストール方法は以下に記載があります。
https://chocolatey.org/install
Vagrant において Provisioner の 1 つである shell
は Windows においては PowerShell を呼び出すよ、と書かれているので Install with Powershell.exe
のほうを使いましょう。
具体的には以下のように Vagrantfile を記載します (必要に応じて設定などを追加してください)。
# -*- mode: ruby -*- # vi: set ft=ruby : # Install Chocolatey inline script $script = <<SCRIPT Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) SCRIPT Vagrant.configure("2") do |config| config.vm.box = "<your box>" config.vm.provision "shell", inline: $script end
なお、config.vm.provison
は複数書けます。複数書いた場合は上から順番に実行されるようです。
Chocolatey でアプリを自動インストールする
Chocolatey でアプリをインストールするには、上記の SCRIPT に追記してもいいですし、次のように PowerShell を呼び出して手動でインストールしてもいいです。 同じ環境を何度も作る必要があるなら SCRIPT に追記したほうがいいですし、一時的にアプリをインストールしたいなら Powershell 経由でもいいですね。
たとえば、Git をインストールする場合は、以下のように実行すれば勝手にインストールしてくれます。
choco install git -y
ポイントは、最後の -y
でこれをつけないと "インストールしますか?(Y/N)" な対話型な状態になってしまうので、自動的に Y (Yes) になるよう -y をつけます。
特に Vagrantfile に記載した場合は、インストールに失敗してしまうのでご注意を。
それでは、よい Chocolatey 生活を。Enjoy!