手持ちのPCで開発していくと分けわかんない環境になっていって収集がつかなくなるので開発環境は仮想化しておくとやり直しや同じものを2台用意したりするのがとっても簡単になります。ツールはvagrantを使います。
準備
vagrantを動かすためにはvmwareかvirtualboxのどちらか仮想環境が必要です。今回はvirtualbox
virtualboxインストール
以下からダウンロードしてインストールします
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設定
[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を利用してもうちょっと便利にしたい