More Related Content Similar to 3分間 開発環境クッキング 2012.07 #pyfes (20) More from Takeshi Komiya (20) 3分間 開発環境クッキング 2012.07 #pyfes2. 自己紹介:小宮 健
Twitter: @tk0miya
仕事
(株)タイムインターメディア所属
テクニカルオフィサ(技術責任者)として活動
参加コミュニティ
Sphinx-users.jp
Python mini hack-a-thon
Sphinx を中心にツールを開発
blockdiag シリーズ
Sphinx 拡張機能の開発
Googlechart やカレンダー機能
#bookathon 他読書会やってます
4. お知らせ
Pycon JP 2012 (9/15-17) きてね
SphinxCon JP 2012 も併催してます
この資料はあとで公開します
細かいとこはあとで読んでください
12. 3分間 開発環境クッキング 道具紹介
Vagrant
VirtualBox の管理ソフトウェア
コマンドラインから利用できる
Chef (chef-solo)
環境構築ソフトウェア
パッケージ、設定を自動的に最新に保つ
今回は chef-solo のみ
13. 3分間 開発環境クッキング 道具紹介
開発環境 / 本番環境(VM)
1. Vagrant で VM を作る
2. Chef で環境をセットアップ
本番環境 (実機)
1. 手作業で OS をインストール
2. Chef で環境をセットアップ
環境づくりは Chef で揃える
15. Vagrant: VM イメージの作り方 (基本)
1. box(ベースイメージ)登録
$ vagrant box add lucid32
http://files.vagrantup.com/lucid32.box
1. 設定ファイル生成
$ vagrant init
1. 設定
$ vi Vagrantfile
1. 起動
$ vagrant up
16. Vagrant: 設定ファイルの書き方
box を指定するだけ
Vagrant::Config.run do |config|
config.vm.box = "lucid32"
config.vm.customize do |vm|
vm.memory_size = 512
end
end
17. Vagrant: VM の動かし方
起動
$ vagrant up
終了
$ vagrant halt
破棄
$ vagrant destroy
管理ログイン
$ vagrant ssh
18. Vagrant: box について
よくある例では Web から拾う
http://www.vagrantbox.es/
有志が作って公開している
いろんな OS が揃ってる
19. Vagrant: box 問題
セキュリティ面
トロイが仕掛けられてないか
誰も担保していない
Guest Additions バージョン不一致
手元の VirtualBox が新しいと起きがち
Chef 連携(後述)が動かない
20. Vagrant: box 問題(解決編)
A. VeeWee を使いましょう
OS のインストーラから VM イメージを作成
してくれる
ISO イメージのダウンロード
kickstart でインストール
Chef, Guest Additions のインストール
21. VeeWee: インストール
gem は古いので、必ず github のものを使うこと
ISO の URL が古くてハマったり…
自分でローカル用 gem パッケージ作った
$ git clone https://github.com/jedi4ever/veewee.git
$ cd veewee
$ gem build veewee.gemspec
$ gem install veewee-0.3.0.alpha9.gem
22. VeeWee: 使い方
1. templates で目的の物を探す
2. define で定義ファイルを生成する
定義ファイルの URL を近いミラーに書き換えると幸
せ
3. build で VM テンプレート作成
実際にインストールするので時間がかかる
4. export でテンプレート化
5. vagrant から使えるようになる
27. Chef: インストール
vagrant 経由で実行する場合は不要
レシピ作りには入れておく必要あり
gem install chef
CentOS6 なら rpm がある
http://matetsu.hatenablog.com/entry/
2012/01/15/142720
28. Chef: 設定方法
Chef はレシピを使って設定する
レシピ = 設定手順
例::
hosts の設定の仕方
MySQL のインストールの仕方
29. Chef: 誰かが書いたレシピを使う
Opscode社がレシピ集を公開してる
https://github.com/opscode/cookbooks
knife コマンドで取り込む
$ mkdir -p cookbooks
$ knife cookbook site install ntp -o
cookbooks
基本的なものは入っている
RedHat 系では動かないものがいくつかある
他にもレシピが公開されてる
37 Signals, コミュニティ製
30. Chef: 誰かが書いたレシピを使う
使うレシピのリストを Vagrantfile に書き
足す
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = ["cookbooks”]
chef.add_recipe "ntp"
chef.json = {
:ntp => {:servers => ['ntp.foobar.jp']},
}
end
31. Chef: オリジナルのレシピを書く
Opscode で見つからない場合
$ mkdir -p site-cookbooks
$ knife cookbook create my_recipe -o site-
cookbooks
次のファイルを書き換える
cookbook/attributes/default.rb
cookbook/recipes/default.rb
cookbook/templates/default/*
書き方は OpscodeWiki や他のレシピを参考
に
32. Chef: 使い方
Vagrant 経由
起動時に実行される
$ vagrant up
明示的に呼び出す
$ vagrant provision
コマンドライン
$ chef-solo –c solo.rb –j chef.json
今回は詳細は割愛!
33. Chef: デモ
Vagrant + chef で環境づくり
CentOS 5.8
EPEL リポジトリを使うようにする
Selinux、NTP, タイムゾーンの設定
Iptables も設定しとく
thrift 入れる
34. 次やること
ESXi + chef でかんたん開発環境づくり
VeeWee + VMWare Fusion でイメージ作れた
実機に chef-solo をどうインストールするの
か
chef-server の使い道を検討
デプロイについて (capistrano ?)
35. まとめ
Chef + Vagrant で環境構築できるようにした
おおよそ 3分間で環境作った(はず)
環境マニア募集中
継続的デリバリー座談会やってるよ
Connpass みてね
37. おまけ: vagrant-snap
vagrant plugin
VirtualBox snapshot の操作
chef レシピ作りのときに便利
vagrant snap サブコマンドが追加される
$ vagrant snap take
$ vagrant snap list
$ vagrant snap go [n]
$ vagrant snap back