PCセットアップを自動化しよう!Boxstarter
2019-12-20
azblob://2022/11/11/eyecatch/2019-12-20-pcsetup-automation-boxstarter-000.jpg

PCが壊れたり、動作が遅くなると引越しをしなくてはなりません。今年はなぜかPCの調子が悪く何度も修理に出した年でした。そうなると設定するのが大変なのと、何かしらインストールを忘れて使うときに困るので、自動的にインストール、設定できるように環境を整えました。今日はそのことを書こうと思います。

私の環境は、Windows10とWindows Subsystem for Linux(ubuntu)のどちらかで業務をしています。業務データは、PC上には配置してなくOneDrive等で管理しています。ここでは、Windows10とWSLの設定をどのようにしているかをご紹介します。

Windows10の自動設定

Windowsの設定自動化で調べるとよくでてくる、ChocolateyとBoxstarterを利用して自動化しています。

Chocolatey
Windowsのパッケージ管理サービスです。
Windowsでインストールしたくなるソフトウェアは、ほとんどパッケージ化されていいます。
chocoというコマンドでソフトウェアをインストールします。また、Windowsの設定も行えるようになっているのも便利です。タスクバーやアイコンの設定も自動化できます。

Boxstarter
引用:Repeatable, reboot resilient windows environment installations made easy using Chocolatey packages.
Chocolateyでソフトをインストールするときに発生する、再起動や再実行を管理してくれるソフトウェアです。

基本的にはBoxstarterのスクリプトに、Chocolateyのコマンドを書いていくことになります。
スクリプトは、githubのGistに配置しておけばいいので無くすこともありません。

以下のようにコマンドを実行したらPCのソフトウェアのインストールや基本設定は完了です。
因みに、顔認証の設定、Windows10のモードの変更、OneDriveとの接続は別途やっています。

# Install chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object  System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# Install Boxstarter
choco install -y Boxstarter
# Setup
BOXSTARTERSHELL
Install-BoxstarterPackage -PackageName  https://gist.githubusercontent.com/sakuramateo/4f5874352545eaffffbb070db472ffea/raw/3d5a05f752d12a7702afe048112cdfadbd8b6144/boxstarter.txt

やっているのは以下の通りです。
1. Cocolateyのインストール
2. CocolateyでBoxstarterのインストール
3. Boxstarterシェルで、Gistに配置しているインストールや設定一覧を事前に記載したパッケージを実行

実際の設定やインストールしているソフトウェアは、以下のリンクを確認ください。

https://gist.githubusercontent.com/sakuramateo/4f5874352545eaffffbb070db472ffea/raw/952c502728c27db7925f20f2f194217862ce39cf/boxstarter.txt

前に作ったスクリプトなので、Linux側で操作しているのでいらないものも入ってますが。。

WSL(ubuntu)の自動設定

Linux側は単純にシェルを書いてます。
以下の通り、実行しています。

sh -c "$(curl -fsSL https://gist.githubusercontent.com/sakuramateo/9269efd483352f070293addeefe550b7/raw/1ca7bd7ab6bbf5ae14081026a39ab549e77060fc/setup_applications.sh)"
sh -c "$(curl -fsSL https://gist.githubusercontent.com/sakuramateo/9269efd483352f070293addeefe550b7/raw/bc9ab063d722bb4d294df5372220c721e2f25b3e/setup_brew.sh)"

Gistにシェルは事前に配置しておいて、ダウンロードし実行するイメージです。
その後に、dotfilesをホームディレクトリに配置すれば完了です。

homebrewもインストールしているので、brew でインストールするのが速いかもしれませんね。
この時は、homebrewはとりあえずインストールしておこうくらいでした。
インストールしている内容は、以下のリンクをご確認ください。

https://gist.githubusercontent.com/sakuramateo/9269efd483352f070293addeefe550b7/raw/1e442a7b63be168575222bb61fefccf842f2b009/setup_applications.sh

自動化していいなと思ったこと

自動化している人が、どのようなツールで仕事をしているのか分かる

自動化している人は便利なものが好きな人が多いので、スクリプトを読むと知らなかった便利なツールが発見できます。大抵公開されている。これらツールをどいうものなのか調べて、取り入れていくことで仕事の仕方が改善できます。業務に慣れてくるといつものツールを利用してしまうので、新しいツールと出会う機会になるのはいいなと思いました。

PCが壊れても大丈夫という安心感が持てる

何度かディスクが故障して絶望したことがあります。一応、バックアップから戻せはしましたが。。
今はコードはgithubにあるし、ファイルはOneDriveにあるし、ソフトは実行すれば勝手にインストールされるので、手元のバックアップをあまり気にしなくなりました。各サービスで、バックアップしてくれているので自分で管理しているより安心です。

最悪PCが壊れても、クラウド上のインスタンスで業務が継続できる

PC壊れて必要なスペックの代替機がない場合も、クラウドで適当なサイズのインスタンスを作れば、業務できるのもいいです。ほとんど止まることなく進めるので楽です。いっそクラウド上で全部やればという話もあると思いますが、そこまではできてないです。

PCの調子が悪くなったら、再インストールしてすっきりできる

PCは使い始めて期間が経つと、どんどん動作が不安定になってきます。そんな時に、気軽にPCを再インストールしてリフレッシュできるので助かります。

まとめ

今回はPCのセットアップの自動化のご紹介をしてきました。
他にもScoopで自動化している人やコンテナ化もできるかなと思います。

自分の環境を丁寧に扱いきれいに保つことでスムーズに仕事ができストレスを減らせますね。
仕事道具は大切です。年末一年間使ってきたPCをきれいにして気持ちの良い新年を迎えましょう!