vmで色々な環境を使ってみたかったので、virtualboxとvagrantを入れてみました。その時のメモ書き。osはwindows7。
virtualboxとvagrantのインストールは下を参考にしました。
refs:Windows7にVirtualBoxとVagrantをインストールしたメモ
VirtualBoxとVagrantで開発環境を構築
先にvirtualbox、その後にvagrant。vagrantをインストールした後に再起動を要求されました。再起動後、dos窓からvagrantコマンドが使えたので成功。
バージョンはvirtulaboxが4.3(VirtualBox-4.3.0-89960-Win)、vgrantが1.3.5(Vagrant_1.3.5.msi)。2013/10/16時点の最新版です。
あとはドットインストールのvagrant講座も参考。vagrantのboxを入れるためのbox一覧のサイトは下。
refs:vagrantbox.es
ここからcentos6.4のvirtualbox,64bit,minumum版をインストール。nameはCentOS 6.4 x86_64 Minimal (VirtualBox Guest Additions 4.2.16, Chef 11.6.0, Puppet 3.2.3) providerはVirtualBox。
>vagrant box add centos64_vm http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v2
0130731.box
これはすごい時間がかかった。ネットワークが遅い環境ではやめた方が良い。ここまで容量は2gぐらい食った。追加したboxは「C:\Users\ユーザ名\.vagrant.d\boxes」にある。
windowsのdos窓はかなりきつい・・・mac・・・
■おすすめ本
- 入門Chef Solo - Infrastructure as Code/伊藤直也
- ¥価格不明
- Amazon.co.jp
■vagrantでよく使うコマンド
>vagrant -h
⇒vagrantコマンドの一覧が見れる
>vagrant box -h
⇒vagrant boxコマンドの一覧が見れる
>vagrant box list
⇒boxのリスト一覧を見る
■vm起動
「vagrant init ボックスネーム」でvmを初期化して「vagrant up」で起動。そうしたら「"Waiting for VM to boot. This can take a few minutes."」で止まってしまった。調べたらVagrantfileファイルの下のコードを有効にする必要があるとの事。
○変更前
# config.vm.provider :virtualbox do |vb|
# # Don't boot with headless mode
# vb.gui = true
#
# # Use VBoxManage to customize the VM. For example to change memory:
# vb.customize ["modifyvm", :id, "--memory", "1024"]
# end
○変更後
config.vm.provider :virtualbox do |vb|
# # Don't boot with headless mode
vb.gui = true
#
# # Use VBoxManage to customize the VM. For example to change memory:
# vb.customize ["modifyvm", :id, "--memory", "1024"]
end
再度「vagrant up」。今度は「仮想化支援機構(VT-x/AMD-V)を有効化できません」というエラーダイアログ・・・BIOSの設定画面でvirtualization technologiesをdisabledからenabledにして有効にする必要があるらしい。
refs:仮想化支援機構(VT-x/AMD-V)を有効化できません Vagrant upでOS起動失敗した
再度「vagrant up」。ようやく成功しました。
■vagrant sshでvmに接続
続いてdos窓から「vagrant ssh」でsshでvmに接続
>vagrant ssh
`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use the PuTTY SSH client with the following
authentication information shown below:
Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/Users/username/.vagrant.d/insecure_private_key
sshが入ってないってさ・・・cygwinかmingwかgit入れてsshを使えと。以前にtortoiseGitを入れた時にgitbashも同時に入れたのでそれを使うことにした。gitBashを起動したらminGWの窓が起動。再度「vagrant ssh」。
$ vagrant ssh
Last login: Sat Oct 26 10:43:07 2013 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ pwd
/home/vagrant
成功した。
teratermでもsshで接続できる。情報は↓
Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/Users/username/.vagrant.d/insecure_private_key
■ssh hostname
vagrant sshでssh接続してもいいけど、一般的な ssh hostname の形式でssh接続をしたい場合はvagrant ssh-configコマンドでsshのconfigファイルに追記する文字列を出力する
va ssh-config --host vahost
va ssh-config --host vahost >> ~/.ssh/config
ssh vahost
■httpdサーバをインストール。
せっかくなのでhttpサーバを入れてみることにした。
>sudo yum -y install httpd
>sudo service httpd start
>sudo chkconfig httpd on
/var/www/html/ディレクトリで確認テストのためにindex.htmlファイルを適当に作成。
続いて、ホストOSのブラウザからvmのhttpdのページが見れるように設定をしてみる。一旦exitでvmからログアウト。Vagrantfileで下のように変更
○変更前
# config.vm.network :private_network, ip: "192.168.33.10"
○変更後
config.vm.network :private_network, ip: "192.168.33.10"
これでvmを再起動すればhttp://192.168.33.10でさっき作成したvmのテストウェブページが見れるはず。「vagrant halt」でvmを停止。「vagrant up」で起動。なんかエラーが出た。
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["hostonlyif", "create"]
Stderr: 0%...
Progress state: E_INVALIDARG
VBoxManage.exe: error: Failed to create the host-only adapter
VBoxManage.exe: error: Assertion failed: [!aGuid.isValid()] at 'D:\tinderbox\win
-4.3\src\VBox\Main\src-server\HostNetworkInterfaceImpl.cpp' (74) in long __cdecl
HostNetworkInterface::init(class com::Bstr,class com::Bstr,class com::Guid,enum
__MIDL___MIDL_itf_VirtualBox_0000_0000_0034).
VBoxManage.exe: error: Please contact the product vendor!
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component HostNetworkI
nterface, interface IHostNetworkInterface
VBoxManage.exe: error: Context: "int __cdecl handleCreate(struct HandlerArg *,in
t,int *)" at line 66 of file VBoxManageHostonly.cpp
VM VirtualBoxマネージャからは起動できる。ただ、起動してコマンドから「vagrant ssh」を実行したら下のエラーがでた。
$ vagrant ssh
Bad port ''
で、このエラーだけど、「config.vm.network :private_network, ip: "192.168.33.10"」をまたコメントアウトにしたら、とりあえず「vagrant up」「vagrant ssh」が実行できた。ただこの状態だと、http://192.168.33.10にアクセスしてもウェブページが見れない。
それにしても次から次へとエラーが出てくる。一難去ってまた一難。嫌になる・・・やっぱりwindowsのせいなのか?macならすんなりいくのか?
■ユーザ、vagrant,root
vagrant sshで接続したときのユーザはvagrant。root権限が必要なコマンドで毎回sudoをうつのが面倒な場合、su - コマンドでrootにユーザ変更したい場合がある。で、rootの初期パスワードはvagrant。