Vagrant
VirtualBox
OpenBSD

OpenBSD 6.2 の Vagrant Box を作ってみた


前提

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


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