130412 kayac-cinnamon

Post on 17-Dec-2014

2.355 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

自己紹介

shiba_yu36 shibayu36

or etc...

&

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

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

Work

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

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

Cinnamon

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

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

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

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

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

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

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

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

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

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

信頼性が低下!

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

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

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

複数VM設定• Vagrantでは一度に複数台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

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

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

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セットアップ用に適当に

vagrant up

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

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

• update, installdeps, start•確認

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

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

• Author Testとして

proveと組み合わせ

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

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

• capistrano, cinnamon• chef, puppet

top related