前回は失敗でした。
真面目にPackerのドキュメント読みながら
VeeWeeのdefinition.rb
と見比べてみて、この部分を変えたらうまくいきました。
変更点
変更前:
"builders": [ ... "shutdown_command": "shutdown -h -p now", ... "provisioners": [ { "type": "shell", "script": "postinstall.sh", } ],
変更後:
"builders": [ ... "shutdown_command": "echo 'shutdown -p now'|su -", ... "provisioners": [ { "type": "shell", "script": "postinstall.sh", "override": { "virtualbox": { "execute_command": "cat '{{.Path}}' | su -" } } } ],
shutdown_command
これだと、一般ユーザーではPermission Deniedになってしまうので、
suを使って実行するかたちに変えます。
execute_command
参考にした元のJSONだとecho 'vagrant'|sudo -S sh '{{.Path}}'
となっていたけど、
FreeBSDだとはじめはsudo
が入ってなくてエラーが出てしまうので外していました。
結果
で、やってみたらうまくいきました。
つぎに、vagrantにboxを追加します。
> vagrant box add freebsd91-packer .\freebsd-packer.box > vagrant init freebsd91-packer > vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Importing base box 'freebsd91-packer'... [0K[default] Matching MAC address for NAT networking... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] Failed to connect to VM! Failed to connect to VM via SSH. Please verify the VM successfully booted by looking at the VirtualBox GUI.
なぜかここでWaiting for VM to boot. This can take a few minutes.
のまましばらく待ったあげく、
sshがタイムアウトして失敗する、という現象が発生します。(なんでなんでしょう。。)
でも、vagrant ssh
するとふつうにVMに入れます。
ということでたぶん成功です。たぶん。
ということで、最終的に使ったJSONはこんな感じです:
Simple JSON definition file for Packer.
改善点?
あといじりたいところはいくつか。
1. ports からビルドすると遅い
VeeWeeに用意されているpostinstall.sh
だと、portからいちいちビルドしちゃうので遅いです。
まあportsのほうが確実なのかもしれませんが、packageつかってやる方に変えたいかも。
veewee/templates/freebsd-9.1-RELEASE-amd64/postinstall.sh at master · jedi4ever/veewee
2. ISOイメージが重い
うちのネットあんま早くないので、disc1をもってくるのはちょっと重いんです。
bootonlyのイメージか、mfsBSDでできると軽くていいな。
でもそうすると"boot_command"は書き換えないとだめなので、
めんどくさくてやらない予感がします...。
3. vagrant up
に失敗する
これはほんとなんでなんでしょう。気になる。
sshdが起動するタイミング?
感想
いやしかしほんと、boxから作らないといけないとかめんどくさいけど、
世の中のFreeBSD使いのひとはどうしてるんでしょう。
vagrantなんて使わないんでしょうか。
でもPackerにはFreeBSDのコミッターの人関わってるし。。うーん。