ページ

2016年3月17日木曜日

VagrantでVMの紐付きがおかしくなった場合


現象としては、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 upvagrant 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/.sshauthorized_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なんかを書く時に使えそうです^^

0 件のコメント:

コメントを投稿