Edited at

Vagrant入門

More than 3 years have passed since last update.

手持ちのPCで開発していくと分けわかんない環境になっていって収集がつかなくなるので開発環境は仮想化しておくとやり直しや同じものを2台用意したりするのがとっても簡単になります。ツールはvagrantを使います。


準備

vagrantを動かすためにはvmwareかvirtualboxのどちらか仮想環境が必要です。今回はvirtualbox


virtualboxインストール

以下からダウンロードしてインストールします

https://www.virtualbox.org/


vagrant


vagrantインストール

以下からダウンロードしてインストールします

https://www.vagrantup.com/


centosで開発環境を作ってみる

vagrantは元になるosの雛形を自由に選べます

以下で検索して好きな雛形を見つけてください。

https://vagrantcloud.com/discover/featured

今回はcentosを例にします


初期化

mkdir Vagrant

cd Vagrant
vagrant init chef/centos-6.5

Vagrantfileという開発環境設定ファイルが出来上がります


Vagrantfileを編集

今回は2台分の環境を作成します

Vagrantfileに設定してあげるだけで2台用意できます


  • host
    仮想開発環境の親分

  • sandbox
    遊び倒して問題があったら気楽に消せる砂場

vi Vagrantfile

config.vm.box = "chef/centos-6.5"の行(13行目あたり)をコメントアウトして以下を追記します

- config.vm.box = "chef/centos-6.5"

+ # config.vm.box = "chef/centos-6.5"

+ config.vm.define "host" do |node|
+ node.vm.box = "chef/centos-6.5"
+ node.vm.hostname = "host"
+ node.vm.network :private_network, ip: "192.168.66.51"
+ end
+
+ config.vm.define "sandbox" do |node|
+ node.vm.box = "chef/centos-6.5"
+ node.vm.hostname = "sandbox"
+ node.vm.network :private_network, ip: "192.168.66.52"
+ end


vagrant 起動!

vagrant up

2台立ち上がったか確認します

$ vagrant status

Current machine states:

host running (virtualbox)
sandbox running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.


接続確認

vagrant ssh host

vagrant ssh sandbox

確認できたらexitで抜けてくる


sandboxを操作設定

hostからsandboxを操作できるように設定していきます


ssh設定

hostに接続して

vagrant ssh host

ssh設定して

vi .ssh/config

Host sandbox

HostName 192.168.66.52

chmod 600 .ssh/config

ssh-keygen -t rsa # いろいろ聞かれるが開発環境なので全部エンターでok

ssh-copy-id sandbox

Are you sure you want to continue connecting (yes/no)? yes
vagrant@192.168.66.52's password: #vagrantのパスワードは vagrant

確認

ssh sandbox

接続確認できたらexitしてhostに戻ります


構成管理(ansible)インストール

開発環境を簡単にセットアップできるようにansibleという構成管理ツールを入れます

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

sudo rpm -Uvh epel-release-6-8.noarch.rpm
sudo yum -y install ansible
ansible --version # 確認

設定ファイルを作成

mkdir ansible

cd ansible
vi hosts # ansible対象環境の設定

[sandbox]

192.168.66.52

vi ansible.cfg # ansible設定


~/ansible/ansible.cfg

[defaults]

hostfile = ./hosts

ping確認

pongと返ってくればok!

$ ansible all -m ping

192.168.66.52 | success >> {
"changed": false,
"ping": "pong"
}

今回はansibleにはあまり触れてませんがこれを利用してプロジェクトごとに開発に必要なパッケージを設定しておいて別々に構築とかできるようになるので便利です。


vagrant終了

hostからexitで抜けたあと以下のコマンドで2台ともshutdownできます

vagrant halt


まとめ


  • node.js用、solr用などいろいろ開発環境をhostのansibleからインストールできるので便利

  • インストールパッケージを設定ファイルに記述できるので再利用しやすい

  • 以前vagrantを触ったときは手こずった気がしてたが今回はすんなりいった。安定してきたのかな?

  • ansibleもドキュメントが豊富でわかりやすくなってきた。英語だけどねorz http://docs.ansible.com/

  • スナップショット、dockerを利用してもうちょっと便利にしたい