現象としては、Vagrantファイルがあるディレクトリで
vagrant upすると違ったVMが立ち上がってしまうというもの・・・
元に戻すのが面倒だったので備忘録を兼ねての投稿です。
確認
おかしいと思ってVirtualBoxを起動すると同じものが2つある!?
そこで現在のVM一覧を見るコマンドVBoxManage list vmsを叩いて確認してみると
$ VBoxManage list vms
・・・
"hogehoge_default_1457750943558_68266" {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
"hogehoge_default_1457837316012_51675" {YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}
やっぱし同じものが2つある(↑hogehogeが2つ)
※XXXXやYYYY~には実際は英数字が入ります
対策
紐付きがおかしくなっている事は間違いないので、Vagrantファイルがある
場所の直下にある.vagrantディレクトリを調べて見る
.vagrant
└── machines
└── default
└── virtualbox
├── action_provision
├── action_set_name
├── id ★
├── index_uuid
├── private_key
└── synced_folders
★が付いているidが怪しいので中を見てみると・・
$ cat .vagrant/machines/default/virtualbox/id
YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY
ん〜恐らく、ここがXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXじゃないかと・・
修正してvagrant upしてみると、
望んていたものが起動しました!!
これで一件落着かと思っていると、
起動や停止する度にパスワードを聞かれる羽目に!?
原因
vagrant upやvagrant haltするとVMとssh接続を行っており、 認証がうまくいってないのが原因でした。
↑の.vagrantの階層でprivate_keyというのが秘密鍵で、
別のVM(YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY)の秘密鍵が残っちゃっていた模様。
対策
解決策としては、
- 全く新規に公開鍵、秘密鍵を作成
- 残ってる秘密鍵を元に公開鍵を作成
の2つがあります。
今回は残ってる秘密鍵を元に公開鍵を作成したいと思います。
秘密鍵から公開鍵を作成
$ ssh-keygen -y -f .vagrant/machines/default/virtualbox/private_key > authorized_keys
VMを起動し、/home/vagrant/.sshのauthorized_keysを上書きます
$ mv /vagrant/authorized_keys /home/vagrant/.ssh/.
これで認証が失敗せず、パスワード聞かれることもなくなります。
その他
↑の問題とは関係ないですが、色々試している中で見つけて便利だと思ったのでメモ
Vagrantを起動する際はVagrantファイルがあるディレクトリに移動して
vagrant upをしていましたが、vagrant up {id}とする事で
どの場所からでも起動できます。
{id}を確認するには
$ vagrant global-status
{id} default virtualbox poweroff hoge
{id} default virtualbox poweroff fuga
で確認できます。
また、vagrant upに限らずその他のコマンドでも使用できます。
vagrant halt {id}、vagrant destroy {id}・・・
shellなんかを書く時に使えそうです^^