vagrant で仮想マシンが立ち上がったときに実行する処理の指定

vagrant で仮想マシンが立ち上がったときに実行する処理の指定
#09 Provisioningを使ってみよう (1)
http://dotinstall.com/lessons/basic_vagrant/24109
を参考に
仮想マシンが立ち上がったあとに実行される処理を
Provisioningで指定
Provisioning は
vagrant up が実行されたときに実行される一連の
処理のこと
前回は、サーバーを構築するときに
最小構成イメージマシンを作って
そこにログインしてコマンドを入力することで
作成していった
今回は、あらかじめ最初に自動でおこなう設定にする
わかりやすいように
新しく仮想マシンを作成する
cd /media/bdec1869-7820-4557-a76e-a8b130293019/
mkdir myCentOSVM2
でディレクトリ作成
ここに vagrantfile を作成する
cd myCentOSVM2/
vagrant init centos64
これで Vagrantfile ができるので編集していく
vim Vagrantfile
provisioningにはツールがあるけど
今回はシェルで設定する
config.vm.provision :shell,
として
命令をそのまま書くには
:inline =>
の後に実行するコードを書く
今回の場合、
config.vm.provision :shell, :inline => “echo hello world”

10行目の
config.vm.box = “centos64”
の下あたりに書き込む
vim で
:set number を実行すると行数がでる
保存したら
vagrant up で仮想マシン立ち上げ
いままでと違うのは
[default] Matching MAC address for NAT networking…
[default] Clearing any previously set forwarded ports…
[default] Forwarding ports…
[default] — 22 => 2222 (adapter 1)
[default] Creating shared folders metadata…
[default] Clearing any previously set network interfaces…
[default] Booting VM…
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders…
[default] — v-root: /vagrant
[default] Running provisioner: Vagrant::Provisioners::Shell…
hello world
というように、最後に
echo hello world
が実行されているということ
これを使うことで、インストールや設定などを
自動的に仮想マシン作成のときに行えるようになる

vagrant で共有フォルダ作成

vagrant で共有フォルダ作成
#08 共有フォルダを使ってみよう
http://dotinstall.com/lessons/basic_vagrant/24108
を参考に
仮想マシンに共有フォルダを作成し
ホストOSである Ubuntu から
仮想マシンのファイルを編集していく
Vagrant では共有フォルダの設定があり
仮想マシンの
/vagrant/Vagrantfile

ホストマシンの
vagrantfile
とリンクしている
このため
cd /vagrant/

vagrant ディレクトリに移動して
touch test
とすると
ホストマシンの
/media/bdec1869-7820-4557-a76e-a8b130293019/myCentOSVM
の中にも
test
というファイルができている
このため、
/vagrant

ドキュメントルートに設定することで
共有フォルダとして使える
まず
sudo rm -rf /var/www/html
でディレクトリごと削除
次に、
sudo ln -fs /vagrant /var/www/html

vagrant のシンボリックリンクを作成
ln -fs は
ln コマンドが、ファイルやディレクトリのリンクをはる
-fs はオプションで
-f がリンク先に同名のリンクファイルがあれば上書き
-s はシンボリックリンクの作成
となる
詳しくは
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230812/
を参考にするとわかりやすい
とりあえず、ここまでできたらログアウト
そして、
/myCentOSVM$
の中で
vim index.html
でファイルを作成し
内容をちょっと変えて hello from ubuntu
としてみた
これで、再度ブラウザで
http://192.168.33.10/
へアクセスして
この内容に変わっていたら成功

vagrant で作成したマシンでwebページ表示

vagrant で作成したマシンでwebページ表示
#07 Webページを表示させてみよう
http://dotinstall.com/lessons/basic_vagrant/24107
を参考に
仮想マシン内にindex.htmlを作り
ネットワークの設定をしたあとにブラウザから確認する
まず、
cd /var/www/html/
で移動
vi より vim のほうがなれているので
sudo yum -y install vim
で vim インストール
sudo vim index.html
でファイルを作成して
hello world
だけ書いて保存
ここまでできたら一度
ログアウト
ログアウトは
exit
でできるし
Ctrl + d でもできる
このままだと
ネットワーク設定の関係でアクセスできないので
Vagrantfile を編集する
vim Vagrantfile
でファイルを編集
config.vm.network :private_network, ip: “192.168.33.10”
のコメントアウトを外すらしいけど
OSの違い、もしくは vaersion の違いにより
存在しない
private network の代わりに
host-only network があり
# config.vm.network :hostonly, “192.168.33.10”
となっているので
これのコメントアウトをはずす
保存したら、設定反映のため
vagrant reload
を実行
これで、ブラウザで
192.168.33.10
へアクセスすると、hello world と表示される

vagrant で作成したマシンへアクセス

vagrant で作成したマシンへアクセス
#06 仮想マシンに接続してみよう
http://dotinstall.com/lessons/basic_vagrant/24106
を参考に
vagrant で作成したマシンへSSH接続し
web サーバーを立ち上げる
vagrant destroy で仮想マシンを破棄しても
Vagrantfile は残っているので
これを使って、再度作成
cd /media/bdec1869-7820-4557-a76e-a8b130293019/myCentOSVM/

Vagrantfile のあるディレクトリに移動して
vagrant up
を実行
これで仮想マシンが作成される
次に、仮想マシンへの接続
NATでアクセスする方法を考えたけど
vagrant ssh
で接続できる
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$
となり、vagrant というユーザでログインしているのが確認できる
まず、webサーバーのインストール
sudo yum -y install httpd
次に
sudo chkconfig httpd
でweb サーバー起動
sudo chkconfig httpd on
で次回起動時に自動起動する設定
sudo service iptables stop
で Linux ファイアウォール停止
sudo chkconfig iptables off
で次回起動時にFWが起動しないようにする

vagrant で立ち上げた仮想マシンの停止・再起動・削除

vagrant で立ち上げた仮想マシンの停止・再起動・削除
#05 仮想マシンの停止・再起動・削除
http://dotinstall.com/lessons/basic_vagrant/24105
を参考に
立ち上げた仮想マシンを
停止、終了、再起動、削除していく方法を学習
vagrant up で起動した仮想マシン
が稼働しているという前提
いくつかの操作コマンドがあるのでメモ
status
状態を確認
suspend
スリープ状態にする
resume
スリープからの復帰
halt
仮想マシンの終了
up
仮想マシンの起動
reload
仮想マシンの再起動
destroy
仮想マシンの破棄
では、実践
まず vagrant status
Current VM states:
default running
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 suspend で
[default] Saving VM state and suspending execution…
となり、停止
vagrant up とすれば
[default] VM already created. Booting if it’s not already running…
[default] Resuming suspended VM…
[default] Booting VM…
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
となり、起動する
vagrant resume
の代わりに
vagrant up でもOK
仮想マシンを廃棄するには
vagrant destroy

Are you sure you want to destroy the ‘default’ VM? [Y/N] y
[default] Forcing shutdown of VM…
[default] Destroying VM and associated drives…
となり削除される
稼働中であっても削除される
この削除された結果は
virtualbox にも反映される

vagrant で box をベースに仮想マシンの立ち上げ

vagrant で box をベースに仮想マシンの立ち上げ
#04 仮想マシンを立ち上げてみよう
http://dotinstall.com/lessons/basic_vagrant/24104
を参考に
box をベースにして仮想マシンを立ち上げ
一つのbox 、つまりテンプレから
いくつでも仮想マシンをつくれる
これは、AWSで仮想マシンを、他の人や自分がつくったAMIから仮想マシンをつくれるのとおなじ
仮想マシンをつくるときには
仮想マシンごとにディレクトリを作成する
VMware Player や VirtualBox をつかってみると
わかるけど
仮想マシンごとにディレクトリが作成されている
私の場合、SSD+HDDで
容量がSSDのほうでは少ないためHDD側に作成
mkdir /media/bdec1869-7820-4557-a76e-a8b130293019/myCentOSVM
cd /media/bdec1869-7820-4557-a76e-a8b130293019/myCentOSVM/
で作成したディレクトリに移動
次に、仮想マシンの初期化
vagrant init centos64
で初期化してVagrantfileが作成される
vagrant init で
仮想マシンの初期化
centos64 は box を指定している
box の確認は
ls ~/.vagrant.d/boxes
で確認できる
作成できているかは ls コマンドで確認できる
Vagrantfile
と表示されれば成功
この Vagrantfile は
ruby で書かれている設定ファイル
中身をみたいのなら
less Vagrantfile
読んでいて終了したいなら q をおす
この Vagrantfile をもとに仮想マシンが作成される
作成するには
Vagrantfile があるディレクトリで
vagrant up
を実行する
すでに実行状態になっているのが
VirtualBox を立ち上げると確認できる
端末から virtualbox とすれば
VirtualBox が起動する

vagrantbox.es から box の取得

vagrantbox.es から box の取得
#03 vagrantbox.esを使ってみよう
http://dotinstall.com/lessons/basic_vagrant/24103
を参考に
vagrantbox.esからBoxを取得する
今回は
http://www.vagrantbox.es
から
box を取得
今回取得するのは
CentOS 6.4 64bit Minimal という最小構成のOS
この
http://www.vgrantbox.es
には、様々な構成の box がある
このbox は有志の人が作っているので非公式なので
自己責任で利用する
vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box

box に追加する予定だったが
[vagrant] Extracting box…
[vagrant] Cleaning up downloaded box…
Failed to untar the box file. This is usually because you’re
attempting to add a box that isn’t a valid box file. Please
double check that the box file is properly packaged.
となるので、別の方法を探すことに
http://d.hatena.ne.jp/ux00ff/20130715/1373856937
を参考に
add するファイルを
CentOS-6.4-x86_64-v20130309.box
にした
vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130309.box
box に追加できているか確認するため
vagrant box list 確認できる
vagrant
で使えるコマンドについては
vagrant box -h
で調べることが できる
box の削除は
vagrant box remove でできる
ちなみに、追加された box は
~/.vagrant.d/boxes
に格納されている
確認するなら
ls ~/.vagrant.d/boxes
ここにキャッシュされた box を元に
仮想マシンの初期化、起動を行っていく

Vagrant で box 取得

Vagrant で box 取得
#02 Boxを取得してみよう
http://dotinstall.com/lessons/basic_vagrant/24102

を参考に
仮想マシンのテンプレになるBox を取得
実行環境は Ubuntu 12.04 64bit
仮想マシン立ち上げには手順があり
まず、box を取得
box は 仮想マシンのテンプレート
次に、仮想マシンの初期化
そして、仮想マシンを起動する
という流れになる
今回は、box を公式サイトにあるものを取得
http://docs.vagrantup.com/v2/getting-started/boxes.html
を参照
box 取得には
vagrant add コマンドを使う
vagrant box add precise32 http://files.vagrantup.com/precise32.box
とあるけど
これは、box の名前を precise32 にしている
仮想マシンの名前を決めていると考えるとわかりやすい
http://files.vagrantup.com/precise32.box
は実際に取得するファイルのURL
つまり、wget コマンドで取得するようなかんじ
取得完了後
box 一覧を確認したい場合
vagrant box list
で確認できる

Vagrant について

Vagrant について
vagrantは、仮想マシンをたちあげるツール
#01 Vagrantとはなにか?
http://dotinstall.com/lessons/basic_vagrant/24101
を元に学習
公式サイトは
http://www.vagrantup.com
必要な知識は
Linux コマンド知識
そして
ruby が必要
vagrant は ruby でできているから
また仮想マシン作成には
そのためにツールが必要
今回は
VirtualBox
ほかにも
VM ware とか Amazon EC2 など
Ubuntu の場合、ソフトウェアセンターから
インストールできるけど
バージョンが少し古くなる
vagrant –version
でバージョン確認できる
ちなみに、ソフトウェアセンターでいれたら
Vagrant version 1.0.1
となりました