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.
VagrantとChefで開発スピードを上げる話kozy4324@gmail.com
アジェンダ現状と問題VagrantChefまとめ
訂正開発スピードを上げる話開発スピードを下げない話
現状と問題
現状(1)複雑なアプリケーションスタック+-------+|BIG-IP | <= SSL通信はここで解決、ローカルでは代替Apacheが必要...+-------+|+-------+|Varnish|+-------+|+-------+|...
現状(2)バージョン管理されないサーバリソースホスト/ネットワーク設定インストールされたパッケージ/ライブラリサービス/rc.dスクリプト/confファイルcron設定etc...
発生している事象サーバ構成を確認するのが手間サーバ構成の変更履歴を把握するのが難しい同じ環境を構築するのに時間がかかるproductionと同じローカル環境を構築できない
問題サーバ環境/構成に関して、トレーサビリティが低いメンテナンスビリティが悪いポータビリティが低い使い捨てできるアドホックな環境がない
_人人人人人人人人人人_> 開発スピードの低下 < ̄YYYYYYYYYY ̄
解決策Vagrant + Chef
Vagrant
Vagrant仮想化ソフトウェアのCLIツールVirtualBox, VMwareに対応配布されているboxでゲストOSを起動Rubyの内部DSLで設定ファイルを記述Win, Macにはインストーラーで簡単インストール
Vagrantで何ができる?ゲストOSをCLIでサクっと起動できる$ tree.!"" Vagrantfile0 directories, 1 file$ cat VagrantfileVagrant.configure("2") do |co...
Vagrantで何ができる?ゲストOSの破棄→作り直しがサクっとできる$ vagrant destroy$ vagrant up
Vagrantで何ができる?環境をまるっとコピーして配布できる$ vagrant package$ tree.#"" Vagrantfile!"" package.box <= packageコマンドで作成されたboxファイル0 directo...
Vagrantで何ができる?複数のゲストOSを立ち上げ、Privateネットワークを構築できる$ cat VagrantfileVagrant.configure("2") do |config|config.vm.define :web do...
VagrantまとめVagrantでローカル使い捨て環境が準備できる設定ファイルをバージョン管理して配布すれば同じ仮想化環境を利用できる
Chef
Chefサーバ構成を管理するソフトウェアRubyの内部DSLで記述されたレシピと、各種属性情報なども含めたクックブックで構成が表現されるクックブックを適用することで構成が定められた状態となる(冪等性の保証)サーバ上のあらゆるリソースをクックブッ...
クラサバなChef
Chef-soloとKnife-soloローカルではクラサバなChefはオーバースペック単一サーバでクックブックを適用するChef-soloリモートでChef-soloを実行するKnife-soloが便利Knife-solo自体はChefのプラ...
Railsアプリのレシピ(1)group www dogroup_name wwwgid 505action :createenduser www docomment wwwuid 505group wwwhome /home/wwwshell...
Railsアプリのレシピ(2)bash "bundle_install" douser wwwcwd /home/www/rails_appcode bundle install --deploymentaction :runendtempla...
まとめ
最初に提示した問題サーバ環境/構成に関して、トレーサビリティが低いメンテナンスビリティが悪いポータビリティが低い使い捨てできるアドホックな環境がない
最初に提示した問題トレーサビリティとメンテナンスビリティChefクックブックがバージョン管理されれば解決ポータビリティとアドホック環境ローカルはVagrant+Chefで、本番環境もChefで構築するポリシーとすれば解決
Chefクックブックは誰が書いていく?アプリケーションエンジニア、インフラエンジニア両方で書いくべき(提案)クックブックのテストはローカルVagrant環境でクックブックはバージョン管理して共有すべき
Upcoming SlideShare
Loading in …5
×

VagrantとChefで開発スピードを上げる話

8,440 views

Published on

2013/06/21 社内勉強会資料

Published in: Technology
  • Be the first to comment

VagrantとChefで開発スピードを上げる話

  1. 1. VagrantとChefで開発スピードを上げる話kozy4324@gmail.com
  2. 2. アジェンダ現状と問題VagrantChefまとめ
  3. 3. 訂正開発スピードを上げる話開発スピードを下げない話
  4. 4. 現状と問題
  5. 5. 現状(1)複雑なアプリケーションスタック+-------+|BIG-IP | <= SSL通信はここで解決、ローカルでは代替Apacheが必要...+-------+|+-------+|Varnish|+-------+|+-------+|Apache |+-------+|Tomcat |+-------+|(App) |+-------+|Fluentd|+-------+|+---------+---------+---------+| | | |+-------+ +-------+ +-------+ +-------+ +-------+|Log | |Solr | |MySQL | |MongoDB| |etc... |+-------+ +-------+ +-------+ +-------+ +-------+
  6. 6. 現状(2)バージョン管理されないサーバリソースホスト/ネットワーク設定インストールされたパッケージ/ライブラリサービス/rc.dスクリプト/confファイルcron設定etc...
  7. 7. 発生している事象サーバ構成を確認するのが手間サーバ構成の変更履歴を把握するのが難しい同じ環境を構築するのに時間がかかるproductionと同じローカル環境を構築できない
  8. 8. 問題サーバ環境/構成に関して、トレーサビリティが低いメンテナンスビリティが悪いポータビリティが低い使い捨てできるアドホックな環境がない
  9. 9. _人人人人人人人人人人_> 開発スピードの低下 < ̄YYYYYYYYYY ̄
  10. 10. 解決策Vagrant + Chef
  11. 11. Vagrant
  12. 12. Vagrant仮想化ソフトウェアのCLIツールVirtualBox, VMwareに対応配布されているboxでゲストOSを起動Rubyの内部DSLで設定ファイルを記述Win, Macにはインストーラーで簡単インストール
  13. 13. Vagrantで何ができる?ゲストOSをCLIでサクっと起動できる$ tree.!"" Vagrantfile0 directories, 1 file$ cat VagrantfileVagrant.configure("2") do |config|config.vm.box = "centos6_4"config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box"end$ vagrant up$ vagrant ssh$ cat /etc/issueCentOS release 6.4 (Final)Kernel r on an m
  14. 14. Vagrantで何ができる?ゲストOSの破棄→作り直しがサクっとできる$ vagrant destroy$ vagrant up
  15. 15. Vagrantで何ができる?環境をまるっとコピーして配布できる$ vagrant package$ tree.#"" Vagrantfile!"" package.box <= packageコマンドで作成されたboxファイル0 directories, 2 files
  16. 16. Vagrantで何ができる?複数のゲストOSを立ち上げ、Privateネットワークを構築できる$ cat VagrantfileVagrant.configure("2") do |config|config.vm.define :web do |web|web.vm.box = "centos6_4"web.vm.network :private_network, ip: "192.168.33.10"endconfig.vm.define :db do |db|db.vm.box = "centos6_4"db.vm.network :private_network, ip: "192.168.33.11"endend$ vagrant up$ vagrant ssh web <= 複数起動時は引数にvm-nameを渡す
  17. 17. VagrantまとめVagrantでローカル使い捨て環境が準備できる設定ファイルをバージョン管理して配布すれば同じ仮想化環境を利用できる
  18. 18. Chef
  19. 19. Chefサーバ構成を管理するソフトウェアRubyの内部DSLで記述されたレシピと、各種属性情報なども含めたクックブックで構成が表現されるクックブックを適用することで構成が定められた状態となる(冪等性の保証)サーバ上のあらゆるリソースをクックブックで表現パッケージ,サービス,設定ファイル,cron設定, ...
  20. 20. クラサバなChef
  21. 21. Chef-soloとKnife-soloローカルではクラサバなChefはオーバースペック単一サーバでクックブックを適用するChef-soloリモートでChef-soloを実行するKnife-soloが便利Knife-solo自体はChefのプラグインVagrantゲストOSの構成管理はホストOSからKnife-soloを使うのがオススメ
  22. 22. Railsアプリのレシピ(1)group www dogroup_name wwwgid 505action :createenduser www docomment wwwuid 505group wwwhome /home/wwwshell /bin/bashpassword nilsupports :manage_home => trueaction [:create, :manage]endgit "/home/www/rails_app" dorepository /path/to/repository.gitrevision HEADuser wwwgroup wwwaction :syncend
  23. 23. Railsアプリのレシピ(2)bash "bundle_install" douser wwwcwd /home/www/rails_appcode bundle install --deploymentaction :runendtemplate "/etc/init.d/unicorn_rails" domode "0755"source "unicorn_rails.erb"endtemplate "/home/www/rails_app/unicorn_rails.conf" domode "0644"owner "www"group "www"source "unicorn_rails.conf.erb"endservice "unicorn_rails" doaction [ :enable, :start ]subscribes :restart, resources(:template => "/home/www/rails_app/unicorn_rails.conf")end
  24. 24. まとめ
  25. 25. 最初に提示した問題サーバ環境/構成に関して、トレーサビリティが低いメンテナンスビリティが悪いポータビリティが低い使い捨てできるアドホックな環境がない
  26. 26. 最初に提示した問題トレーサビリティとメンテナンスビリティChefクックブックがバージョン管理されれば解決ポータビリティとアドホック環境ローカルはVagrant+Chefで、本番環境もChefで構築するポリシーとすれば解決
  27. 27. Chefクックブックは誰が書いていく?アプリケーションエンジニア、インフラエンジニア両方で書いくべき(提案)クックブックのテストはローカルVagrant環境でクックブックはバージョン管理して共有すべき

×