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