SlideShare a Scribd company logo
1 of 27
Download to read offline
VagrantとChefで
開発スピードを上げる話
kozy4324@gmail.com
アジェンダ
現状と問題
Vagrant
Chef
まとめ
訂正
開発スピードを上げる話
開発スピードを下げない話
現状と問題
現状(1)
複雑なアプリケーションスタック
+-------+
|BIG-IP | <= SSL通信はここで解決、ローカルでは代替Apacheが必要...
+-------+
|
+-------+
|Varnish|
+-------+
|
+-------+
|Apache |
+-------+
|Tomcat |
+-------+
|(App) |
+-------+
|Fluentd|
+-------+
|
+---------+---------+---------+
| | | |
+-------+ +-------+ +-------+ +-------+ +-------+
|Log | |Solr | |MySQL | |MongoDB| |etc... |
+-------+ +-------+ +-------+ +-------+ +-------+
現状(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
.
!"" Vagrantfile
0 directories, 1 file
$ cat Vagrantfile
Vagrant.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/issue
CentOS release 6.4 (Final)
Kernel r on an m
Vagrantで何ができる?
ゲストOSの破棄→作り直しがサクっとできる
$ vagrant destroy
$ vagrant up
Vagrantで何ができる?
環境をまるっとコピーして配布できる
$ vagrant package
$ tree
.
#"" Vagrantfile
!"" package.box <= packageコマンドで作成されたboxファイル
0 directories, 2 files
Vagrantで何ができる?
複数のゲストOSを立ち上げ、Privateネットワーク
を構築できる
$ cat Vagrantfile
Vagrant.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"
end
config.vm.define :db do |db|
db.vm.box = "centos6_4"
db.vm.network :private_network, ip: "192.168.33.11"
end
end
$ vagrant up
$ vagrant ssh web <= 複数起動時は引数にvm-nameを渡す
Vagrantまとめ
Vagrantでローカル使い捨て環境が準備できる
設定ファイルをバージョン管理して配布すれば同じ
仮想化環境を利用できる
Chef
Chef
サーバ構成を管理するソフトウェア
Rubyの内部DSLで記述されたレシピと、各種属性
情報なども含めたクックブックで構成が表現される
クックブックを適用することで構成が定められた状
態となる(冪等性の保証)
サーバ上のあらゆるリソースをクックブックで表現
パッケージ,サービス,設定ファイル,cron設定, ...
クラサバなChef
Chef-soloとKnife-solo
ローカルではクラサバなChefはオーバースペック
単一サーバでクックブックを適用するChef-solo
リモートでChef-soloを実行するKnife-soloが便利
Knife-solo自体はChefのプラグイン
VagrantゲストOSの構成管理はホストOSから
Knife-soloを使うのがオススメ
Railsアプリのレシピ(1)group 'www' do
group_name 'www'
gid 505
action :create
end
user 'www' do
comment 'www'
uid 505
group 'www'
home '/home/www'
shell '/bin/bash'
password nil
supports :manage_home => true
action [:create, :manage]
end
git "/home/www/rails_app" do
repository '/path/to/repository.git'
revision 'HEAD'
user 'www'
group 'www'
action :sync
end
Railsアプリのレシピ(2)bash "bundle_install" do
user 'www'
cwd '/home/www/rails_app'
code 'bundle install --deployment'
action :run
end
template "/etc/init.d/unicorn_rails" do
mode "0755"
source "unicorn_rails.erb"
end
template "/home/www/rails_app/unicorn_rails.conf" do
mode "0644"
owner "www"
group "www"
source "unicorn_rails.conf.erb"
end
service "unicorn_rails" do
action [ :enable, :start ]
subscribes :restart, resources(:template => "/home/www/rails_app/
unicorn_rails.conf")
end
まとめ
最初に提示した問題
サーバ環境/構成に関して、
トレーサビリティが低い
メンテナンスビリティが悪い
ポータビリティが低い
使い捨てできるアドホックな環境がない
最初に提示した問題
トレーサビリティとメンテナンスビリティ
Chefクックブックがバージョン管理されれば解決
ポータビリティとアドホック環境
ローカルはVagrant+Chefで、本番環境もChefで
構築するポリシーとすれば解決
Chefクックブックは誰が
書いていく?
アプリケーションエンジニア、インフラエンジニア
両方で書いくべき(提案)
クックブックのテストはローカルVagrant環境で
クックブックはバージョン管理して共有すべき

More Related Content

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

Laravelの認証について
Laravelの認証についてLaravelの認証について
Laravelの認証についてTakeo Noda
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)yoyamasaki
 
Rails 6.1 → 7.0アップデート記録
Rails 6.1 → 7.0アップデート記録Rails 6.1 → 7.0アップデート記録
Rails 6.1 → 7.0アップデート記録Maki Toshio
 
Control distribution of virtual machines
Control distribution of virtual machinesControl distribution of virtual machines
Control distribution of virtual machinesirix_jp
 
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDODB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDOShinya Sugiyama
 
Amalgam8 application switch for cloud native services
Amalgam8   application switch for cloud native servicesAmalgam8   application switch for cloud native services
Amalgam8 application switch for cloud native servicesTakehiko Amano
 
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史Takashi Takizawa
 
about dodai project in OSC 2012.Cloud
about dodai project in OSC 2012.Cloudabout dodai project in OSC 2012.Cloud
about dodai project in OSC 2012.CloudOsamu Habuka
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎schoowebcampus
 

Similar to VagrantとChefで開発スピードを上げる話 (10)

Laravelの認証について
Laravelの認証についてLaravelの認証について
Laravelの認証について
 
http2 最速実装 v2
http2 最速実装 v2 http2 最速実装 v2
http2 最速実装 v2
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)
 
Rails 6.1 → 7.0アップデート記録
Rails 6.1 → 7.0アップデート記録Rails 6.1 → 7.0アップデート記録
Rails 6.1 → 7.0アップデート記録
 
Control distribution of virtual machines
Control distribution of virtual machinesControl distribution of virtual machines
Control distribution of virtual machines
 
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDODB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
 
Amalgam8 application switch for cloud native services
Amalgam8   application switch for cloud native servicesAmalgam8   application switch for cloud native services
Amalgam8 application switch for cloud native services
 
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史
 
about dodai project in OSC 2012.Cloud
about dodai project in OSC 2012.Cloudabout dodai project in OSC 2012.Cloud
about dodai project in OSC 2012.Cloud
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
 

Recently uploaded

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (9)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

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