Your SlideShare is downloading. ×
130412 kayac-cinnamon
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

130412 kayac-cinnamon

2,359
views

Published on


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

No Downloads
Views
Total Views
2,359
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. デプロイツールの 検証の話 @shiba_yu36
  • 2. 自己紹介
  • 3. shiba_yu36 & shibayu36 or etc... http://blog.hatena.ne.jp/shiba_yu36
  • 4. Work• 株式会社はてな• アプリケーションエンジニア • はてなブログ • 外部API、課金などの基盤周り
  • 5. やっていること• perlbrew.el• Kyoto.pm• Cinnamon
  • 6. 本日のお話• Cinnamonの軽い紹介• デプロイツールの動作をローカルのみ で検証
  • 7. Cinnamon
  • 8. Cinnamon• perl製デプロイツール• perlでDSLっぽく設定を書ける• capistranoが複雑で辛かったので、 もっとシンプルなものを作ろう
  • 9. 環境とタスクの組み合わせ
  • 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. 実行• cinnamon (role) (task)• cinnamon production update
  • 12. デモ• まとめてあとでやります
  • 13. デプロイツールをローカルのみで検証
  • 14. 開発時に困ること• デプロイツールだからサーバが必要• 複数台にデプロイとか試そうとしても サーバ二台も持ってないし• まあ試さなくてもいいか
  • 15. 開発時に困ること• デプロイツールだからサーバが必要• 複数台にデプロイとか試そうとしても サーバ二台も持ってないし• まあ試さなくてもいいか 信頼性が低下!
  • 16. 対策•ローカルだけでやりたいん ですよ•VM利用を考える• Vagrantが簡単そう
  • 17. Vagrant• VMをCLIから立ち上げられるツール• VMの設定はRubyで書ける
  • 18. 複数VM設定• Vagrantでは一度に複数台VMを立ち上 げられる• 複数台のテストをしたいので最適
  • 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. 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. 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. vagrant up
  • 23. VMにデプロイ• 立ち上がったVMに向けてデプロイ • roleで指定 • vagrant ssh-configでSSHの設定必要
  • 24. デモ• vagrantでVM立ち上げ• Cinnamonでそれらのサーバにデプロ イ • update, installdeps, start• 確認
  • 25. proveと組み合わせ• ここまででローカルのVMの環境を自由 にセットアップ可能に• 実行の出力をproveすればテストが作 れる• Author Testとして
  • 26. proveと組み合わせmy $out = qx{ cinnamon production update };like $out, qr{[success]: web1, web2};
  • 27. 参考• shibayu36/cinnamon-deploy-sample• shibayu36/cinnamon-test
  • 28. まとめ• デプロイツールCinnamonのご紹介• vagrantを使ったローカルでの検証• サーバとの通信が発生するものは同じ 手法である程度検証可能• capistrano, cinnamon• chef, puppet