tohokuaikiのチラシの裏

技術的ネタとか。

Vagrant+VirtualBox+Windowsで仮想環境Debianをつくる

ようやくVagrantを使ってみる。いつの間にかVMWareって下火になってたの?

以下をインストール

Boxファイルを追加

イメージファイルみたいなものが配布されているらしい。 A list of base boxes for Vagrant - Vagrantbox.es 以下、DOSコマンドプロンプト

$ vagrant box add ARTACK/debian-jessie https://atlas.hashicorp.com/ARTACK/boxes/debian-jessie

このときの名称の、ARTACK/debian-iessieは固定らしくて、変更するとダメだった。でも、他のboxでは名称変更を許してるのもあった。このあたりは、boxのメタデータにでも入ってるんだろう。

最小サイズのDebianが欲しかったのでこちらをadd Debian Jessie 8.1.0 Release x64 (Minimal, Guest Additions 4.3.26))

追加できたことを確認

$ vagrant box list
ARTACK/debian-jessie (virtualbox, 8.1.0)

適当なフォルダを作って、そこで展開する。

仮想イメージをコピー
$ vagrant init ARTACK/debian-iessie
仮想マシンを起動
$ vagrant up

sshで接続

どうもデフォルトでは、

host: 127.0.0.1
port: 2222
login: vagrant
password: vagrant
root: vagrant

で接続できる。んだけど、これって複数マシンを起動したい場合はどうするんだろう・・・。 VMWareだとネットワークセグメント変えてたんだけど、それはそれで結構面倒だった記憶あって、デモそのおかげでマシン内ネットワークとか組めてたりで、ただ開発環境だけならこれでいいのかもと思ったり。Vagrantって特に開発環境の共有っぽいのが目的らしく、それだと127.0.0.1使うのが正義よね。。。

接続用のSSHキーを作成

$ vagrant ssh

これ、何をやってるのか最初わからず、すっ飛ばしてたんだけど、単にsshで接続するってこと。

なんか、vagrant up時に「 default: Warning: Authentication failure. Retrying...」ってエラーが出続けて起動はしてるんだけど不思議で、なんだろうと思ったら Vagrant で作った VM にやってはいけない2つのこと - Qiitaによると、

使用する box ファイルにもよるのかもしれませんが、vagrant up や vagrant halt 等のコマンドは内部的に「公開鍵認証による VM への SSH 接続」を行っているようです。その際に使用している秘密鍵のありかは、VM が立ち上がっている状態で vagrant ssh-config すると確認できます。

ということ。

んー、でも起動できてるしhaltも効くしな・・・と思ってたけど、とりあえず気持ち悪いのでvagrantユーザで仮想マシンにログインしてssh-keygenした後に $vagrant ssh-config で表示されるプライベートキーの置き場にssh-keygenで作ったプライベートキーをおき、仮想マシン側の /home/vagrant/.ssh/authorized_keys に公開鍵を設置。sshクライアントは・・・・cygwinで $vagrant sshするとログインできた。

同様に、cygwinで $vagrant up/halt もエラーなくできていることを確認。

ついでにsambaでファイル共有まで

ググるとVagrantfileをいじって、config.vm.synced_folderをどうこうして~ってあるんだけど、どうもうまくいかない。。。。しかも、なんかsmb遅いとか85%くらいしか信頼性無いとか書かれてて、あわわわ。。。

もーええわーと、ホストのIPアドレスを変更ネットワークアダプタ見て

f:id:tohokuaiki:20150928182750p:plain

ネットワークセグメントが192.168.56.1なので、

config.vm.network "private_network", ip: "192.168.56.10"

ってVagrantfileを変更。これでvagrant upするとゲストのIPアドレスが変わってる。。。これは便利。*2

あとは

  • ゲストOSにsambaインストール
  • root@debian:~# pdbedit -a vagrantvagrantユーザー追加*3
  • /etc/samba/smb.conf の[global]でsecurity = user、[home]で read only = no / create mask = 0644 / directory mask = 0755 に変更
  • /etc/init.d/smb restart

であとはWindowsから

f:id:tohokuaiki:20150928183307p:plain

ってアクセスして、ID: WORKGROUP\vagrant PASS: vagrantでオッケー。普通のsambaだからカバレッジも100%近いと思うんだけどなぁ。

*1:これが無いと起動したときに「Implementation of the USB 2.0 controller not found!」って言われて起動できなかった。

*2:これだけで十分便利なんやで。VMWareIPアドレス変えようとして・・略

*3:パスワードもvagrant...にしないとダメなんだっけ?忘れた