前提
VirtualBoxをproviderとして、VMにクリーンインストール済みのOpenBSDをVagrant Box化する。
環境
| 区分 | バージョン | 
|---|---|
| ホストOS | macOS 10.13 High Sierra | 
| Vagrant | 2.2.3 | 
| Oracle VirtualBox | 6.0.0 | 
| ゲストOS | OpenBSD 6.4 | 
※ おそらく、ホストOS は何でも良さそう。Vagrant も 1.9系でも動くかと思います。
手順
https://github.com/SierraX369/packer-templates を参考にしました。
VM 上での作業
以下の操作は VM 上で行う(別にSSH経由でなくともよい)
1. doas設定
まずは、OpenBSDの sudo の代わりのコマンドである doas の設定を行う。
echo 'permit vagrant' >>/etc/doas.conf
echo 'permit nopass setenv { PKG_PATH ENV PS1 SSH_AUTH_SOCK } :wheel' >>/etc/doas.conf
2. curlインストール
参考にしている Packer テンプレートでは、ftp コマンドを使っているようだが、今回は curl を使用するため、 pkg_add にてインストールする。
doas pkg_add curl
3. Vagrant公開鍵設定
Vagrant の公開鍵をダウンロードしてして配置する
curl --insecure --location "https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub" -O $HOME_DIR/.ssh/authorized_keys;
chown -R vagrant ~/.ssh;
chmod -R go-rwsx ~/.ssh;
4. syspatch設定
セキュリティーアップデートをバイナリーアップデートで適用するための syspatch コマンドの設定をする。
ソースコードからアップデート適用するような場合は設定不要だと思います。
※ URLの末尾が OpenBSD で終ること。 / で終ると動きません
su -
echo 'https://fastly.cdn.openbsd.org/pub/OpenBSD' >> /etc/installurl
exit
5. Box サイズを小さくする
su -
dd if=/dev/zero of=/EMPTY bs=1M || echo "dd exit code $? is suppressed";
rm -f /EMPTY;
sync;
exit
ホスト側で作業
Box 化
vagrant package コマンドで Box として固める。
Vagrantfileの変更
Vagrantfileに 以下の設定を追加する
doas コマンド設定
sudo コマンドの代わりに doas コマンドを使用する
config.ssh.sudo_command = "doas env %c"
シェルコマンド設定
bash ではなく ksh なので、以下のように設定する(多分、kshを指定しても良い)
config.ssh.shell = "sh"
OpenBSD がゲストであることを記載
要らないかも知れないが、ゲストOSが OpenBSD であることを記載する
config.vm.guest = :openbsd
共有フォルダー設定
VirtualBox guest addition が対応していないため、 vboxfs による共有フォルダー機能は使えない。
そのため、NFS設定にて共有フォルダー設定する。
共有フォルダーを使用しないのであれば、共有フォルダーを無効にするように設定する。
config.vm.synced_folder ".", "/vagrant", type: "nfs"
これで、OpenBSD をVagrant Boxとして使えます。
何かあって消すこともいずれはあるかと思いますが、以下に作ったものをアップロードしてあります。
ちなみに、 VirtualBoxの UEFI を有効にして、パーティションテーブルも GPT にしています。
https://app.vagrantup.com/poad/boxes/openbsd