ラベル vagrant の投稿を表示しています。 すべての投稿を表示
ラベル vagrant の投稿を表示しています。 すべての投稿を表示

2013年11月4日月曜日

Windows8 Proにvargrantを入れてみる(その2)

前回はvagrantで仮想OSを起動するところまで実施。Hyper-Vとの共存で手こずった。
その後何かと触っていると気になった点を挙げておこう。

・ゲストOSにnetworkを追加してみる

 今回ネットワークはデフォルトのフォワード構成を使っているわけですが、フォワードだと何かを
 面倒なので、ブリッジモードで通常のネットワークにつながるNICを追加してみる。

 1.VirtualBoxのオプション追加

 2.Vagrantfileを修正
  mitty# cd ~/vagrant/svr11
  mitty# vim Vagrantfile
   ===
  config.vm.network :public_network
   ===
  mitty#

 これで起動時にeth1が追加される。DHCP環境であれば、eth1にアサインされたIPでアクセスを
 することができる。

 (2013/11/16)
 IPを固定にするには、以下のように修正すればよいことがわかりました。

   ===
  config.vm.network :public_network ,ip: "x.x.x.x"


   ===

 
 これでTeraTermでもいけますね。便利。

・作業状態の保存を試みる

 vagrantで起動した仮想OSの作業を中断したい時(hibernate)、ゲストOSをsuspendした状態で、
 ホストOSの再起動をしてみると、なぜか再起動後にゲストOSが認識できなくなる(VirtualBoxに
 は残っているが、vagrantコマンドでは認識しない)。
 無理やりvagrant upで起動すると新規でゲストOSが起動される。。VirtualBox上に構築されている
 OSをvagrantに取り込む方法もわからないため、、再構築するしかない。
 (誰か教えてほしい・・)

 ちなみにホストOS停止前に、ゲストOSを停止した場合は、今のところ問題はないようです。

 これだと作業途中を保存できないんだよな~

 (2013/11/06)
 取り込む方法がありました。vagrantによって構築したゲストOSだけかもしれませんが、、

 svr11が起動できなくなったと想します。

 1.ゲストOSのIDを確認

 mitty# cd ~/VirtualBox\ VMs/svr11_default_1383543354
 mitty# less *.vbox

  <VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.12-windows">
    <Machine uuid="{4c9d39f8-3e2e-4eab-89f3-74c952d624b0}"  
  ・
  ・
  ・

 上記のMachineタグのuuid属性の値を確認します。

 2.svr11とゲストOSのIDの紐づけ

 mitty# cd ~/vagrant/svr11/.vagrant/machines/default/virtualbox
 mitty# echo 4c9d39f8-3e2e-4eab-89f3-74c952d624b0 > id
  mitty# cd ~/vagrant/svr11/

  mitty# vagrant up

 起動できれば終了!

・vagrantコマンドのデバッグ

 mitty# VAGRANT_LOG=INFO vagrant up


ゲストOSをある時点までrollbackするためのplug-inの「sahara」を入れてみる。

 
 1.saharaのインストール

 mitty#  vagrant plugin install sahara

 Installing the 'sahara' plugin. This can take a few minutes...
 Installed the plugin 'sahara (0.0.16)'!


 2.sandboxを有効にする
 sandboxにしたい環境に移動し、on(有効)にする。

 mitty#  cd ~/vagrant/svr11
 mitty#  vagrant sandbox on

 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%


 mitty#  vagrant sandbox status

 [default] Sandbox mode is on

 3.rollback/commitを試す

 ・svr11の書き込みをrollback



 mitty#  cd ~/vagrant/svr11
 mitty#  vagrant sandbox on
 mitty#  ssh svr11
  # touch a
  # logout
 mitty#  vagrant sandbox rollback
  
 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 mitty#
 mitty#  ssh svr11
 #  ls
 #

 なくなった。成功。ちなみに

 mitty#  vagrant sandbox status

 [default] Sandbox mode is on

 sandboxは有効な状態のままでした。

 ・svr12の書き込みをcommit


 mitty#  ssh svr11
  # touch a
  # logout
 mitty#  vagrant sandbox commit

 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 mitty#

 成功はしたものの、時間がかかる。suspend/haltしておくと早い。

 4.sandboxを無効にする

 mitty# vagrant sandbox off


 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 mitty#

 ちなみに変更したのちにcommit/rollbackをしないまま、offにすると、commitされたことになる
 ようです。他のサイトではrollbackと書かれていたりしたので、Versionによって動きが異なるかも
 しれません(要注意)。

ゲストOSをsnapshot取得のためのplug-inの「vagrant-vbox-snapshot」を入れてみる。

 1.vagrant-vbox-snapshotのインストール

 mitty# vagrant plugin install vagrant-vbox-snapshot

 Installing the 'vagrant-vbox-snapshot' plugin. This can take a few minutes...

 Installed the plugin 'vagrant-vbox-snapshot (0.0.4)'!

 2.snapshotを取得してみる

 snapshotに名前が付けられるので、「init」という名前で作成してみる。


 mitty#  cd ~/vagrant/svr11
 mitty# vagrant snapshot take init


 Taking snapshot init
 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 mitty# vagrant snapshot list 

 Listing snapshots for 'default':
   Name: init (UUID: ce8054c3-0914-4548-a72b-d929cfda5589) *

 mitty#  

 initという名前のスナップショットがあることがわかる。

 3.snapshotを戻してみる

 最後に取得したsnapshotに戻してみる。


 mitty#  ssh svr11

 # touch e
  # logout
 mitty# vagrant snapshot back


 0%...10%...20%...30%...40%...50%...Restoring snapshot ce8054c3-0914-4548-a72b-d929cfda5589
 60%...70%...80%...90%...100%
 Starting restored VM
 [default] Resuming suspended VM...
 [default] Booting VM...

 mitty#  ssh svr11
 #  ls
 # a b c d

 eがなくなった。戻ったっということだ。ちなみにsnapshot(init)は残ったままだ。

 4.snapshotを任意の時点に戻してみる

 mitty#  ssh svr11

 # touch e
 # logout

 mitty# vagrant snapshot take modified

 Taking snapshot modified
 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 mitty# vagrant snapshot list

 Listing snapshots for 'default':
   Name: init (UUID: ce8054c3-0914-4548-a72b-d929cfda5589)
      Name: modified (UUID: 314b3d67-c4e5-4d40-a030-fa6e2f919c6b) *

 2回目のsnapshot(modified)を取得した。

 mitty#  ssh svr11

 # touch f
 # logout
  
 まずはsnapshot(modified)へリストアしてみる。

 mitty# vagrant snapshot go modified

 Powering off machine a7c0eae6-677d-4322-a8f5-9c4a1b6f9b22
 0%...10%...20%...30%...40%...50%...Restoring snapshot 314b3d67-c4e5-4d40-a030-fa6e2f919c6b
 60%...70%...80%...90%...100%
 Starting restored VM
 [default] Resuming suspended VM...
 [default] Booting VM...

 mitty#  ssh svr11

 # ls
 a b c d e
  # logout

 fがなくなっており、modifiedの時点まで戻ったことが確認できた。さらに、initの時点まで
 戻してみる。

 mitty# vagrant snapshot list

 Listing snapshots for 'default':
   Name: init (UUID: ce8054c3-0914-4548-a72b-d929cfda5589)
      Name: modified (UUID: 314b3d67-c4e5-4d40-a030-fa6e2f919c6b) *

 mitty# vagrant snapshot go init

 Powering off machine a7c0eae6-677d-4322-a8f5-9c4a1b6f9b22
 0%...10%...20%...30%...40%...50%...Restoring snapshot ce8054c3-0914-4548-a72b-d929cfda5589
 60%...70%...80%...90%...100%
 Starting restored VM
 [default] Resuming suspended VM...
 [default] Booting VM...

 mitty#  ssh svr11

 # ls
 a b c d
 # logout

 おぉー、もどった。

 mitty# vagrant snapshot list

 Listing snapshots for 'default':
   Name: init (UUID: ce8054c3-0914-4548-a72b-d929cfda5589)
      Name: modified (UUID: 314b3d67-c4e5-4d40-a030-fa6e2f919c6b) *

 なるほど。modifiedはまだ残ったままですね。
 
 mitty#  ssh svr11

 # touch g
 # logout
  
 mitty# vagrant snapshot take modified

 Taking snapshot modified2
 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 mitty# vagrant snapshot list

 Listing snapshots for 'default':
    Name: init (UUID: ce8054c3-0914-4548-a72b-d929cfda5589)
       Name: modified (UUID: 314b3d67-c4e5-4d40-a030-fa6e2f919c6b)
       Name: modified2 (UUID: 031418ce-57a7-4313-ac43-339a7f148d64) *

 mitty# vagrant snapshot go modified
 
 Powering off machine a7c0eae6-677d-4322-a8f5-9c4a1b6f9b22
 0%...10%...20%...30%...40%...50%...Restoring snapshot 314b3d67-c4e5-4d40-a030-fa6e2f919c6b
 60%...70%...80%...90%...100%
 Starting restored VM
 [default] Resuming suspended VM...
 [default] Booting VM...

 mitty# vagrant snapshot list

 Listing snapshots for 'default':
    Name: init (UUID: ce8054c3-0914-4548-a72b-d929cfda5589)
       Name: modified (UUID: 314b3d67-c4e5-4d40-a030-fa6e2f919c6b) *
       Name: modified2 (UUID: 031418ce-57a7-4313-ac43-339a7f148d64)

 となった。modifiedのところに*が付いた。これは最新のsnapshotということだろう。
  

chef solo + knife soloはまたの機会に。

2013年9月15日日曜日

Windows8 Proにvargrantを入れてみる(その1)

Hyper-V環境でCentOS環境の構築を試行錯誤することがあるので、便利そうなvargrantを
入れてみることにした。環境は以下の通り。


  • ホストOSはWindows8 Pro 64bit
  • 仮想ソフトは、VirtualBox 4.2.18(Hyper-Vはサポートされていないらしい)
  • GestOSはCentOS6.4 x64でサーバ名はsvr11とする。
  • ついでに、chef solo + knife soloを使ってソフトウェア構築

で試してみる。


1.VirtualBoxをインストール


  https://www.virtualbox.org/wiki/Downloads

 
 からダウンロードして、インストールする。すでにHyper-Vが入っている環境でもあり、インストール時のオプション
 としては、こちらを参考にして、Networkのオプション(BridgeとHost-Only)のチェックを外してみた。

2.vagrantのインストール


 http://downloads.vagrantup.com/


 2013/9/14時点では、1.3.1が最新バージョンだった(Vagrant_1.3.1.msi)。

 今回は「D:\HashiCorp\Vagrant\」にインストールする。
 インストール後に再起動要求された。

3.作業用ターミナルをセットアップ


 vagrantには、mintty.exeが含まれている。ここを参考にして環境整備。

 mintty.exeのショートカットを作成し、リンクに
  D:\HashiCorp\Vagrant\embedded\bin\mintty.exe /bin/bash --login
 を設定。
 あと環境設定として、上記ショートカットから起動したターミナルの中で、以下を実施。

 mintty# cat << __EOF__ > ~/.minttyrc

 mintty# BoldAsFont=no
 mintty# Locale=ja_JP
 mintty# Charset=UTF-8
 mintty# FontHeight=12
 mintty# Columns=100
 mintty# Rows=34
 mintty# Transparency=medium
 mintty# Term=xterm-256color
 mintty# RightClickAction=paste
 mintty# OpaqueWhenFocused=no
 mintty# PgUpDnScroll=yes
 mintty# __EOF__

4.MinGW(MinimalistGnu for Windows)

 chef solo + knife soloのためには、sshとrsyncが必要になる。そのためにvagrantでインストールされる

 MinGWでは含まれないバージョン管理機能を追加でインストールする必要がある。
 ので結局MinGWをインストールする。今回インストールしたのは最新版の0.6.1-beta-20130910-1。 
 インストール先はd:\tools\mingwとした。
 今回vagrantで使うため、上記インストール後に、インストールモジュールをvagrant配下にコピーする。

 mintty# cp -r /d/tools/mingw/. /D/HashiCorp/Vagrant/embedded/


 次に上記ディレクトリを変えたので、mingw-getの動作設定の変更をする(参考にさせて
 もらったのはこのサイトです)。
 以下のファイル2つに対して、
   D:\Tools\MinGW\var\lib\mingw-get\data\defaults.xml
   D:\Tools\MinGW\var\lib\mingw-get\data\profile.xml
  以下の設定変更をする。

  <sysroot subsystem="MSYS" path="%R/msys/1.0" />

 こちらを
  <sysroot subsystem="MSYS" path="/HashiCorp/Vagrant/embedded" />

 に変更する。そのうえで、sshとrsyncをインストールする。minttyを起動し、以下実施


  mintty# mingw-get update

  mintty# mingw-get upgrade
  mintty# mingw-get install msys-openssl msys-openssh
  mintty# mingw-get install msys-rsync msys-tar

5.vagrantで仮想OSを構築する

  まずはテンプレートとなるboxをダウンロードする。boxはこちらにあります。
  今回はCentOS6.4 x86_64を作成する。

  mintty# vagrant box add centos64_x86_64  http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
  mintty# mkdir -p ~/vagrant/centos_svr11
  mintty# cd ~/vagrant/centos_svr11
  mintty# vagrant init centos64_x86_64
  mintty# vagrant up

  これで仮想環境が起動できているはず。。が、うまく動かず、ゲストOS起動時にCPUの仮想化
 機構が使えないので、64bitOSが起動できないという旨のエラーがでてしまう。BIOSを確認した
 が問題なく有効になっている(というかそもそもHyper-Vも使えていたわけだし)。
 ちなみにVirtualBoxのマネージャーで新規OSを構築しようとしても64bitOSが選択できない。
 やはり何か問題があるようで、いろいろ探し回ってみたがこれといった情報も見つからない。
 
 ということで、試しにHyper-Vの機能を無効化してみたところ、、うまくいった。やはりHyper-V
 との相性は今一つということでしょうかね(どちらか選べと)。Hyper-Vで作成した環境を移行
 するかどうか、悩みどころです。とりあえずいったんVirtualBoxで進める(NICもHostOnlyが使え
 たほうが楽、、)

6.ゲストOSに接続してみる

 MinGWで入れたsshで接続してみる。

  mintty# vagrant ssh-config --host svr11 >> ~/.ssh/config

 これでsshで接続するための設定ファイルが出来上がり。

  mintty# ssh svr11

  Last login: Sun Sep 15 13:57:27 2013 from 10.0.2.2
  Welcome to your Vagrant-built virtual machine.
  [vagrant@localhost ~]$

 でログインができた!ちなみにWindows8にインストールしていたteratermで接続してみると、、
    127.0.0.1:2222
  あてで、アカウントはvagrant/vagrantでログインができました。(パスワードは即変更で、、)

(2013/10/8追記)
proxy環境の場合は、、

  mintty#  export HTTP_PROXY=xx.xx.xx:8080

で設定すればOK。


(2013/10/9追記)
ネットワーク環境のせいか

#vagrant box add centos64_x86_64  http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box

Downloading or copying the box...
An error occurred while downloading the remote file. The error9)
message, if any, is reproduced below. Please fix this error and try
again.

Recv failure: Connection was reset
  

というエラーが出てしまうことがあるので、その場合は別途BOXをブラウザなどでダウンロードし、ローカルのファイルからADDすることで解決した。

#vagrant box add centos64_x86_64  /d/hashicorp/vagrant/images/CentOS-6.4-x86_64-v20130427.box