PackerでVagrant Boxを作成する際のトラブルシューティング


この記事の所要時間: 346

packer

Packer はJSONで記述した構成ファイルに従って $ packer build コマンド一発でVMイメージを作成でき、さらにVagrant BoxやAmazon EC2のイメージにエクスポートできる超クールなツールです。ちなみに開発者はVagrantの開発者で有名なMitchell Hashimoto氏です。

今回はPackerでVagrant Boxの作成の自動化をしようとした際にハマったポイントとその解決方法について報告します。

トラブルその1: SSHに接続できずタイムアウトする

packer build の実行中に

と表示されたままタイムアウトしてビルド失敗になる場合や、vagrant up 実行中に

と表示されたままタイムアウトになる場合です。

VirtualBox のポートフォワーディングが効いているかどうかを確認する

ポートフォワーディングが有効になっていないとPackerやVagrantはゲストOSのSSHサーバに接続することができません。ファイアウォール等でブロックしている可能性もあります。

SSHクライアントで手動でゲストOSにアクセスできるかどうか調査すると解決の糸口が見えるかもれません。

トラブルその2: vagrant up 時にSSHの認証に失敗する

以下のようなメッセージが出てしまう場合です。

1. /home/vagrant/.ssh/authorized_keys を確認する

Vagrantが使う公開鍵が authorized_keys に登録されていないとSSHで認証エラーになります。登録されていない場合は https://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pubauthorized_keys に追加してください。

2. PubkeyAuthentication が有効かを確認する

sshdの設定で PubkeyAuthentication が有効になっていないと Vagrant は公開鍵認証ができずに失敗します。/etc/ssh/sshd_config の設定を確認してみてください。

3. sudoers を正しく設定する

Vagrantのは非tty環境からsudoを叩きますが、sudoersの設定でこれが禁止されている場合があります。その場合は以下のようにしてユーザ vagrantrequiretty オプションを無効化しておきます。

トラブルその3: /vagrant のマウントに失敗する

VM起動直後、以下のように共有ディレクトリのマウントが失敗した旨のメッセージが出る場合です。

Guest Additions がインストールされているかどうか確認する

Guest Additions がないと共有機能は使用できませんので未インストールの場合はインストールする必要があります。

PackerはGuest AdditionsのISOイメージのダウンロードはしてくれますがインストールまではやってくれないので、PackerにGuest Additionsをインストールするスクリプトprovisionersに追加しておきます。またマウントポイントである /vagrant というディレクトリも事前に作成する必要があります。

なおCentOSの場合はインストールに gcckernel-devel が必要になるので (参考: http://www.virtualbox.org/manual/ch04.html)、Kickstartの実行中や他のprovisionersで事前にインストールしておく必要があります。

投稿者紹介

齊藤 潤
サーバ運用もできるプログラマと化した、2013年入社の元新人エンジニアです。

人気の記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP