Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Vagrant + Berkshelf でお手軽写経環境構築

thinkAmi
January 25, 2014

Vagrant + Berkshelf でお手軽写経環境構築

GDG信州 2014 Jan で発表したスライドです。

thinkAmi

January 25, 2014
Tweet

More Decks by thinkAmi

Other Decks in Programming

Transcript

  1. Vagrant + Berkshelf で
    お手軽写経環境構築
    GDG Shinshu Meetup – January 2014
    @thinkAmi

    View Slide

  2. 自己紹介
    • @thinkAmi
    • hatenaID: thinkAmi
    • C#, Ruby
    • 自社インフラ管理
    • GDG信州, NSEG
    • シナノドルチェ・シナノゴールド派

    View Slide

  3. はじめに
    • Vagrant + Berkshelf で
    お手軽写経環境構築
    – Vagrant (ベイグラント)
    – Chef (シェフ)
    – Berkshelf (バークシェルフ)
    • 本日のコード
    • https://gist.github.com/thinkAmi/8608604

    View Slide

  4. 写経
    • 本や雑誌に書いてあるコードを実際に写
    してみること
    • 和田卓人の“テスト駆動開発”講座 第6回 「写
    経」でTDDの手順や書き方を学ぶ
    http://gihyo.jp/dev/serial/01/tdd/0006

    View Slide

  5. 最近
    • Ruby学習のため、写経しようと考えた
    – The RSpec Book (翔泳社)
    – Rails チュートリアル (Web, 達人出版会)

    View Slide

  6. ところで
    • 自分のThinkPadのOSは、Windows7
    – 時々、Windowsではツライ扱いも...
    • 今回Linuxで写経をすることに

    View Slide

  7. 環境構築をどうするか
    • できるだけお手軽に写経環境を作りたい
    – やりたいのは写経であり、構築ではない
    • 案を考えてみた

    View Slide

  8. 環境案1
    • Windows + Linuxのデュアルブート

    View Slide

  9. 環境案1
    • やること多すぎ...
    • あんまり手軽に作れるイメージが無い
    – WindowsとLinux
    • パーティションを切る
    • Linux入れる
    • 環境作る
    • …
    – Windows8以降のブートローダー変更とか...

    View Slide

  10. 環境案2
    • VirtualBoxなどで仮想マシンを作って
    そちらで写経する
    – 失敗しても、仮想マシンを削除すれば環境を
    作り直せる

    View Slide

  11. 環境案2
    • GUIでいろいろとやるのが手間...
    – 環境を作りなおすとしても、いちいちGUIか
    ら操作する
    • インストールとか
    • ネットワークやメモリの設定とか

    View Slide

  12. 環境案3
    • Vagrant
    – CUI + 設定ファイルから、仮想マシンを作る
    • 設定ファイル(Vagrantfile)にいろいろと記載
    – 設定ファイルを使い回すことで、
    同じ内容の仮想マシンを作成できる
    • コマンドラインから、お気軽に仮想マシンの起動
    と削除ができる
    – vagrant up で起動
    – vagrant destory で破棄

    View Slide

  13. 環境案3
    • Vagrant
    – 素のVagrantでは起動するところまで
    • インストールや環境設定のところは、まだ手動...

    View Slide

  14. 環境案4
    • Vagrant + Chef solo
    – Chef
    • インフラの構成等をcookbookという設定ファイル
    群へ記載し、実行する
    – gitをインストール
    – Terminalにgitのブランチ名を表示
    • Cookbookを使い回せば、何度でも再現可能
    • 自分で書かなくても、メジャーなものについては
    すでにいくつも公開されている
    • Vagrantと組み合わせて利用することが可能

    View Slide

  15. 環境案4
    • Vagrant + Chef solo
    – cookbook間に依存関係があったりする
    • 依存を検証・対応するのが手間...

    View Slide

  16. 環境案5
    • Vagrant + Chef solo + Berkshelf
    – Berkshelf
    • Chefのcookbookの依存関係を解消する
    • Vagrantと組み合わせて利用することが可能
    – vagrant-berkshelfプラグインを使う
    • 注) 現在Berkshelfはv2系だが、v3がそろそろ
    – コマンドや設定が変更になるとか
    – これでようやくお手軽になった気がする!

    View Slide

  17. ツールのセットアップ
    • 用意するツール
    – VirtualBox
    – Vagrant
    – Vagrant用のBox
    – Vagrant Plugin
    – Ruby
    – RubyDevkit
    – Bundler
    – Berkshelf v2系       ...なんか多い気が

    View Slide

  18. ツールのセットアップ
    • VirtualBox
    – 公式サイトから落としてインストール
    • https://www.virtualbox.org/

    View Slide

  19. ツールのセットアップ
    • Vagrant
    – 公式サイトから落としてインストール
    • http://www.vagrantup.com/

    View Slide

  20. ツールのセットアップ
    • Vagrant用のBox
    – vagrantで作る仮想マシンのひな形
    – Vagrantbox.esで公開されているのを使った
    り(自己責任)、自作したり
    – 事前に用意しておくといい感じ
    • 回線細いとダウンロードに時間がかかる...
    • 事前に用意した場合、以下のコマンドでVagrant
    へBoxを追加しておく
    – vagrant box add 場所>
    » vagrant box add ubuntu120403 d:\fuga.box

    View Slide

  21. ツールのセットアップ
    • Vagrant用のPlugin
    – vagrant-omnibus
    • 仮想マシン上のChefの有無とインストールする
    • vagrant plugin install vagrant-omnibus
    – vagrant-berkshelf
    • VagrantとBerkshelfを連携する
    • vagrant plugin install vagrant-berkshelf

    View Slide

  22. ツールのセットアップ
    • Ruby (Windowsの場合)
    – Berkshelfを入れるために使う
    • vagrantに同梱されているRubyを使いたいけど
    berksコマンドを認識してくれなかった
    – RubyInstallerから、ダウンロード
    • http://rubyinstaller.org/downloads/
    • Ruby 2.0.0-p353
    • インストール時にPathを通しておく

    View Slide

  23. ツールのセットアップ
    • RubyDevkit (Windowsの場合)
    – Berkshelfを入れるために使う
    – RubyInstallerから、ダウンロード
    • http://rubyinstaller.org/downloads/
    • DevKit-mingw64-32-4.7.2-20130224-1151-
    sfx.exe

    View Slide

  24. ツールのセットアップ
    • RubyDevkit (Windowsの場合)
    – ダウンロードしたものを解凍
    • c:\devkit など
    – コマンドプロンプトより実行
    • cd c:\devkit
    • ruby dk.rb init
    • ruby dk.rb install

    View Slide

  25. ツールのセットアップ
    • Bundler
    – GemというRubyのパッケージを管理
    – Gemfileに、使用するGemのリストを記載
    • Berkshelfしかないけど、RubyInstallerで入れた
    Rubyの環境を汚さないために、使用する
    – gem install bundler --no-ri --no-rdoc

    View Slide

  26. ツールのセットアップ
    • Bundler
    – 今回使用するディレクトリを作って、
    その中にGemfileを入れておく
    • 例) D:\gdg\Gemfile
    – 中身はこんな感じ
    • v2系の最新版を指定しておく
    source 'https://rubygems.org'
    gem 'berkshelf', '2.0.13'

    View Slide

  27. ツールのセットアップ
    • Berkshelf
    – Bundlerを使ってBerkshelfを入れる
    • bundle install --path vendor/bundle
    » グローバルなところにGemを入れたくないので、
    --pathで入れ先を指定しておく
    » D:\gdg\verndor\bundle の中に入る

    View Slide

  28. 設定ファイルのセットアップ
    • Berkshelfでひな形を用意
    • Berksfileへ記載
    • recipes/default.rbヘ記載
    • Vagrantfileヘ記載
    • 今回はGitのインストールとTerminalの
    表示変更をしてみる

    View Slide

  29. 設定ファイルのセットアップ
    • Berkshelfでひな形を用意
    – 今回は、d:\gdg
    – bundle exec berks cookbook gdg-
    shinshu-201401
    – Bundlerを使っているので、berksの前にbundle exec
    が必要

    View Slide

  30. 設定ファイルのセットアップ
    • ひな形
    – たくさんできるが、お手軽写経環境構築では
    とりあえず以下だけおさえておく
    • recipes/default.rb
    • Berksfile
    • Vagrantfile

    View Slide

  31. 設定ファイルのセットアップ
    • Berksfileへ記載
    – 使用するcookbookやリソース元を記載
    – 今回は公開されているGitのcookbookを指定

    View Slide

  32. 設定ファイルのセットアップ
    • recipes/default.rbへ記載
    – Chef向けに書く
    – 独自の設定があればここに記述
    • Terminalにgitのブランチを表示する etc

    View Slide

  33. 設定ファイルのセットアップ
    • Vagrantfileへの記載
    – 仮想マシン設定や使用するcookbookを記載

    View Slide

  34. デモ
    • Vagrantfileのあるディレクトリで
    vagrant up
    – しばらく待つと、VirtualBoxが起動
    – 更にしばらくすると、設定終了
    – ログにいろいろと出ている
    – Gitのブランチを作って見てみる

    View Slide

  35. デモ
    • Gitのブランチを作って見てみる
    • mkdir hoge
    • cd hoge
    • git init
    • git checkout -b fuga
    • touch piyo.txt
    • git add .
    • git commit -m first
    – Terminalにブランチ名が表示されてる

    View Slide

  36. あとは
    • recipeやcookbookを育ててく
    – Gitでバージョン管理し、
    • ブランチを切る
    • タグ付けする
    といろいろと楽かも
    • 忘れずに写経も...

    View Slide

  37. 参考文献
    • 今っぽい Vagrant + Chef Solo チュートリアル
    http://qiita.com/taiki45/items/b46a2f32248720ec2bae
    • 入門Chef Solo - Infrastructure as Code (伊藤直也 著)
    http://tatsu-zine.com/books/chef-solo

    View Slide