目的
環境構築の自動化
各サーバにおけるミドルウェアのバージョン・conf設定管理をを集約
冪等性
最終的には1コマンドでローカル環境の構築から本番環境用ミドルウェアの管理、conf設定、mysqlレプリケーションの設定なども行います。
ansibleとに似たインフラストラクチャ自動化フレームワークでchef等もありますが、
個人的にchefより使いやすいと感じたので少し記載します。
前編では、下準備のためVagrant+virtualboxでのローカル環境用下準備について簡単に説明します。
・本稿で扱う事
Vagrant+virtualboxで複数のインスタンス(webサーバ,dbサーバ等)を含むローカル環境を用意
・Vagrant
開発環境を簡単に構築・管理し、配布することができる開発環境作成ツールです。
今回はwebサーバ、cacheサーバ,mysqlサーバ..
のように複数インスタンスをローカル環境でも簡単に構築でき、
他者への配布が容易であるため使用しています。
今回はwebサーバ1台、memcachedサーバ一台、mysqlサーバ2台を作成します。
・用意するもの
VirtualBox
https://www.virtualbox.org/wiki/Downloads
Vagrant
https://www.vagrantup.com
macの場合、下記のようにbrew caskでもOKです。
brew cask install virtualbox
brew cask install vagrant
・boxファイルの用意
雛形となるboxを用意
もちろんcentos以外も選択可能です。
vagrant box add centos6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
下記コマンドでcentOSが入ったことを確認
vagrant box list
下記表示になれば成功
centos6.5 (virtualbox, 0)
・複数インスタンスを用意
ここでwebサーバ1台、memcachedサーバ一台、mysqlサーバ2台用のディレクトリを作成します。
仮想サーバ1台の場合はweb等のディレクトリでも構いませんが今回は複数サーバーを構築するため
totalとします。
mkdir total
cd ./total
下記コマンドでVagrantfileを作成します。
vagrant init
最新バージョンの場合、デフォルトVagrantfileにも設定方法がコメントアウトされ記載されています。
・Vagrantfile設定
今回はVagrantfileで下記のように設定しました。
コメントアウト内に説明を記載しています。
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define :web01 do |web| # 上記do |config|のconfigと紐付いています。
web.vm.box = "centos6.5" #作成したbox名を指定
web.vm.network :private_network, ip:"192.168.20.10"#複数インスタンスを
#用意しているためprivateipを設定。
#publicも可能
web.ssh.insert_key=false
web.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 1024, "--cpus", "1", "--ioapic", "off"]
end # インスタンスのメモリ、cpu数を設定しています。 do |v|とv.customizeのvが紐付いています。
end # cpuを複数に設定する場合は--ioapicをonにします。
config.vm.define :dbm01 do |dbm|
dbm.vm.box = "centos6.5"
dbm.vm.network :private_network, ip:"192.168.30.10"
dbm.ssh.insert_key=false
dbm.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 512, "--cpus", "1", "--ioapic", "off"]
end
end
config.vm.define :dbs02 do |dbs|
dbs.vm.box = "centos6.5"
dbs.vm.network :private_network, ip:"192.168.30.11"
dbs.ssh.insert_key=false
dbs.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 512, "--cpus", "1", "--ioapic", "off"]
end
end
config.vm.define :mem01 do |mem|
mem.vm.box = "centos6.5"
mem.vm.network :private_network, ip:"192.168.40.10"
mem.ssh.insert_key=false
mem.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 512, "--cpus", "1", "--ioapic", "off"]
end
end
end
下記コマンドで起動。
vagrant up
対象インスタンスを指定してssh接続
vagrant ssh web01
これにてローカル環境用のインスタンス用意は完了です。
Vagrant+virtualboxについては下記リンク先で頻出コマンド、設定のカスタムに空いて記載しています。
[Vagrant+Ansible+VirtualBoxでlocal・本番構築自動化] のおまけ