my tool for web application

20
My tool for Web Application @koudaiii at 2015/1/27

Upload: -

Post on 16-Jul-2015

1.441 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: My tool for web application

My tool for Web Application

@koudaiii at 2015/1/27

Page 2: My tool for web application

Profile

id: koudaiii fullname: Kodai Sakabe

Page 3: My tool for web application

Attention• 個人が読んできたor読み中の書籍を紹介

• 私個人が2年ほど利用して、外せない設定

• ProvisioningToolを作成する上で個人的に気をつけている部分

• ベストプラクティスというわけではなく、こういう使い方をしていますというお話

• むしろ、ここをこうすると良い!等ありましたら教えて下さい><

Page 4: My tool for web application

Agenda1. Vagrant

2. Vagrant plugins

3. Chef-solo

4. Continuous Integration

5. Serverspec

6. Vagrantの利用手順

7. Tips:ThorfileでCommandをCode化

8. 気をつけている点

9. Reference

Page 5: My tool for web application

Vagrantfileの詳細な設定、Vagrantの裏側、pluginの作り方まで

Page 6: My tool for web application

Vagrant• Virtualboxのホストオンリーアダプター設定

• Virtualboxの「環境設定」->「ネットワーク」->「ホストオンリーネットワーク」->「追加」

• PrivateIPで開発サーバーにアクセスする感覚でできる

• Port Forwardで繋がるが、より本番に近い形(80,22等)

• vagrant ssh-config >> ~/.ssh/configでsshを楽に

• vagrant sshやssh vagrant@XXXXが手間

• configのHostをwebappにすると「ssh webapp」でアクセス可能

Page 7: My tool for web application

Vagrant plugins• vagrant plugin install ~~で拡張。Vagrantfileで記述

• vagrant-sahara(serverのある地点をsnapshotを取る)

• vagrant-digitalocean(DigitalOcean利用)

• vagrant-omnibus(Chefをインストール)

• vagrant-berkshelf(Chefのcookbook管理)

• 結局使っているのはvagrant-digitalocen(CI用)とvagrant-sharaのみ

※vagrant-berkshelfはchef-dkを入れたりと依存関係が多い点。 常に自分のMachineで使えるかわからない。けど自分のチーム(developer)であればrubyは入っている

Page 8: My tool for web application

WebApplicationの構築まで含めた実践入門

Page 9: My tool for web application

Chef-solo• CookbookとRepositoryは1:1

• ApplicationのCookbookを作りたい時は、上で作ったCookbookを元に独自のParameterを渡す

• CFEngine/pupet/Ansible/Itamaeは?⇒chef-soloは比較的新しく書籍として一番まとめられているので初めてProvisioningToolを利用するにはオススメ。

Page 10: My tool for web application

テスト駆動インフラでwerckerを使ったCI

Page 11: My tool for web application
Page 12: My tool for web application

3.Test

2.Provisioning

Ops

4.Notification

1.Webhook

Page 13: My tool for web application

Serverspecの使い方はもちろん、背景・設計思想

Page 14: My tool for web application

例:Serverspec

$ cat spec/default/matsuri_spec.rb require 'spec_helper'

describe package('nginx') do it { should be_installed }end

describe service('nginx') do it { should be_enabled } it { should be_running }end

Page 15: My tool for web application

wercker Continuous Integration テストが終わったらSlackへ通知する

Page 16: My tool for web application

Vagrantの利用手順

(初めて触るMiddlewareのインストール)1.vagrant sandbox onでまずはsnapshotを取得

2.virtualbox上で実際にコマンド作業

3.confファイル等はlocal上にマウントしている/vagrant/へコピー

4.chefのrecipeを書く

5.specを書く(serverspec)

6.vagrant sandbox rollbackで元に戻す

7.prvisioning(bundle exec knife solo cook webapp)

8.bundle exec thor dockerで他OSでもテストが通ることを確認

Page 17: My tool for web application

Tips:コマンドをCode化 Thorfileにコマンドを記述$ bundle exec thor -Tdocker------thor docker:berkshelf # berks vendorthor docker:build # build docker image provisioned by chefthor docker:default # build image and run specthor docker:roles # build Directory in rolesthor docker:spec # run spec

Page 18: My tool for web application

気をつけている点• Vagrantfileにいろいろ設定せず出来る限りOSインストール済みの初期サーバーと同じアクセス方法

• チームで共有できるように極力シンプル

• 自分以外がテストしやすいように(Pullrequestを送りやすいように)ThorfileでコマンドをCode化する

Page 19: My tool for web application

まとめ• 書籍より今ご紹介した内容はすべて実現可能

• チームで使いやすいようにシンプルさを保つ。(極力pluginを使わない。Vagrantfileを複雑に設定しない)

• 自分以外がカスタマイズしやすいようにThorfile等でCommandをCode化しておく(bundle exec thor

dockerで統合テストが通ればOK)

Page 20: My tool for web application

Reference• 実践Vagrant

• http://www.oreilly.co.jp/books/9784873116655/

• Chef 実践

• http://www.amazon.co.jp/Chef%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-~%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E6%A7%8B%E6%88%90%E3%81%AE%E8%87%AA%E5%8B%95%E5%8C%96-WEB-PRESS-plus/dp/477416500X

• Serverspec

• http://www.oreilly.co.jp/books/9784873117096/