パッケージ管理に関して言えば、Windows は歴史的に Linux に比べてはるかに遅れをとっています。ですが、Chocolatey を使用することで、Windows ユーザーはちょっと「おいしい」ものを味わうことができるようになりました。
Linux の世界には、ソフトウェアを簡単にインストールできる2つの優れたパッケージ・マネージャ、yum と apt-get があります。たとえば、PostgreSQL(と、そのすべての依存パッケージ)をインストールするには、yum install postgresql.x86_64 を実行するだけでいいのです。速くて簡単です。
それに比べて、Windows でソフトウェアをインストールするためのデフォルトとしては、どういう方法があるでしょうか?Web サイトにアクセスし、インストーラをダウンロードし、exe ファイルをダブルクリックして、「次へ」を何回もクリックし、「終了」をクリックすることになります。Linux なら1つのコマンドですむものが、Windows では一連のちょっと煩わしい手作業が必要になります。
Windows ユーザーは、yum や apt-get に匹敵するようなパッケージ管理システムを待ち望んでいましたが、待ち時間は終わりです。以前 Puppet のソフトウェアエンジニアだった Rob Reynolds 氏が作成した Chocolatey は、まさに待たれていたものであり、急速な広がりを見せています。Chocolatey で Firefox をインストールしたい場合、コマンドプロンプトまたは PowerShell を開き、choco install firefox を実行すればいいのです。
それだけで、ソフトウェアがインストールされます。
コマンドラインを使って簡単に Windows のパッケージ管理ができる Chocolatey は、パブリック・リポジトリで数千のパッケージをホストしています(現在6,000を超えています)。Windows上にどんなソフトウェアをインストールしようとしても、おそらくそのパッケージが Chocolatey リポジトリに見つかる可能性は高いでしょう。コミュニティで管理されているので、パッケージは常に最新の状態に保たれているわけではありませんが、人気のあるパッケージのほとんどは最新バージョンです。
独自パッケージの作成
それでもリポジトリにないソフトウェアの場合に備えて、独自の Chocolatey パッケージを作ることはできるのでしょうか? Chocolatey for Business(C4B)を使えば非常に簡単で、多くのプロセスが自動化されているため、たいていは1つのコマンドしか必要としません。この例では、Google Chrome のインストーラを作業ディレクトリにダウンロードしてあります。これをベースにして Chocolatey パッケージを作成します。以下を実行します。
choco new googlechrome --file=.\googlechromestandaloneenterprise.msi --build-package
Chocolatey は自動的にパッケージを作成し、それにサイレント引数を追加します。この時点で、作成したばかりのパッケージをインストールするには、以下を実行します。
choco install googlechrome --source=".\googlechrome\" –y
Note I specified the新しいパッケージがその中に作成されるフォルダとして、パッケージの --source を指定したことに留意してください。デフォルトでは、ソースは Chocolateyのパブリック・リポジトリになります。-y 引数は、インストール時に提示されたプロンプトを確認することを意味します。
独自 Chocolatey リポジトリのホスト
Chocolatey も指摘していますが、企業で使用する場合、Chocolatey パッケージのリポジトリをホストするのが最善です。そうすることで、クライアントがインターネットに接続してパッケージをダウンロードしてインストールすることを回避でき、環境がより安全になります。独自のリポジトリを作成するには多くの方法があります。パッケージを配布する IIS Web サイトである Chocolatey Simple Server などの無料のものもあります。
企業向け Chocolatey のもう1つの使い方は、Chocolatey のパブリック・パッケージを自動的に社内リポジトリに取り込むことです。インターネットからインストーラをダウンロードし、それらをパッケージ(または別の内部ロケーション)に埋め込みます。
種明かし
Chocolatey パッケージは、正確には何なのでしょうか? ココア?いいえ、実際は NuGet(.nupkg)ファイルです。内容を確認するために解凍することができます。内部には、パッケージマネージャー名、ID、バージョン、依存関係などの情報を保持するXML仕様ファイル(NuSpec)があります。さらに、インストーラの種類(.exe や .msi など)に基づいてパッケージをインストールするために必要なコマンドを実行する PowerShell スクリプトである ChocolateyInstall.ps1 もあります。Chocolatey パッケージ内部にインストーラファイルを埋め込むことも、インターネットにアクセスしてインストーラファイルをダウンロードすることもできます。
DevOpsツールの統合
今日、インフラストラクチャの自動化は急速に進んでいますが、Chocolatey もこの流れに完全に適合するものです。Puppet、Ansible、Chef、その他多くのツールを使用する場合は、パッケージをサーバーに展開するのに Chocolatey を使用できます。下の例は、Chef でPHPをインストールするのに Chocolatey を使っています。
chocolatey_package 'php' do
action :install
source 'https://internalrepo/api/v2'
end
Chocolatey についてかいつまんで説明しましたので、試してみることをお勧めします。オープンソース版は無料で、多くの優れた機能があります。Chocolatey を使えば、別の Windows インストーラを手動でダウンロードする必要はありません。
Dan Franciscus
Dan Franciscus is a systems engineer and VMware Certified Professional (VCP) specializing in VMware, PowerShell, and other Microsoft-based technologies. You can reach Dan at his blog (http://www.winsysblog.com/) or Twitter at @dan_franciscus.