前提
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