NoName. NoTry

”名もなき挑戦”という意味の予定

Day3.[Vagrant]Vagrantで仮想SandBox環境(テスト環境)を作成

少しネタがたまってきたので、久しぶりの更新。

 

一言で言えば、Vagrantはテスト用の仮想マシンの作成や、その環境設定などを自動化するツールである。

Vagrant自体は,自動化ツールにしかすぎないので、実際はVagrant経由でVirtual BoxやVM Wareなどを経由して、仮想マシンを動かす事になる。

 

VagrantWindowsおよびMac OS XLinuxDebianUbuntuCentOSRed Hat Enterprise LinuxFedora)で動作する。Windowsでは一部、機能制限があるらしい。

Vagrantを使う

Vagrantのインストール

公式Webサイトのダウンロードページからダウンロードできる。Mac OS XWindowsLinux向けのパッケージが用意されており、Linux向けについてはDeb形式(DebianおよびUbuntu)とRPM形式(RHELおよびFedora)のパッケージが用意されている。例えばCentOSx86_64)上の環境の場合、RPM形式のパッケージをダウンロードし、次のようにrpmコマンドでインストールすれば良い。

# rpm -ivh vagrant_1.4.0_x86_64.rpm

VagrantRubyで実装されているが、パッケージでインストールした場合Vagrantが使用するRuby環境(Ruby 2.0)も同時にインストールされるため、別途Rubyをインストールしておく必要はない。Linux環境の場合、このRuby環境は/opt/vagrant/embeddedディレクトリ以下にインストールされる。

また、Mac OS XWindows環境の場合は、配布されているインストーラを実行し、指示に従ってインストール作業を進めれば良い。

 

自分の場合はMac OSなのでインストーラを使用した。

 

VagrantでVirtual Box用の仮想マシンを作成

VagrantではOSのディスクイメージやVirtual Boxなどの設定ファイルなどを、「box」というファイル形式で扱う。

Puppet Labs Vagrant BoxesというサイトでCentOSFedoraDebianなどのboxファイルを公開している。ここで配布されているboxファイルにはあらかじめPuppetがインストールされているため、環境設定にPuppetを利用する場合に特に有用だ(Puppetが含まれない「nocm」バージョンもダウンロード可能)

 なお、Vagrantにはネットで公開されているboxファイルを自動的にダウンロードする機能があるため、事前にこれらをダウンロードしておく必要は無い。

 

設定ファイル 「VagrantFile」の作成

Vagrantでは、「Vagrantfile」というファイルに作成する仮想マシンの設定情報を記述する。「vagrant init」コマンドでこのファイルのひな形を生成可能だ。

$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

また、使用するboxファイルとその名称を指定して「vagrant init」コマンドを実行することも可能だ。たとえば「http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box」というboxファイルを使用し、その名称を「centos-6.5-x64」とする場合、以下のように実行すすれば良い。

$ vagrant init centos-6.5-x64 http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box

このようにすると、boxファイルに関する情報が記述された以下のようなVagrantfileが生成される。

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "centos-6.5-x64"

  # The url from where the 'config.vm.box' box will be fetched if it
  # doesn't already exist on the user's system.
  config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box"

続いて「vagrant up」コマンドを実行すると、指定したboxファイルがダウンロードされ、仮想マシンの作成と起動が実行される。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Box 'centos-6-x64' was not found. Fetching box from specified URL for
the provider 'virtualbox'. Note that if the URL does not have
a box for this provider, you should interrupt Vagrant now and add
the box yourself. Otherwise Vagrant will attempt to download the
full box prior to discovering this error.
Downloading box from URL: http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box
Extracting box...te: 9182k/s, Estimated time remaining: 0:00:02)
Successfully added box 'centos-6.5-x64' with provider 'virtualbox'!
[default] Importing base box 'centos-6.5-x64'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Mounting shared folders...
[default] -- /vagrant

ここでダウンロードされたboxファイルは~/.vagrant.d/以下に保存され、2回目以降はダウンロードなしに仮想マシンを作成できる。

仮想マシンの起動後は、「vagrant ssh」コマンドで仮想マシンにログインできる。このとき、仮想マシンには「vagrant」というユーザー名でログインされ、通常のSSHと同様、シェルから抜ける(Ctrl-Dを入力する)ことで接続を切断できる。

$ vagrant ssh
Last login: Sun Apr 14 22:24:07 2013
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$

なお、vagrantユーザーのパスワードは「vagrant」に設定されている。また、仮想マシンの稼働状況は「vagrant status」コマンドで確認できる。

$ vagrant status
Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

そのほか、「vagrant halt」コマンドで仮想マシンの停止を、「vagrant destory」コマンドで仮想マシンの破棄が可能。

$ vagrant halt
[default] Attempting graceful shutdown of VM...
 
他にも設定などがいろいろ出来るよう。
それはまた次のときに。
 
参考

さくらのナレッジ - 仮想環境構築ツール「Vagrant」で開発環境を仮想マシン上に自動作成する

 

Day.2 "Hack" 触ってみた

こちら

Facebook独自のプログラミング言語「Hack」習得に役立つ10のリソースまとめ

で紹介されているFacebookが公開したプログラミング言語を使ってみた。

公式サイトにいくとソースのダウンロードや、HackのチュートリアルをWEB上で遊ぶことが出来る。

f:id:nonamenotry:20140328011741p:plain

チュートリアルの印象としては、

純粋なPHPよりもオブジェクト指向が強いイメージ。

変数の型とかも決める必要があってPHPより制約がある。

 

最近はC#を触っているから、変数の型がかっちりしていても特に気にならなかったけど、PHPずっとやってたときだったら、今よりも抵抗を感じている気がするw

 

 ローカルでやりたかったんだけど、Linuxに入れる方がやりやすそうだったので、時間を見つけてレンタルサーバで試してみようと思う。