Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

3分間 開発環境クッキング 2012.07 #pyfes

8,121 views

Published on

Published in: Technology
  • Be the first to comment

3分間 開発環境クッキング 2012.07 #pyfes

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

×