パッケージ管理ソフトChocolateyを使ってみる
こんにちは、株式会社SHIFT、自動化エンジニアの水谷です。
最近Linux系OSを使って仕事をする機会が増えてきたのですが、そこで感じたことの1つは、パッケージ管理ソフトは便利だな、ということです。
Linux系OSでのソフトウェアのインストールは、Windowsのそれとは異なり、apt-getやyumのようなコマンドラインベースのパッケージ管理ソフトを使うことが一般的です。これらのソフトを使えば、コマンド1つでソフトウェアが安全にインストールできるし、アップデートやアンインストールもできて便利で、しかもインストールの自動化もしやすいのです(MacではHomebrewがこれに相当しますね)。このようなパッケージ管理ソフトがWindows用にはないのかな? と、いうと実はあります。今回はその1つであるChocolateyを紹介してみたいと思います。
Chocolateyのインストール
まずはChocolateyをインストールするのですが、その方法はちょっと変わっています。公式サイトの以下のページに書いてあるのですが、ちょっと長いコマンドを管理者権限のPowershellプロンプトで実行するのです。
https://chocolatey.org/install
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
コマンドでインストールする仕様になっている理由は、Chocolateyのインストール自体も自動化しやすくするためかと思いますが、いずれにせよこのコマンドをコピペして実行すれば数十秒でインストールが終わります。
インストールが終わりましたら、一度Powershellプロンプトを閉じて、もう一度Powershellプロンプトを開いてください。ここで「choco」と入力してバージョン番号が表示されたらインストール成功です。
PS C:\WINDOWS\system32> choco
Chocolatey v0.10.15
Please run 'choco -?' or 'choco <command> -?' for help menu.
Chocolateyを使ってみる
さて、さっそく使ってみましょう。例としてFirefoxをインストールしてみます。アプリのインストールコマンドは「choco install <アプリ名>」なので、Firefoxをインストールする場合は、「choco install Firefox」となります。
途中でスクリプトを実行するかどうかの質問がありますので、「Y」を押してエンターキーを押します。これで、Firefoxがダウンロードされて、C:¥Program Files\Mozilla FirefoxにFirefoxにインストールされます。簡単ですね。
なお、「choco install Firefox -y」のように、最後に「-y」と書いておくと、インストール中の質問に自動的にYesで答えてくれるので、より簡単にインストールができ、バッチファイル等でも自動インストールができるようになります。
また、インストール済みのアプリをアップデート(最新版をインストール)するのも簡単です。例えばFirefoxを最新版にするには、以下のようなコマンドを実行します。
choco upgrade firefox
また、(Chocolateyでインストールした)すべてのアプリを一気にアップデートするには、以下のコマンドを実行します。
choco upgrade all
アプリのアンインストールも同様に、簡単にできます。Firefoxをアンインストールするには以下のコマンドを実行します。
choco uninstall firefox
GUI版のChocolatey
Chocolateyはコマンドラインツールですが、GUIで使うこともできます。これは「Chocolatey GUI」という名前のアプリで、そのインストールもChocolateyで行います。
choco install chocolateygui -y
インストール後、「Cholocatey GUI」を起動すると次のようなウィンドウが開きます。
インストールしたいアプリを「Search」ボックスで検索し、見つかったアプリをダブルクリックすると、そのアプリの詳細が表示され、右下にある「Install」ボタンを押すとインストールが始まります。
AnsibleからChocolateyを使ってみる
ChocolateyはAnsibleとの相性も良いです。Ansibleには「win_chocolatey」というChocolateyを使って対象マシンにアプリをインストール(あるいはアップグレードやアンインストール)を行うモジュールが標準で用意されています。
例えば下のようなPlaybookで、インベントリ(Hosts)ファイルに書いたすべてのマシンにGitのインストールができます。
---
- hosts: all
tasks:
- name: Install Git using Chocolatey
win_chocolatey:
name: git
state: present
実行すると、以下のように表示されました。WARNINGの行にあるように、対象マシンにはChocolateyがインストールされていなかったので、自動的にChocolateyがインストールされました。便利ですね。
また、複数のアプリをインストールするには、以下のようなPlaybookが使えます。with_items:にインストールしたいアプリを列挙しておけば、これをすべてインストールしてくれます。
---
- hosts: all
tasks:
- name: Install App
win_chocolatey: name={{ item }}
with_items:
- firefox
- googlechrome
- notepadplusplus
また、AWXを使って、以下のPlaybookを1週間に1度定期実行するようにしておけば、すべての(Chocolateyでインストールした)アプリをアップデートしてくれたりします。
---
- hosts: all
tasks:
- name: Upgrade installed packages
win_chocolatey:
name: all
state: latest
このように便利なChocolateyですが、すべてのアプリがこれでインストールできるわけではなく、Chocolateyに登録されているアプリのみですし、有償アプリは(ほとんど?)含まれていません。とはいえ、現在登録されているアプリ(正確にはPackage)は7688もあるので(2020年7月現在)、かなり多いと言えるかと思います。
このようにとても便利はChocolateyですが、これに対してMicrosoftは、Windows用のパッケージ管理ソフトとして「winget」を開発しています(2020年5月にプレビュー版をリリース済み)。将来的にはこっちが本命になる可能性もありますので、そちらの方も注目していきたいと思います。
――――――――――――――――――――――――――――――――――
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/