vagrant
VirtualBox
OpenBSD

OpenBSD 6.2 の Vagrant Box を作ってみた

More than 1 year has passed since last update.

前提

VirtualBoxをproviderとして、VMにクリーンインストール済みのOpenBSDをVagrant Box化する。

環境

区分 バージョン
ホストOS macOS 10.13 High Sierra
Vagrant 2.0.0
Oracle VirtualBox 5.1.28
ゲストOS OpenBSD 6.2

※ おそらく、ホストOS は何でも良さそう。Vagrant も 1.9系でも動くかと思います。

手順

https://github.com/SierraX369/packer-templates を参考にしました。

VM 上での作業

以下の操作は VM 上で行う(別にSSH経由でなくともよい)

1. doas設定

まずは、OpenBSDの sudo の代わりのコマンドである doas の設定を行う。

echo 'permit vagrant' >>/mnt/etc/doas.conf
echo 'permit nopass setenv { PKG_PATH ENV PS1 SSH_AUTH_SOCK } :wheel' >>/mnt/etc/doas.conf

2. curlインストール

参考にしている Packer テンプレートでは、ftp コマンドを使っているようだが、今回は curl を使用するため、 pkg_add にてインストールする。

does 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 $HOME_DIR/.ssh;
chmod -R go-rwsx $HOME_DIR/.ssh;

4. syspatch設定

セキュリティーアップデートをバイナリーアップデートで適用するための syspatch コマンドの設定をする。
ソースコードからアップデート適用するような場合は設定不要だと思います。
※ URLの末尾が OpenBSD で終ること。 / で終ると動きません

doas echo 'https://fastly.cdn.openbsd.org/pub/OpenBSD' >> /etc/installurl

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 コマンドを使用する

Vagrantfile
config.ssh.sudo_command = "doas env %c"

シェルコマンド設定

bash ではなく ksh なので、以下のように設定する(多分、kshを指定しても良い)

Vagrantfile
config.ssh.shell = "sh"

OpenBSD がゲストであることを記載

要らないかも知れないが、ゲストOSが OpenBSD であることを記載する

Vagrantfile
config.vm.guest = :openbsd

共有フォルダー設定

VirtualBox guest addition が対応していないため、 vboxfs による共有フォルダー機能は使えない。
そのため、NFS設定にて共有フォルダー設定する。
共有フォルダーを使用しないのであれば、共有フォルダーを無効にするように設定する。

Vagrantfile
config.vm.synced_folder ".", "/vagrant", type: "nfs"

これで、OpenBSD をVagrant Boxとして使えます。

何かあって消すこともいずれはあるかと思いますが、以下に作ったものをアップロードしてあります。
ちなみに、 VirtualBoxの UEFI を有効にして、パーティションテーブルも GPT にしています。
https://app.vagrantup.com/poad/boxes/openbsd