re:inventing the wheel

それでも車輪は回っている

Vagrant 1.7.1導入したら若干不具合が発生したのでメモ

気がつけばVagrantのStableが1.7.1になっていたので導入してみたのですが、自分にとって若干不具合があったので 対策をメモしておきます。

sshコマンドでVagrantBoxに接続できない

chef-soloの動作確認などのために、vagrant sshだけではなく普通のsshコマンドで接続できるよう$HOME/.ssh/configに下記のような設定を記述していたのですが、 アップデートによりIdentityFileで接続できなくなってしまいました。

1
2
3
4
5
Host vagrant
Hostname        192.168.33.10
User            vagrant
IdentityFile    ~/.vagrant.d/insecure_private_key
StrictHostKeyChecking no

これまでは、IdentityFileを指定しているので鍵交換方式で接続できたのですが、以下のようにPasswordを求められるようになってしまいました。
ちなみに、vagrant sshでは問題なく接続できます。

1
2
3
$ vagrant up
$ ssh vagrant
Password:

原因は、1.7よりデフォルトで$HOME/.vagrant.d/insecure_private_key を参照しなくなったようです。vagrant ssh-configコマンドで確認すると、Vagrantfileと同一ディレクトリに.vagrant/machines/default/virtualbox/private_keyとして自動生成されていました。

対策としては、Vagrantfileに以下の設定を追加することで回避できます。

1
config.ssh.insert_key = false

参考:https://github.com/geerlingguy/ansible-for-devops/issues/7

自作VagrantBox作成時にpackageでこける

VagrantBoxを作成すべくvagrant packageコマンドを実行すると、下記のようなargumentsエラーが発生しました。

1
2
3
4
5
6
7
8
$ vagrant package --base vagrant-centos7
/opt/vagrant/embedded/gems/gems/vagrant-1.7.1/lib/vagrant/machine.rb:153:in `action': wrong number of arguments (2 for 1) (ArgumentError)
from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/plugins/commands/package/command.rb:83:in `package_vm'
from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/plugins/commands/package/command.rb:66:in `package_base'
from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/plugins/commands/package/command.rb:42:in `execute'
from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/lib/vagrant/cli.rb:42:in `execute'
from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/lib/vagrant/environment.rb:301:in `cli'
from /opt/vagrant/bin/../embedded/gems/gems/vagrant-1.7.1/bin/vagrant:174:in `<main>'

対策としては、/opt/vagrant/embedded/gems/gems/vagrant-1.7.1/lib/vagrant/machine.rbの153行目を以下のように修正します。

1
2
-     def action(name, **opts)
+     def action(name, opts)

参考:https://github.com/mitchellh/vagrant/issues/4962


以上、1.7.1へバージョンアップしたら(今の所)出くわした問題と対処方法でした。