130412 kayac-cinnamon

32
デプロイツールの 検証の話 @shiba_yu36

Upload: yuki-shibazaki

Post on 17-Dec-2014

2.355 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 130412 kayac-cinnamon

デプロイツールの検証の話@shiba_yu36

Page 2: 130412 kayac-cinnamon

自己紹介

Page 3: 130412 kayac-cinnamon

shiba_yu36 shibayu36

or etc...

&

http://blog.hatena.ne.jp/shiba_yu36

Page 4: 130412 kayac-cinnamon

•株式会社はてな•アプリケーションエンジニア•はてなブログ•外部API、課金などの基盤周り

Work

Page 5: 130412 kayac-cinnamon

やっていること•perlbrew.el•Kyoto.pm•Cinnamon

Page 6: 130412 kayac-cinnamon

本日のお話• Cinnamonの軽い紹介•デプロイツールの動作をローカルのみで検証

Page 7: 130412 kayac-cinnamon

Cinnamon

Page 8: 130412 kayac-cinnamon

Cinnamon• perl製デプロイツール• perlでDSLっぽく設定を書ける• capistranoが複雑で辛かったので、もっとシンプルなものを作ろう

Page 9: 130412 kayac-cinnamon

環境とタスクの組み合わせ

Page 10: 130412 kayac-cinnamon

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;};

Page 11: 130412 kayac-cinnamon

実行• cinnamon (role) (task)• cinnamon production update

Page 12: 130412 kayac-cinnamon

デモ•まとめてあとでやります

Page 13: 130412 kayac-cinnamon

デプロイツールをローカルのみで検証

Page 14: 130412 kayac-cinnamon

開発時に困ること•デプロイツールだからサーバが必要•複数台にデプロイとか試そうとしてもサーバ二台も持ってないし

•まあ試さなくてもいいか

Page 15: 130412 kayac-cinnamon

開発時に困ること•デプロイツールだからサーバが必要•複数台にデプロイとか試そうとしてもサーバ二台も持ってないし

•まあ試さなくてもいいか

信頼性が低下!

Page 16: 130412 kayac-cinnamon

対策•ローカルだけでやりたいんですよ

•VM利用を考える•Vagrantが簡単そう

Page 17: 130412 kayac-cinnamon

Vagrant• VMをCLIから立ち上げられるツール• VMの設定はRubyで書ける

Page 18: 130412 kayac-cinnamon

複数VM設定• Vagrantでは一度に複数台VMを立ち上げられる

•複数台のテストをしたいので最適

Page 19: 130412 kayac-cinnamon

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

VM二台分の設定

Page 20: 130412 kayac-cinnamon

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

• VM1台の設定• network (IP, port forward)•初期セットアップ(provision)• setup用script作る(chefとかでも)

Page 21: 130412 kayac-cinnamon

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 daemontools daemontools-runsudo /sbin/initctl start svscancurl -L http://cpanmin.us | perl - --sudo App::cpanminuscpanm Carton

VMセットアップ用に適当に

Page 22: 130412 kayac-cinnamon

vagrant up

Page 23: 130412 kayac-cinnamon

VMにデプロイ•立ち上がったVMに向けてデプロイ• roleで指定• vagrant ssh-configでSSHの設定必要

Page 24: 130412 kayac-cinnamon

デモ• vagrantでVM立ち上げ• Cinnamonでそれらのサーバにデプロイ

• update, installdeps, start•確認

Page 25: 130412 kayac-cinnamon
Page 26: 130412 kayac-cinnamon
Page 27: 130412 kayac-cinnamon
Page 28: 130412 kayac-cinnamon
Page 29: 130412 kayac-cinnamon

proveと組み合わせ•ここまででローカルのVMの環境を自由にセットアップ可能に

•実行の出力をproveすればテストが作れる

• Author Testとして

Page 30: 130412 kayac-cinnamon

proveと組み合わせ

my $out = qx{ cinnamon production update };like $out, qr{\[success\]: web1, web2};

Page 32: 130412 kayac-cinnamon

まとめ•デプロイツールCinnamonのご紹介• vagrantを使ったローカルでの検証•サーバとの通信が発生するものは同じ手法である程度検証可能

• capistrano, cinnamon• chef, puppet