狠狠撸

狠狠撸Share a Scribd company logo
デプロイツールの
  検証の話
  @shiba_yu36
自己绍介
shiba_yu36         &      shibayu36


                                  or etc...
  http://blog.hatena.ne.jp/shiba_yu36
Work
? 株式会社はてな
? アプリケーションエンジニア
 ? はてなブログ
 ? 外部API、課金などの基盤周り
やっていること
? perlbrew.el
? Kyoto.pm
? Cinnamon
本日のお話
? Cinnamonの軽い紹介
? デプロイツールの動作をローカルのみ
 で検証
Cinnamon
Cinnamon
? perl製デプロイツール
? perlでDSLっぽく設定を書ける
? capistranoが複雑で辛かったので、
 もっとシンプルなものを作ろう
环境とタスクの组み合わせ
con?g/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;
};
実行
? cinnamon (role) (task)
? cinnamon production update
デモ
? まとめてあとでやります
デプロイツールを
ローカルのみで検証
開発時に困ること
? デプロイツールだからサーバが必要
? 複数台にデプロイとか試そうとしても
 サーバ二台も持ってないし

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

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

    信頼性が低下!
対策
?ローカルだけでやりたいん
 ですよ

?VM利用を考える

? Vagrantが簡単そう
Vagrant
? VMをCLIから立ち上げられるツール
? VMの設定はRubyで書ける
複数VM設定
? Vagrantでは一度に複数台VMを立ち上
 げられる

? 复数台のテストをしたいので最适
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
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とかでも)
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セットアップ用に適当に
vagrant up
VMにデプロイ
? 立ち上がったVMに向けてデプロイ
 ? roleで指定
 ? vagrant ssh-con?gでSSHの設定必要
デモ
? vagrantでVM立ち上げ
? Cinnamonでそれらのサーバにデプロ
 イ

 ? update, installdeps, start
? 確認
130412 kayac-cinnamon
130412 kayac-cinnamon
130412 kayac-cinnamon
130412 kayac-cinnamon
proveと組み合わせ
? ここまででローカルのVMの環境を自由
 にセットアップ可能に

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

? Author Testとして
proveと組み合わせ

my $out = qx{ cinnamon production update };
like $out, qr{[success]: web1, web2};
参考
? shibayu36/cinnamon-deploy-sample
? shibayu36/cinnamon-test
まとめ
? デプロイツールCinnamonのご紹介
? vagrantを使ったローカルでの検証
? サーバとの通信が発生するものは同じ
 手法である程度検証可能

? capistrano, cinnamon
? chef, puppet
Ad

Recommended

Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
?
痴补驳谤补苍迟环境の础苍蝉颈产濒别を速くしたい
痴补驳谤补苍迟环境の础苍蝉颈产濒别を速くしたい
Kazuhiro Oinuma
?
さくらのインフラコード
さくらのインフラコード
Yukihiko SAWANOBORI
?
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
?
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
Masashi Shinbara
?
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Hidetoshi Hirokawa
?
ビルドサーバで使う顿辞肠办别谤
ビルドサーバで使う顿辞肠办别谤
Masashi Shinbara
?
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
?
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
Kamimura Taichi
?
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
?
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
Shinji Tanaka
?
颁丑别蹿社内勉强会(第1回)
颁丑别蹿社内勉强会(第1回)
Yoshinori Nakanishi
?
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
?
颁丑别蹿概论とレシピ実践入门
颁丑别蹿概论とレシピ実践入门
Kazuto Ohara
?
颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较
Sugawara Genki
?
Devlove mackerel
Devlove mackerel
Daisuke Kasuya
?
谁でも出来るローカル开発环境の作り方
谁でも出来るローカル开発环境の作り方
666oh666
?
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
?
础苍蝉颈产濒别て?始めるインフラ构筑自动化
础苍蝉颈产濒别て?始めるインフラ构筑自动化
dcubeio
?
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
?
Cinnamon - simple deploy tool
Cinnamon - simple deploy tool
Yuki Shibazaki
?
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク ? Kondate ?
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク ? Kondate ?
Naotoshi Seo
?
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
Yukihiko SAWANOBORI
?
顿别惫翱辫蝉を実现する颁丑别蹿活用テクニック
顿别惫翱辫蝉を実现する颁丑别蹿活用テクニック
Yusuke Ando
?
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネット株式会社
?
130427 kansai-emacs-github
130427 kansai-emacs-github
Yuki Shibazaki
?

More Related Content

What's hot (20)

ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
?
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
Kamimura Taichi
?
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
?
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
Shinji Tanaka
?
颁丑别蹿社内勉强会(第1回)
颁丑别蹿社内勉强会(第1回)
Yoshinori Nakanishi
?
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
?
颁丑别蹿概论とレシピ実践入门
颁丑别蹿概论とレシピ実践入门
Kazuto Ohara
?
颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较
Sugawara Genki
?
Devlove mackerel
Devlove mackerel
Daisuke Kasuya
?
谁でも出来るローカル开発环境の作り方
谁でも出来るローカル开発环境の作り方
666oh666
?
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
?
础苍蝉颈产濒别て?始めるインフラ构筑自动化
础苍蝉颈产濒别て?始めるインフラ构筑自动化
dcubeio
?
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
?
Cinnamon - simple deploy tool
Cinnamon - simple deploy tool
Yuki Shibazaki
?
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク ? Kondate ?
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク ? Kondate ?
Naotoshi Seo
?
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
Yukihiko SAWANOBORI
?
顿别惫翱辫蝉を実现する颁丑别蹿活用テクニック
顿别惫翱辫蝉を実现する颁丑别蹿活用テクニック
Yusuke Ando
?
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネット株式会社
?
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
?
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
Kamimura Taichi
?
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
?
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
惭补肠办别谤别濒による?简単サーバー管理入门と発展形
Shinji Tanaka
?
颁丑别蹿社内勉强会(第1回)
颁丑别蹿社内勉强会(第1回)
Yoshinori Nakanishi
?
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
?
颁丑别蹿概论とレシピ実践入门
颁丑别蹿概论とレシピ実践入门
Kazuto Ohara
?
颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较
Sugawara Genki
?
谁でも出来るローカル开発环境の作り方
谁でも出来るローカル开発环境の作り方
666oh666
?
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
?
础苍蝉颈产濒别て?始めるインフラ构筑自动化
础苍蝉颈产濒别て?始めるインフラ构筑自动化
dcubeio
?
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
?
Cinnamon - simple deploy tool
Cinnamon - simple deploy tool
Yuki Shibazaki
?
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク ? Kondate ?
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク ? Kondate ?
Naotoshi Seo
?
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
Yukihiko SAWANOBORI
?
顿别惫翱辫蝉を実现する颁丑别蹿活用テクニック
顿别惫翱辫蝉を実现する颁丑别蹿活用テクニック
Yusuke Ando
?
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネット株式会社
?

Viewers also liked (7)

130427 kansai-emacs-github
130427 kansai-emacs-github
Yuki Shibazaki
?
Confluence &JIRA 導入までの軌跡
Confluence &JIRA 導入までの軌跡
CLARA, Inc.
?
5分で出来る!イケてる肠辞苍蹿濒耻别苍肠别ページ
5分で出来る!イケてる肠辞苍蹿濒耻别苍肠别ページ
CLARA, Inc.
?
贬罢罢笔/2の现状とこれから
贬罢罢笔/2の现状とこれから
shigeki_ohtsu
?
Ad

Similar to 130412 kayac-cinnamon (20)

恋に落ちるテ?フ?ロイツール
恋に落ちるテ?フ?ロイツール
totty jp
?
自动テ?フ?ロイ
自动テ?フ?ロイ
Iku Yamamoto
?
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
?
Capistrano
Capistrano
Yasuharu Fukuda
?
自动化ハンス?オン
自动化ハンス?オン
VirtualTech Japan Inc.
?
开発现场で活用する痴补驳谤补苍迟
开発现场で活用する痴补驳谤补苍迟
Masashi Shinbara
?
Rails on GKEて?運用するWebアフ?リケーションの紹介
Rails on GKEて?運用するWebアフ?リケーションの紹介
Makoto Haruyama
?
Developer summit continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
Kohsuke Kawaguchi
?
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Masaki Yamamoto
?
Application Deployment on AWS
Application Deployment on AWS
Eiji Shinohara
?
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
?
cloudstack devcloud
cloudstack devcloud
Kimihiko Kitase
?
20200129 bydstudy kashiwagi
20200129 bydstudy kashiwagi
beyond Co., Ltd.
?
Scalr hands on
Scalr hands on
Haruhiko KAJIKAWA
?
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
Wataru NOGUCHI
?
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
npsg
?
毎日が憧れの新筑、反復可能なデリバリーによる常时新筑システム
毎日が憧れの新筑、反復可能なデリバリーによる常时新筑システム
Tomohiro Ohtake
?
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
Go Sueyoshi (a.k.a sue445)
?
恋に落ちるテ?フ?ロイツール
恋に落ちるテ?フ?ロイツール
totty jp
?
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
?
开発现场で活用する痴补驳谤补苍迟
开発现场で活用する痴补驳谤补苍迟
Masashi Shinbara
?
Rails on GKEて?運用するWebアフ?リケーションの紹介
Rails on GKEて?運用するWebアフ?リケーションの紹介
Makoto Haruyama
?
Developer summit continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
Kohsuke Kawaguchi
?
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Masaki Yamamoto
?
Application Deployment on AWS
Application Deployment on AWS
Eiji Shinohara
?
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
?
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
Wataru NOGUCHI
?
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
npsg
?
毎日が憧れの新筑、反復可能なデリバリーによる常时新筑システム
毎日が憧れの新筑、反復可能なデリバリーによる常时新筑システム
Tomohiro Ohtake
?
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
Go Sueyoshi (a.k.a sue445)
?
Ad

130412 kayac-cinnamon