Jun Tanaka
シーエー・モバイル/テキストマイニング・シンポジウム/
(CentOS6, MySQL, Nginx,Rails4)
vagrant & ansible



安心して開発環境を構築する
開発端末の故障による被害を軽減する
サーバ設定を行うツール
パッケージをインストール
Puppet, Chef, Ansible, ...?

シンプル(ymlのみ)
エージェント不要
ネットワーク設定(ポート転送)
(optional)Provisioner
Vagrant.configure("2") do |config|
config.vm.define :web do |web_config|
web_config.vm.box = "centos64"
#web_config.vm.box_url = "http://files.vagrantup.com/precise64.box"
web_config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.5-x86_64-v20140110.box"
web_config.vm.network :private_network, ip: "33.33.33.33"
web_config.vm.network :forwarded_port, guest: 3000, host: 8080
web_config.vm.hostname = "develop-centos"
web_config.vm.provider :virtualbox do |vb|
vb.memory = 1024
end
config.vm.provision :ansible do |ansible|
ansible.playbook = "provision/playbook_vagrant.yml"
ansible.inventory_path = "provision/dev_hosts"
ansible.limit = 'all'
ansible.verbose = 'vvv'
end
end
end
- name: setting rails to server
hosts: dev_server
user: vagrant
sudo: yes
vars:
app_name: geeknews
environtment: vagrant
mysql_port: 3306
home: "/home/{{user}}"
user: vagrant
src_dir: '/usr/local/src'
ruby_version: '2.1.2'
rails:
dir: /var/www/rails/
roles:
- common
- mysql
- ruby
- rails
#- nginx
Module > Command > Shell
ShellやCommandは検査の機構が無く、
現状と結果の差を確認せずにコマンドを実行してしまう
Railsとか、PlayBookの中でバージョンを
指定した方が良いのでは?
厳密な冪等性を保てないのでは。。。
-f FORKS, --forks=FORKS
specify number of parallel processes to use
(default=5) -C, --check don't make any changes; instead, try to predict some
of the changes that may occur
--step one-step-at-a-time: confirm each task before running
ansible-playbook provisioning/production_web.yml --tags "nginx"
role単位(何度繰り返しても同じ結果になることを確認)
全体を通してテスト(roleの順番、パッケージの依存関係による問題がないことを確認)
namespace :deploy do
desc 'Deploy using Ansible'
task :ansible do
hosts = "#{Rails.root}/playbook/hosts"
playbook = "#{Rails.root}/playbook/deploy.yml"
system "ansible-playbook -i #{hosts} #{playbook}"
end
endrake deploy:ansible
https://github.com/hico-horiuchi/ansible-rails-deploy
https://github.com/tjnet/vagrant_sakuravps_rails
By Jun Tanaka
This will provision a Rails box suitable for production sakura VPS use running Nginx, Unicorn and MySQL on a CentOS 6.x server or local Vagrant environment. It should allow you to have a development environment that is identical to your production environment