1.初めに
最近、Chefによる開発環境の構築を行なう機会がありましたので
自分自身の備忘録も兼ねて記事を投稿させていただきます。
- 対象読者:Chefに興味のある初心者
- 動作検証端末:OS X Marverics
複数稿に分けて書いていきますが最終的には、Vagrant+VirtualBoxで
構築した仮想環境上にChef-Soloを使用してnginx+PHPの環境を構築する、
という所まで書き上げる予定です。
まずは「Vagrant+VirtualBoxによる仮想環境の構築と簡単な動作確認」まで。
(本稿ではchefは出てきません。)
2.VirtualBoxのインストール
まず、以下のURLからインストーラをダウンロードします。
https://www.virtualbox.org
左メニューの「Download」より、自身の環境にあったものをダウンロードして
インストールします。
3.Vagrantのインストール
次に、以下のURLからインストーラをダウンロードします。
http://www.vagrantup.com
上部メニューの「Download」より、自身の環境にあったものをダウンロードして
インストールします。
ターミナルからvagrant --version
と入力してバージョン情報が出力されれば成功です。
私が検証したときには以下のようになりました。
$ vagrant --version
Vagrant 1.6.2
4.ゲストマシンの構築から破棄まで
Vagrantで使用したいOSのイメージを取得します。
このOSのイメージをVagrantでは「box」といいます。
boxは、自分で作ることも可能ですがインターネットに公開されているものがありますので、
これを使わせていただきます。
4.1.boxの追加
vagrant box add {title} {url}
でboxを追加します。
以下のように入力し、CentOS6.5のOSイメージをaddします。
$ vagrant box add github-centos-6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
==> box: Adding box 'github-centos-6.5' (v0) for provider:
box: Downloading: https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
==> box: Successfully added box 'github-centos-6.5' (v0) for 'virtualbox'!
成功しました。
vagrant box list
でboxが追加されていることを確認します。
$ vagrant box list
github-centos-6.5 (virtualbox, 0)
追加したboxが現れました。
4.2.初期化
追加したboxを使用してvagrant init {title}
で初期化します。
$ mkdir vagrant_getting_started
$ cd vagrant_getting_started
$ vagrant init github-centos-6.5
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.
成功していればVagrantfile
という設定ファイルが作られますが、今は放置します。
4.3.起動
そして、vagrant up
で、起動します。
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'github-centos-6.5'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant_getting_started_default_1401622241313_3001
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
default: /vagrant => /Users/nakagawadaisuke/vagrant_getting_started
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`.
無事に起動したようです。
4.4.SSHアクセス
vagrant ssh
でゲストマシンへSSHアクセスしてみましょう。
$ vagrant ssh
[vagrant@vagrant-centos65 ~]$ cat /etc/redhat-release
CentOS release 6.5 (Final)
構築した仮想環境へログインできました。
ちなみにWindowsの場合はPuTTY等でログインする必要があります。
4.5.サスペンド、レジューム
vagrant suspend
と入力することでサスペンド状態にできます。
$ vagrant suspend
==> default: Saving VM state and suspending execution...
$ vagrant status
Current machine states:
default saved (virtualbox)
To resume this VM, simply run `vagrant up`.
サスペンド状態にすると、その時点での状況を保存して停止します。
vagrant resume
と入力するサスペンドした時点の状況で再び起動します。
$ vagrant resume
==> default: Resuming suspended VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
==> default: Machine booted and ready!
$ 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`.
runningの状態に戻りました。
vagrant up
でも、同様に起動できます。
4.6.停止
停止は、vagrant halt
です。
$ vagrant halt
==> default: Attempting graceful shutdown of VM...
$ vagrant status
Current machine states:
default poweroff (virtualbox)
The VM is powered off. To restart the VM, simply run `vagrant up`
停止してpoweroff状態になりました。
また、ゲストマシンを起動する際には、vagrant up
で起動できます。
4.7.破棄
vagrant destroy
でゲストマシンを破棄します。
このとき本当に削除するかの確認が入りますが、vagrant destroy --force
とすることで確認を省けます。
ゲストマシンを破棄すると仮想ハードディスクは削除されます。
$ vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives...
$ vagrant status
Current machine states:
default not created (virtualbox)
The environment has not yet been created. Run `vagrant up` to
create the environment. If a machine is not created, only the
default provider will be shown. So if a provider is not listed,
then the machine is not created for that environment.
not created状態に遷移しました。
こちらもvagrant up
で再びゲストマシンの構築を行なえます。
5.コマンドのまとめ
本稿で使用したコマンドについて、以下にまとめます。
コマンド | 説明 |
---|---|
vagrant box add {title} {url} | boxの追加 |
vagrant box list | addしたboxの一覧 |
vagrant init {title} | 初期化、Vagrantfile作成 |
vagrant up | ゲストマシンの起動 |
vagrant status | ゲストマシンの状態表示 |
vagrant ssh | ゲストマシンへのSSH接続 |
vagrant suspend | ゲストマシンのサスペンド |
vagrant resume | ゲストマシンのサスペンドからの復帰 |
vagrant halt | ゲストマシンの停止 |
vagrant destroy | ゲストマシンの破棄 |
6. 次回予告
とりあえず簡単ではありますがVagrant+VirtualBoxによる仮想環境の構築まではできました。
chefに興味のある方を対象に書いた記事でしたがchefには触れず終いなのが引掛かりますが。。。
次回は、chefを使用したプロビジョニングとしてApacheの導入自動化をやりたいと思います。(予定)