ReVIEW & CI - ChefでCI環境構築
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
4,135
On Slideshare
2,174
From Embeds
1,961
Number of Embeds
9

Actions

Shares
Downloads
10
Comments
0
Likes
14

Embeds 1,961

http://d.hatena.ne.jp 1,803
http://webcreator.weva.jp 107
https://twitter.com 25
http://cloud.feedly.com 18
http://tweetedtimes.com 3
https://www.google.co.jp 2
http://digg.com 1
http://feedly.com 1
http://www.google.co.jp 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1.  ReVIEW & CI  ChefでCI環境構築 @vvakame
  • 2. わかめ まさひろ わしゃインフラとか よくわからんのじゃよ! @vvakame
  • 3. 話を始める前に
  • 4. 本日の仕込み その他の準備は後述 • 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
  • 5. 動機
  • 6. 動機 • ReVIEWで原稿書いてgitで管理したい • pushしたら自動でビルドされてほしい • 構文エラーがあったらすぐわかる • エンジニア以外も成果物がすぐ見れる • 編集さんがGitHubサイト上で編集 • でもサーバとかよくわからん辛い CI = 継続的インテグレーション = 金糸雀
  • 7. 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くらい取られる辛い
  • 8. gitで管理+自動でビルド • GitHubを普通に使えばOK • ビルドシステムは適当に使う • 愚直にshell scriptとか • わかめはgruntを使う ReVIEWは文化的にRakeも多そう?
  • 9. 継続的インテグレーション • 知名度最強 Jenkins 氏 • GitHubをpollingで監視してコミット あったら自動でビルドして結果収集 • GitHubからのHookもあるよ! • まだ試してない… • GitHubへの 登録はChefじゃ無理? 登録まで勝手にされたら流石にキモい
  • 10. サーバの自動セットアップ • サーバよくわからん… • 他人の叡智を借りたい! • 手順書を作るのはめんどくさい • 本当に正しく動くのかも疑わしい • ドキュメントよりコードだ さくらVPSでもEC2でもGCEでも多分動く(願望)
  • 11. Chefについて
  • 12. Chefって何? • サーバのセットアップをしてくれる • あるべき状態に収束させるツール • ReVIEWが使える環境で • Jenkinsが動いている • 冪等性が必要 • =何回実行しても同じ結果に落ち着く • Rubyで書く 類似ツールに Puppet がある
  • 13. Chef Solo • Chef SoloとChef (server & client)がある • Server & Client の方はよく知らない… • 開発元のOpsCodeはコレで稼いでる • 今回は Chef Solo を使った
  • 14. 参考書籍 http://goo.gl/RRb3FB • @naoya_ito さん著 • KDPで出てる(Kindle専) • 神書籍やで実際 • vagrant 回りが少し古い
  • 15. Chef用語 • Chef - シェフ • Knife - ナイフ • Node料理用コマンドラインツール • リポジトリ • Cookbookの束 • Cookbook - クックブック • Recipeの束 • Recipe - レシピ • サーバ上で実行する時の最小単位
  • 16. Chef用語 • Attributes  • 味付けの設定・変更 • Role  • 役割 • このRecipeとこのRecipeでこういう attributeな! • Node  • セットアップするサーバのこと
  • 17. 補助ツール • Berksfile  • gem install berkshelf で入る • 他の人の作ったレシピを取得 • community.opscode.com/cookbooks/ • knife でも一応取得してこられる • knife cookbook site vender java  • 一括DLやVersionに活躍
  • 18. 下拵え github.com/vvakame/chef-repo 話の全てはここにあり
  • 19. リポジトリ作る • gem install chef  • gem install knife-solo  • knife solo init chef-repo
  • 20. フォルダ構成 • cookbooks  • 3rd parthのCookbook • data_bags  • • nodes  • 設定情報.json • roles  • Roleの定義 • site-cookbooks  • 自作Cookbook
  • 21. コミュニティのCookbook • Berkshelf 経由でダウンロードする • community.opscode.com/cookbooks/ • Jenkins, iptables あたりは見つかる • ReVIEW はやはりない→自作 • berk --path=cookbooks でDLされる • Berksfile.lock 生成 →これも管理
  • 22. Berksfile site :opscode cookbook 'java' cookbook 'jenkins', ↩ git: 'https://github.com/opscode-cookbooks/jenkins.git', ↩ ref: '0ff2a4e20e5ca0646a112b3bc11c22af87a9f3ad' cookbook 'iptables' cookbook 'npm' Jenkinsは新しいコードがだいぶ リリースされていなかったので GitHubの最新を使うように設定
  • 23. nodes/hoge.json { "java": { "install_flavor": "oracle", "jdk_version": 7, "oracle" : { "accept_oracle_download_terms": true } }, "run_list":[ "recipe[java]" ] } Attributes の上書き(設定) このNodeが実行する Recipe & Role
  • 24. java レシピを読む • attributes/default.rb を読む • 設定可能な項目はここにまとまってる • recipe/default.rb を読む • デフォルトの挙動はここに定義される • java::default 相当 • recipe/oracle.rb は java::oracle run_list:[ “recipe[java::oracle]” ]
  • 25. java レシピを読む • template/ と files/ • 生成ファイルの原本 • template は変数有り files は無し • providers/  • *.rb 中で不明な関数あったらここ探す • java/ark.rb だと java_ark ていう関数に • その他 • よくわかんない 既存レシピを読むの超参考になる
  • 26. ReVIEW レシピを作る
  • 27. ReVIEWに必要なもの • gem install review  • review-pdfmaker のために • TeX環境 • review-epubmaker のために • zipコマンド おさらい
  • 28. とりあえず knife cookbook create review -o site-cookbooks Cookbook作る
  • 29. ReVIEWに必要なTeX • Mac • MacTeX 入れればOK • Debian系 • apt-get install texlive-lang-cjk  • CentOS系 • yumで入らないのでtexlive2013 @narusemotoki ありがとう! でもまだ実は動作確認できてない… OK ? ?
  • 30. TeXの辛み • アホみたいにデカイ • 2.3GBとか • インストーラがおばか • 勝手に止まるので手動でリトライ • 動作確認したい! • 毎回GB単位でDL • 途中で止まる… TeXはクソなのではない かと思い始めてきた
  • 31. TeX以外 • review • recipe/default.rb で gem_install review てやるだけ • zip • recipe/default.rb で • install zip てやるだけ • yumとかapt-get使い分けてるぽ? ちょー簡単
  • 32. 実際のRecipe 見てみよう http://goo.gl/lv4aa1 http://goo.gl/6fhJj7
  • 33. ReVIEW with Jenkins
  • 34. 実際のRecipe 激流に身を任せ同化する http://goo.gl/jO7Iy6 http://goo.gl/FFDtTV http://goo.gl/kFfpv4 http://192.168.50.12:8080/
  • 35. 実際にやってみた
  • 36. GCEでやってみた 結論:さくらVPSでやれ うっかり会社のアカウントで作ってしまい 怒られそうなので消しました☆(ゝω・)v • ReVIEW(Ruby)がus-asciiじゃねーよ! • て、怒られる • GCEのデフォがUTF-8じゃないぽ? • export LC_ALL=en_US.UTF-8 …?
  • 37. 今後の課題
  • 38. 今後の課題 • Communityにpublishしたい • TeXの安定構成を探したい • 結局JenkinsでPDF出てない… • 楽しい!✌('!'✌ )三✌('!')✌三( ✌'!')✌ • Windows対応したい • GitHubのprivate repo対応したい TeX is 最強の敵
  • 39. 謝辞
  • 40. http://goo.gl/CglFP 夏の戦の同志達 途中でReVIEWに移行! ReVIEW道を一緒に歩いて来た 人々のノウハウとか血とか洟 水がレシピに詰まってます!