vagrant は便利なんだけど、box を作るのが手作業で面倒だった。
特に ArchLinux の場合、古い iso から作った box だと今 pacman -Syu
してもなかなか依存関係をうまく満たせず、最新の状態にするのが困難だったりするので、ある程度定期的に box を作り直したい。
packer を使うと box の作成を自動化できるらしいので、ArchLinux 用のものを書いてみた。
https://github.com/eagletmt/misc/tree/c86d04796e526a196ed5c3fc62dcc2b697d18da3/packer/arch64
インストール用の iso の場所や /etc/pacman.d/mirrorlist に jaist のミラーを指定しているので日本用になっている。
kickstart や preseed のようなしくみは無いので、シェルスクリプトでがんばる。
やってることは手動で ArchLinux をインストールするときとだいたい同じで、
- パーティションの作成
- pacstrap
- arch-chroot 内で
- hostname やロケールの設定
- vagrant 用のユーザの作成
- dhcpcd の設定
- network に関する設定をすると PredictableNetworkInterfaceNames が無効化されるので、最初から無効化しておくようにする。
- https://github.com/mitchellh/vagrant/blob/v1.3.1/plugins/guests/arch/cap/configure_networks.rb
- sshd を起動時に立ち上げるように設定
- grub-install
- packer の provision で vagrant 用の設定
- ssh の鍵の設置
- VirtualBox Guest Additions のインストール
という流れになっている。