review & ci - chefでci環境構築

40
ReVIEW & CI ChefCI環境構築 @vvakame

Upload: masahiro-wakame

Post on 06-May-2015

3.813 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: ReVIEW & CI - ChefでCI環境構築

 ReVIEW & CI ChefでCI環境構築

@vvakame

Page 2: ReVIEW & CI - ChefでCI環境構築

わかめ まさひろわしゃインフラとかよくわからんのじゃよ!

@v vakame

Page 3: ReVIEW & CI - ChefでCI環境構築

話を始める前に

Page 4: ReVIEW & CI - ChefでCI環境構築

本日の仕込み

その他の準備は後述

• vagrant init centos-6.4• vagrant up• vagrant ssh-config --host review-ci ↩

>> ~/.ssh/config

• knife solo prepare review-ci• knife solo cook review-ci ↩

~/Dropbox/chef-repo/nodes/review-jenkins.json

Page 5: ReVIEW & CI - ChefでCI環境構築

動機

Page 6: ReVIEW & CI - ChefでCI環境構築

動機• ReVIEWで原稿書いてgitで管理したい

• pushしたら自動でビルドされてほしい

• 構文エラーがあったらすぐわかる

• エンジニア以外も成果物がすぐ見れる

• 編集さんがGitHubサイト上で編集

• でもサーバとかよくわからん辛いCI = 継続的インテグレーション = 金糸雀

Page 7: ReVIEW & CI - ChefでCI環境構築

ReVIEW環境構築• gem install review で入る• review-pdfmaker を動かすのが大変

• Mac OS X → MacTeX 入れる• CentOS 6.4系 → TeX Live 2013 入れる• Debian 7系 → texlive-lang-cjk

• review-epubmaker は割りと楽• zip コマンドあればOKぽい

TeXで2.3GBくらい取られる辛い

Page 8: ReVIEW & CI - ChefでCI環境構築

gitで管理+自動でビルド

• GitHubを普通に使えばOK

• ビルドシステムは適当に使う

• 愚直にshell scriptとか

• わかめはgruntを使う

ReVIEWは文化的にRakeも多そう?

Page 9: ReVIEW & CI - ChefでCI環境構築

継続的インテグレーション• 知名度最強 Jenkins 氏

• GitHubをpollingで監視してコミットあったら自動でビルドして結果収集

• GitHubからのHookもあるよ!

• まだ試してない…

• GitHubへの鍵登録はChefじゃ無理?鍵登録まで勝手にされたら流石にキモい

Page 10: ReVIEW & CI - ChefでCI環境構築

サーバの自動セットアップ• サーバよくわからん…

• 他人の叡智を借りたい!

• 手順書を作るのはめんどくさい

• 本当に正しく動くのかも疑わしい

• ドキュメントよりコードだ さくらVPSでもEC2でもGCEでも多分動く(願望)

Page 11: ReVIEW & CI - ChefでCI環境構築

Chefについて

Page 12: ReVIEW & CI - ChefでCI環境構築

Chefって何?• サーバのセットアップをしてくれる• あるべき状態に収束させるツール

• ReVIEWが使える環境で• Jenkinsが動いている

• 冪等性が必要• =何回実行しても同じ結果に落ち着く

• Rubyで書く類似ツールに Puppet がある

Page 13: ReVIEW & CI - ChefでCI環境構築

Chef Solo

• Chef SoloとChef (server & client)がある

• Server & Client の方はよく知らない…

• 開発元のOpsCodeはコレで稼いでる

• 今回は Chef Solo を使った

Page 14: ReVIEW & CI - ChefでCI環境構築

参考書籍

http://goo.gl/RRb3FB

• @naoya_ito さん著

• KDPで出てる(Kindle専)

• 神書籍やで実際

• vagrant 回りが少し古い

Page 15: ReVIEW & CI - ChefでCI環境構築

Chef用語• Chef - シェフ• Knife - ナイフ

• Node料理用コマンドラインツール• リポジトリ

• Cookbookの束• Cookbook - クックブック

• Recipeの束• Recipe - レシピ

• サーバ上で実行する時の最小単位

Page 16: ReVIEW & CI - ChefでCI環境構築

Chef用語• Attributes 

• 味付けの設定・変更• Role 

• 役割• このRecipeとこのRecipeでこういう

attributeな!• Node 

• セットアップするサーバのこと

Page 17: ReVIEW & CI - ChefでCI環境構築

補助ツール• Berksfile 

• gem install berkshelf で入る

• 他の人の作ったレシピを取得• community.opscode.com/cookbooks/

• knife でも一応取得してこられる

• knife cookbook site vender java • 一括DLやVersionに活躍

Page 18: ReVIEW & CI - ChefでCI環境構築

下拵え

github.com/vvakame/chef-repo

話の全てはここにあり

Page 19: ReVIEW & CI - ChefでCI環境構築

リポジトリ作る

• gem install chef 

• gem install knife-solo 

• knife solo init chef-repo

Page 20: ReVIEW & CI - ChefでCI環境構築

フォルダ構成• cookbooks 

• 3rd parthのCookbook

• data_bags • 謎

• nodes • 設定情報.json

• roles • Roleの定義

• site-cookbooks • 自作Cookbook

Page 21: ReVIEW & CI - ChefでCI環境構築

コミュニティのCookbook• Berkshelf 経由でダウンロードする

• community.opscode.com/cookbooks/• Jenkins, iptables あたりは見つかる

• ReVIEW はやはりない→自作

• berk --path=cookbooks でDLされる

• Berksfile.lock 生成 →これも管理

Page 22: ReVIEW & CI - ChefでCI環境構築

Berksfile

site :opscode

cookbook 'java'cookbook 'jenkins', ↩

git: 'https://github.com/opscode-cookbooks/jenkins.git', ↩ref: '0ff2a4e20e5ca0646a112b3bc11c22af87a9f3ad'

cookbook 'iptables'cookbook 'npm'

Jenkinsは新しいコードがだいぶリリースされていなかったのでGitHubの最新を使うように設定

Page 23: ReVIEW & CI - ChefでCI環境構築

nodes/hoge.json{ "java": { "install_flavor": "oracle", "jdk_version": 7, "oracle" : { "accept_oracle_download_terms": true } }, "run_list":[ "recipe[java]" ]}

Attributes の上書き(設定)

このNodeが実行するRecipe & Role

Page 24: ReVIEW & CI - ChefでCI環境構築

java レシピを読む• attributes/default.rb を読む

• 設定可能な項目はここにまとまってる

• recipe/default.rb を読む

• デフォルトの挙動はここに定義される

• java::default 相当

• recipe/oracle.rb は java::oraclerun_list:[ “recipe[java::oracle]” ]

Page 25: ReVIEW & CI - ChefでCI環境構築

java レシピを読む• template/ と files/

• 生成ファイルの原本• template は変数有り files は無し

• providers/ • *.rb 中で不明な関数あったらここ探す• java/ark.rb だと java_ark ていう関数に

• その他• よくわかんない

既存レシピを読むの超参考になる

Page 26: ReVIEW & CI - ChefでCI環境構築

ReVIEW レシピを作る

Page 27: ReVIEW & CI - ChefでCI環境構築

ReVIEWに必要なもの• gem install review 

• review-pdfmaker のために

• TeX環境

• review-epubmaker のために

• zipコマンドおさらい

Page 28: ReVIEW & CI - ChefでCI環境構築

とりあえず

knife cookbook create review -o site-cookbooks

Cookbook作る

Page 29: ReVIEW & CI - ChefでCI環境構築

ReVIEWに必要なTeX• Mac

• MacTeX 入れればOK

• Debian系

• apt-get install texlive-lang-cjk 

• CentOS系

• yumで入らないのでtexlive2013@narusemotoki ありがとう!

でもまだ実は動作確認できてない…

OK

?

?

Page 30: ReVIEW & CI - ChefでCI環境構築

TeXの辛み• アホみたいにデカイ

• 2.3GBとか

• インストーラがおばか• 勝手に止まるので手動でリトライ

• 動作確認したい!• 毎回GB単位でDL

• 途中で止まる… TeXはクソなのではないかと思い始めてきた

Page 31: ReVIEW & CI - ChefでCI環境構築

TeX以外• review

• recipe/default.rb でgem_install review てやるだけ

• zip• recipe/default.rb で

• install zip てやるだけ

• yumとかapt-get使い分けてるぽ?ちょー簡単

Page 32: ReVIEW & CI - ChefでCI環境構築

実際のRecipe

見てみよう

http://goo.gl/lv4aa1http://goo.gl/6fhJj7

Page 33: ReVIEW & CI - ChefでCI環境構築

ReVIEW with Jenkins

Page 34: ReVIEW & CI - ChefでCI環境構築

実際のRecipe

激流に身を任せ同化する

http://goo.gl/jO7Iy6

http://goo.gl/FFDtTV

http://goo.gl/kFfpv4

http://192.168.50.12:8080/

Page 35: ReVIEW & CI - ChefでCI環境構築

実際にやってみた

Page 36: ReVIEW & CI - ChefでCI環境構築

GCEでやってみた

結論:さくらVPSでやれ

うっかり会社のアカウントで作ってしまい怒られそうなので消しました☆(ゝω・)v

• ReVIEW(Ruby)がus-asciiじゃねーよ!

• て、怒られる

• GCEのデフォがUTF-8じゃないぽ?• export LC_ALL=en_US.UTF-8 …?

Page 37: ReVIEW & CI - ChefでCI環境構築

今後の課題

Page 38: ReVIEW & CI - ChefでCI環境構築

今後の課題• Communityにpublishしたい

• TeXの安定構成を探したい

• 結局JenkinsでPDF出てない…

• 楽しい!✌('!'✌ )三✌('!')✌三( ✌'!')✌

• Windows対応したい

• GitHubのprivate repo対応したいTeX is 最強の敵

Page 39: ReVIEW & CI - ChefでCI環境構築

謝辞

Page 40: ReVIEW & CI - ChefでCI環境構築

http://goo.gl/CglFP

夏の戦の同志達

途中でReVIEWに移行!ReVIEW道を一緒に歩いて来た人々のノウハウとか血とか洟水がレシピに詰まってます!