Successfully reported this slideshow.
Your SlideShare is downloading. ×

130412 kayac-cinnamon

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 32 Ad

More Related Content

Slideshows for you (20)

Advertisement

Similar to 130412 kayac-cinnamon (20)

130412 kayac-cinnamon

  1. 1. デプロイツールの 検証の話 @shiba_yu36
  2. 2. 自己紹介
  3. 3. shiba_yu36 & shibayu36 or etc... http://blog.hatena.ne.jp/shiba_yu36
  4. 4. Work • 株式会社はてな • アプリケーションエンジニア • はてなブログ • 外部API、課金などの基盤周り
  5. 5. やっていること • perlbrew.el • Kyoto.pm • Cinnamon
  6. 6. 本日のお話 • Cinnamonの軽い紹介 • デプロイツールの動作をローカルのみ で検証
  7. 7. Cinnamon
  8. 8. Cinnamon • perl製デプロイツール • perlでDSLっぽく設定を書ける • capistranoが複雑で辛かったので、 もっとシンプルなものを作ろう
  9. 9. 環境とタスクの組み合わせ
  10. 10. config/deploy.pl use Cinnamon::DSL; set user => 'johndoe'; # required set deploy_to => '/path/to/dir'; role production => # declare server ['server01.host', 'server02.host']; task update => sub { my ($host, @args) = @_; my $deploy_to = get('deploy_to'); remote { run "cd $deploy_to && git pull"; } $host; };
  11. 11. 実行 • cinnamon (role) (task) • cinnamon production update
  12. 12. デモ • まとめてあとでやります
  13. 13. デプロイツールを ローカルのみで検証
  14. 14. 開発時に困ること • デプロイツールだからサーバが必要 • 複数台にデプロイとか試そうとしても サーバ二台も持ってないし • まあ試さなくてもいいか
  15. 15. 開発時に困ること • デプロイツールだからサーバが必要 • 複数台にデプロイとか試そうとしても サーバ二台も持ってないし • まあ試さなくてもいいか 信頼性が低下!
  16. 16. 対策 •ローカルだけでやりたいん ですよ •VM利用を考える • Vagrantが簡単そう
  17. 17. Vagrant • VMをCLIから立ち上げられるツール • VMの設定はRubyで書ける
  18. 18. 複数VM設定 • Vagrantでは一度に複数台VMを立ち上 げられる • 複数台のテストをしたいので最適
  19. 19. VM二台分の設定 Vagrant.configure("2") do |config| config.vm.box = "precise32" config.vm.define :web1 do |web| web.vm.network :private_network, ip: "192.168.1.11" web.vm.network :forwarded_port, host: 8001, guest: 8000 web.vm.provision :shell, :path => "script/setup.sh" end config.vm.define :web2 do |web| web.vm.network :private_network, ip: "192.168.1.12" web.vm.network :forwarded_port, host: 8002, guest: 8000 web.vm.provision :shell, :path => "script/setup.sh" end end
  20. 20. Vagrant.configure("2") do |config| config.vm.box = "precise32" config.vm.define :web1 do |web| web.vm.network :private_network, ip: "192.168.1.11" web.vm.network :forwarded_port, host: 8001, guest: 8000 web.vm.provision :shell, :path => "script/setup.sh" end • VM1台の設定 config.vm.define :web2 do |web| web.vm.network :private_network, ip: "192.168.1.12" web.vm.network :forwarded_port, host: 8002, guest: 8000 • network (IP, port forward) web.vm.provision :shell, :path => "script/setup.sh" end • 初期セットアップ(provision) end • setup用script作る(chefとかでも)
  21. 21. script/setup.sh #!/bin/bash sudo aptitude update sudo aptitude install -y build-essential sudo aptitude install -y curl sudo aptitude install -y git-core git-doc sudo aptitude install -y svtools daemontools daemontools-run sudo /sbin/initctl start svscan curl -L http://cpanmin.us | perl - --sudo App::cpanminus cpanm Carton VMセットアップ用に適当に
  22. 22. vagrant up
  23. 23. VMにデプロイ • 立ち上がったVMに向けてデプロイ • roleで指定 • vagrant ssh-configでSSHの設定必要
  24. 24. デモ • vagrantでVM立ち上げ • Cinnamonでそれらのサーバにデプロ イ • update, installdeps, start • 確認
  25. 25. proveと組み合わせ • ここまででローカルのVMの環境を自由 にセットアップ可能に • 実行の出力をproveすればテストが作 れる • Author Testとして
  26. 26. proveと組み合わせ my $out = qx{ cinnamon production update }; like $out, qr{[success]: web1, web2};
  27. 27. 参考 • shibayu36/cinnamon-deploy-sample • shibayu36/cinnamon-test
  28. 28. まとめ • デプロイツールCinnamonのご紹介 • vagrantを使ったローカルでの検証 • サーバとの通信が発生するものは同じ 手法である程度検証可能 • capistrano, cinnamon • chef, puppet

×