130412 kayac-cinnamon

2,675 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,675
On SlideShare
0
From Embeds
0
Number of Embeds
1,956
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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.pluse Cinnamon::DSL;set user => johndoe; # requiredset 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" endend
  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/bashsudo aptitude updatesudo aptitude install -y build-essentialsudo aptitude install -y curlsudo aptitude install -y git-core git-docsudo aptitude install -y svtools daemontoolsdaemontools-runsudo /sbin/initctl start svscancurl -L http://cpanmin.us | perl - --sudoApp::cpanminuscpanm 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

×