SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
Chefで作る開発環境 
FUNTERACTIVE OPEN MEETING VOL.05
FUNTERACTIVE OPEN MEETING VOL.05  
Yuji Tsukaguchi 
ファンタラクティブ株式会社 
COO, Web Designer 
無料写真素材サイト ぱくたそ 
Enginner 
@regret_raym
FUNTERACTIVE OPEN MEETING VOL.05 
FUNTERACTIVE OPEN MEETING VOL.05  
Chefとは? 
・Rubyでコードを記述するサーバ構成管理ツール 
! 
・サーバ / クライアント形式とスタンドアロン形式の2つ 
がある
Chef Server / Chef Client ( クライアント / サーバ形式 ) 
Chef Server 管理対象サーバ 
FUNTERACTIVE OPEN MEETING VOL.05  
Chefの動作形式 
Chef Server UI 
Chef Server API 
Rabbit MQ 
PostgreSQL 
Chef Client 
Chef Client 
Chef Client 
Chef Client 
Chefサーバを1台用意、対象サーバにはChef Clientをインストール
Chef Solo(スタンドアロン形式) 
クックブックChef Solo 
FUNTERACTIVE OPEN MEETING VOL.05  
Chefの動作形式 
ローカル端末対象サーバ 
Upload 
Chef Soloを実行サーバにインストール、設定内容のクックブック 
を配置して実行する
FUNTERACTIVE OPEN MEETING VOL.05  
Chefの用語 
■ レシピ 
  Rubyコードで書いたサーバ設定の手順 
■ クックブック 
  レシピに必要なデータやファイルをまとめる入れ物 
■ リポジトリ、キッチン 
  クックブックを含むChefの実行に必要なファイルの入れ物 
■ ナイフ( knife ) 
  リポジトリを操作するツール、クックブックはこれで作る 
■ ノード 
  Chefで管理するサーバのこと
Chef Soloの基本 
FUNTERACTIVE OPEN MEETING VOL.05 
FUNTERACTIVE OPEN MEETING VOL.05  
Chef Soloの使い方 
ローカル端末対象サーバ 
クックブックChef Solo 
Upload 
レシピ 
クックブックを作ってレシピを書くコマンド実行
FUNTERACTIVE OPEN MEETING VOL.05  
Vagrant 
# 任意のディレクトリ 
$ vagrant init BOX 
! 
# 起動 
$ vagrant up 
! 
# ssh-config設定 
$ vagrant ssh-config —host webdb >> ~/.ssh/config 
! 
# ログイン 
$ ssh webdb
FUNTERACTIVE OPEN MEETING VOL.05  
Install 
# インストール 
$ curl -L https://www.opscode.com.chef/install.sh | 
sudo bash 
! 
# Chef Soloの実行確認 
$ chef-solo -v 
※Vagrantを使ってインストール
クックブックを作ってレシピを実行 
# /var/chef/cookbooksディレクトリ内に作成 
$ sudo knife cookbook create hello /var/chef/cookbooks 
! 
# レシピの編集 
$ sudo vi /var/chef/cookbokks/hello/recipes.default.rb 
log “Hellow World!” 
! 
# Chef Solo実行 
$ sudo chef-solo -o hello 
FUNTERACTIVE OPEN MEETING VOL.05 
FUNTERACTIVE OPEN MEETING VOL.05  
knife-soloを使う 
ローカル端末対象サーバ 
クックブックChef Solo 
Upload 
レシピ 
クックブックを作ってレシピを書くコマンド実行 
knife-solo
knife-soloのインストール 
# インストール 
$ sudo gem install knife-solo 
$ sudo gem install berkshelf 
! 
# カレントディレクトリにリポジトリを準備 
$ knife solo init . 
FUNTERACTIVE OPEN MEETING VOL.05 
ディレクトリ構成 
. 
├── Berksfile 
├── Vagrantfile 
├── cookbooks/ 
├── data_bags/ 
├── environments/ 
├── nodes/ 
├── roles/ 
└── site-cookbooks/ 
FUNTERACTIVE OPEN MEETING VOL.05 
knife soloでChef Soloインストール 
# knife soloでChef Soloインストール 
$ knife solo bootstrap webdb 
! 
# クックブック作成 
$ knife cookbook create hello -o site-cookbooks 
! 
# レシピ編集 
$ vi site-cookbooks/hello/recipes/default.rb 
log “Hello World!” 
FUNTERACTIVE OPEN MEETING VOL.05 
Nodeオブジェクトの設定 
# Nodeオブジェクト設定ファイルの編集 
$ vi nodes/webdb.json 
! 
{ 
“run_list” : [ 
“recipe[hello]” 
] 
} 
webdbというホストノードにhelloというレシピが適用される 
FUNTERACTIVE OPEN MEETING VOL.05 
knife-soloでChef Soloを実行 
# プロビジョニング 
$ knife solo cook webdb 
! 
# サーバに直接実行する場合 
$ knife solo cook user@exsample.com -i ~/.ssh/id_rsa 
FUNTERACTIVE OPEN MEETING VOL.05 
クックブックを作る 
FUNTERACTIVE OPEN MEETING VOL.05 
タスクごとにクックブックを作成 
Apache MySQL 
yum 
FUNTERACTIVE OPEN MEETING VOL.05  
クックブック作成 
PHP 
iptables 
…etc 
$ bundle exec knife cookbook create apache -o 
site-cookbooks
FUNTERACTIVE OPEN MEETING VOL.05  
bundler? 
# Bundlerでgemの依存関係を解決 
$ sudo gem install bundler 
! 
$ vi Gemfile 
! 
source ‘https://rubygems.org’ 
! 
gem ‘chef’ 
gem ‘knife-solo’ 
gem ‘berkshelf’ 
! 
$ bundle install 
! 
$ vagrant init 
! 
$ bundle exec knife solo init .
FUNTERACTIVE OPEN MEETING VOL.05  
レシピの作り方 
■ 初期値を設定する(Attribute) 
! 
■ 設定ファイル(template)を配置する 
! 
■ レシピを書く
テンプレートやレシピの中から参照できるもの 
FUNTERACTIVE OPEN MEETING VOL.05  
Attribute 
default['apache'] 
[:packages] = %w[ 
httpd 
httpd-devel 
] 
. 
├── site-cookbooks/ 
├── attributes 
├── default.rb 
site-cookbooks/apache/attributes/default.rb
FUNTERACTIVE OPEN MEETING VOL.05  
Template 
. 
├── site-cookbooks/ 
├── templates 
├── default 
http.conf.erb 
vhost.conf.erb 
• クックブックのtemplateディレクトリ内に設定ファイルを置く 
• Templateリソースで設定ファイルをChef実行時に配置する
FUNTERACTIVE OPEN MEETING VOL.05  
レシピの例 
node['apache']['packages'].each do |pkg| 
package "#{pkg}" do 
action :install 
notifies :restart, 'service[httpd]', :delayed 
end 
end 
! 
service 'httpd' do 
supports :status => true, :restart => true, :reload 
=> true 
action [ :enable, :start ] 
end 
! template '/etc/httpd/conf/httpd.conf' do 
Attributeで設定した 
パッケージインストール 
サービスの設定 
templateフォルダに配 
置した設定ファイルを 
配置 
source 'httpd.conf.erb' 
notifies :restart, 'service[httpd]' 
end 
site-cookbooks/apache/recipes/default.rb
コミュニティクックブック 
FUNTERACTIVE OPEN MEETING VOL.05 
FUNTERACTIVE OPEN MEETING VOL.05  
_ 
http://cookbooks.opscode.com/cookbooks
コミュニティクックブック 
Chefのクックブックが集積されている 
# クックブックを検索 
$ knife cookbook site search apache2 
! 
# クックブックの詳細 
$ knife cookbook site show apache2 | head -20 
! 
# クックブックのリスト一覧 
$ knife cookbook site list 
! 
# クックブックのダウンロード 
$ knife cookbook site install apache2 
FUNTERACTIVE OPEN MEETING VOL.05 
FUNTERACTIVE OPEN MEETING VOL.05  
Berkshelf 
■ クックブックの依存管理ツール 
! 
■ bundlerと似たようなもの 
! 
■ 定義しておけば、リポジトリから 
依存関係解消して落としてきてくれる
FUNTERACTIVE OPEN MEETING VOL.05  
Berksfile 
$ vi Berksfile 
! 
source “https://supermarket.getchef.com" 
#もしくは site :opscode 
! 
metadata 
! 
cookbook “yum" 
cookbook "git" 
cookbook "vim" 
cookbook "apache2" 
cookbook "php" 
cookbook “mysql" 
! 
$ bundle exec berks install —path ./cookbooks 
! 
$ bundle exec knife solo cook webdb
WordPress環境 
FUNTERACTIVE OPEN MEETING VOL.05 
FUNTERACTIVE OPEN MEETING VOL.05  
http://vccw.cc/
FUNTERACTIVE OPEN MEETING VOL.05  
VCCW 
$ vagrant plugin install vagrant-hostsupdater 
! 
$ git clone git@github.com:miya0001/vccw.git 
! 
$ cd vccw 
! 
$ cp Vagrantfile.sample Vagrantfile 
! 
$ vagrant up 
! 
Visit http://192.168.33.10/
FUNTERACTIVE OPEN MEETING VOL.05  
補足 
Chef Soloは2014年6月に引退アナウンス 
今後はChef Zeroに移行
FUNTERACTIVE OPEN MEETING VOL.05  
Chef Zero 
Chef Zeroは開発のために、完全で、インメモリで、高速起動 
するChef Serverです。データをディスクに残したり、認証や 
認可を行うこともありません。 
! 
ローカルモードは実行中に、ローカルChef Zeroサーバを 
localhostに起動し、すべてのローカルCookbookとRecipe 
をそちらにアップロードし、Chef Clientを実行し、そして 
Chef Zeroサーバを終了するという一連の動作を除けば、 
Chef Soloのように動作します。 
https://www.chef.io/blog/2014/06/24/from-solo-to-zero-migrating-to-chef-client-local-mode/
ご清聴ありがとうございました 
FUNTERACTIVE OPEN MEETING VOL.05 

Weitere ähnliche Inhalte

Was ist angesagt?

明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudyTakeshi Komiya
 
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方666oh666
 
Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01regret raym
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Takashi Kanai
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Kazuto Ohara
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalkBIGLOBE Tech Talk
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalkBIGLOBE Tech Talk
 
社内勉強会 - chef
社内勉強会 - chef社内勉強会 - chef
社内勉強会 - chefNemoto Yusuke
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE辰徳 斎藤
 
クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0NIFTY Cloud
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 Hideo Takahashi
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Masayuki Morita
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからTakeshi Kuramochi
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)佐久本正太
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0NIFTY Cloud
 
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnairシンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnairNaoya Inada
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜Naotoshi Seo
 

Was ist angesagt? (20)

明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
 
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方
 
Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 
社内勉強会 - chef
社内勉強会 - chef社内勉強会 - chef
社内勉強会 - chef
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
NDS#31
NDS#31NDS#31
NDS#31
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)
 
Vagrant+Chef
Vagrant+ChefVagrant+Chef
Vagrant+Chef
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
 
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnairシンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnair
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
 

Andere mochten auch

S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成Microsoft Azure Japan
 
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~Terui Masashi
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecYukihiko SAWANOBORI
 
Marketin industrial
Marketin industrialMarketin industrial
Marketin industrialcharlierod62
 
Niños presidentes
Niños presidentesNiños presidentes
Niños presidentesPanista
 
Presentacion folleto
Presentacion folletoPresentacion folleto
Presentacion folletoKarina Flores
 
อังกฤษ
อังกฤษอังกฤษ
อังกฤษikwanz
 
Second Natur
Second NaturSecond Natur
Second Naturfegome1
 
Digital scavenger hunt
Digital scavenger huntDigital scavenger hunt
Digital scavenger huntjcruzp6
 

Andere mochten auch (15)

S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成
 
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
 
Chef on azure
Chef on azureChef on azure
Chef on azure
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
 
Marketin industrial
Marketin industrialMarketin industrial
Marketin industrial
 
Niños presidentes
Niños presidentesNiños presidentes
Niños presidentes
 
Presentacion folleto
Presentacion folletoPresentacion folleto
Presentacion folleto
 
Aparell respiratori
Aparell respiratoriAparell respiratori
Aparell respiratori
 
อังกฤษ
อังกฤษอังกฤษ
อังกฤษ
 
Cartilha startup
Cartilha startupCartilha startup
Cartilha startup
 
Measurefest 8th October 2014 - speaker deck
Measurefest 8th October 2014 - speaker deckMeasurefest 8th October 2014 - speaker deck
Measurefest 8th October 2014 - speaker deck
 
Second Natur
Second NaturSecond Natur
Second Natur
 
Health, healing, heaven
Health, healing, heavenHealth, healing, heaven
Health, healing, heaven
 
Pata rat
Pata ratPata rat
Pata rat
 
Digital scavenger hunt
Digital scavenger huntDigital scavenger hunt
Digital scavenger hunt
 

Ähnlich wie Chefで作る開発環境

Chefのはじめの一歩
Chefのはじめの一歩Chefのはじめの一歩
Chefのはじめの一歩Misa Kondo
 
ニフティ社内の Chef 利用について
ニフティ社内の Chef 利用についてニフティ社内の Chef 利用について
ニフティ社内の Chef 利用についてtidnlyam
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacTakeshi Komiya
 
Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Matthew Romaine
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Taku Unno
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChefMasahiro NAKAYAMA
 
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)Yuuki Namikawa
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
2014_0206 aws startup_tech
2014_0206 aws startup_tech2014_0206 aws startup_tech
2014_0206 aws startup_techYosuke Tomita
 
Chef solo 入門の入門
Chef solo 入門の入門Chef solo 入門の入門
Chef solo 入門の入門正之 安宅
 
DevOps 研修 中級編#01
DevOps 研修 中級編#01DevOps 研修 中級編#01
DevOps 研修 中級編#01Hiro Fukami
 
Chef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + BerkshelfChef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + BerkshelfMasahiro NAKAYAMA
 
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithackChef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack満徳 関
 
Using Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba PiggUsing Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba PiggYuuki Namikawa
 
サーバー設定自動化は経営課題
サーバー設定自動化は経営課題 サーバー設定自動化は経営課題
サーバー設定自動化は経営課題 Maho Takara
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfesTakeshi Komiya
 

Ähnlich wie Chefで作る開発環境 (20)

Chefのはじめの一歩
Chefのはじめの一歩Chefのはじめの一歩
Chefのはじめの一歩
 
ニフティ社内の Chef 利用について
ニフティ社内の Chef 利用についてニフティ社内の Chef 利用について
ニフティ社内の Chef 利用について
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
 
Chef
ChefChef
Chef
 
Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
2014_0206 aws startup_tech
2014_0206 aws startup_tech2014_0206 aws startup_tech
2014_0206 aws startup_tech
 
Chef solo 入門の入門
Chef solo 入門の入門Chef solo 入門の入門
Chef solo 入門の入門
 
DevOps 研修 中級編#01
DevOps 研修 中級編#01DevOps 研修 中級編#01
DevOps 研修 中級編#01
 
Chef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + BerkshelfChef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + Berkshelf
 
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithackChef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
 
test
testtest
test
 
Dockerの導入
Dockerの導入Dockerの導入
Dockerの導入
 
Using Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba PiggUsing Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba Pigg
 
サーバー設定自動化は経営課題
サーバー設定自動化は経営課題 サーバー設定自動化は経営課題
サーバー設定自動化は経営課題
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
Apache Module
Apache ModuleApache Module
Apache Module
 

Mehr von regret raym

React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示するregret raym
 
SlackにHubotを設定して対話する
SlackにHubotを設定して対話するSlackにHubotを設定して対話する
SlackにHubotを設定して対話するregret raym
 
CreateJSを使ったアニメーション表現の基礎
CreateJSを使ったアニメーション表現の基礎CreateJSを使ったアニメーション表現の基礎
CreateJSを使ったアニメーション表現の基礎regret raym
 
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそregret raym
 
FluentdとGrothForecastをインストールする
FluentdとGrothForecastをインストールするFluentdとGrothForecastをインストールする
FluentdとGrothForecastをインストールするregret raym
 
MT東京 ぱくたそ/PAKUTASO
MT東京 ぱくたそ/PAKUTASOMT東京 ぱくたそ/PAKUTASO
MT東京 ぱくたそ/PAKUTASOregret raym
 
今から始めるPhotoshopによるWeb制作-初期設定編
今から始めるPhotoshopによるWeb制作-初期設定編今から始めるPhotoshopによるWeb制作-初期設定編
今から始めるPhotoshopによるWeb制作-初期設定編regret raym
 
Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレregret raym
 
WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法regret raym
 
WordCamp Tokyo2012 handson Portfolio
WordCamp Tokyo2012 handson PortfolioWordCamp Tokyo2012 handson Portfolio
WordCamp Tokyo2012 handson Portfolioregret raym
 
WordCamp Tokyo2012 Session
WordCamp Tokyo2012 SessionWordCamp Tokyo2012 Session
WordCamp Tokyo2012 Sessionregret raym
 
Movable typeでモバイルギャラリーサイト
Movable typeでモバイルギャラリーサイトMovable typeでモバイルギャラリーサイト
Movable typeでモバイルギャラリーサイトregret raym
 
Css拡張言語のコトハジメ
Css拡張言語のコトハジメCss拡張言語のコトハジメ
Css拡張言語のコトハジメregret raym
 

Mehr von regret raym (15)

React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示する
 
SlackにHubotを設定して対話する
SlackにHubotを設定して対話するSlackにHubotを設定して対話する
SlackにHubotを設定して対話する
 
CreateJSを使ったアニメーション表現の基礎
CreateJSを使ったアニメーション表現の基礎CreateJSを使ったアニメーション表現の基礎
CreateJSを使ったアニメーション表現の基礎
 
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
 
FluentdとGrothForecastをインストールする
FluentdとGrothForecastをインストールするFluentdとGrothForecastをインストールする
FluentdとGrothForecastをインストールする
 
MT東京 ぱくたそ/PAKUTASO
MT東京 ぱくたそ/PAKUTASOMT東京 ぱくたそ/PAKUTASO
MT東京 ぱくたそ/PAKUTASO
 
今から始めるPhotoshopによるWeb制作-初期設定編
今から始めるPhotoshopによるWeb制作-初期設定編今から始めるPhotoshopによるWeb制作-初期設定編
今から始めるPhotoshopによるWeb制作-初期設定編
 
Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレ
 
Yurufuwa007
Yurufuwa007Yurufuwa007
Yurufuwa007
 
WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法
 
WordCamp Tokyo2012 handson Portfolio
WordCamp Tokyo2012 handson PortfolioWordCamp Tokyo2012 handson Portfolio
WordCamp Tokyo2012 handson Portfolio
 
WordCamp Tokyo2012 Session
WordCamp Tokyo2012 SessionWordCamp Tokyo2012 Session
WordCamp Tokyo2012 Session
 
Movable typeでモバイルギャラリーサイト
Movable typeでモバイルギャラリーサイトMovable typeでモバイルギャラリーサイト
Movable typeでモバイルギャラリーサイト
 
Css拡張言語のコトハジメ
Css拡張言語のコトハジメCss拡張言語のコトハジメ
Css拡張言語のコトハジメ
 
Wp html5
Wp html5Wp html5
Wp html5
 

Chefで作る開発環境

  • 2. FUNTERACTIVE OPEN MEETING VOL.05  Yuji Tsukaguchi ファンタラクティブ株式会社 COO, Web Designer 無料写真素材サイト ぱくたそ Enginner @regret_raym
  • 4. FUNTERACTIVE OPEN MEETING VOL.05  Chefとは? ・Rubyでコードを記述するサーバ構成管理ツール ! ・サーバ / クライアント形式とスタンドアロン形式の2つ がある
  • 5. Chef Server / Chef Client ( クライアント / サーバ形式 ) Chef Server 管理対象サーバ FUNTERACTIVE OPEN MEETING VOL.05  Chefの動作形式 Chef Server UI Chef Server API Rabbit MQ PostgreSQL Chef Client Chef Client Chef Client Chef Client Chefサーバを1台用意、対象サーバにはChef Clientをインストール
  • 6. Chef Solo(スタンドアロン形式) クックブックChef Solo FUNTERACTIVE OPEN MEETING VOL.05  Chefの動作形式 ローカル端末対象サーバ Upload Chef Soloを実行サーバにインストール、設定内容のクックブック を配置して実行する
  • 7. FUNTERACTIVE OPEN MEETING VOL.05  Chefの用語 ■ レシピ   Rubyコードで書いたサーバ設定の手順 ■ クックブック   レシピに必要なデータやファイルをまとめる入れ物 ■ リポジトリ、キッチン   クックブックを含むChefの実行に必要なファイルの入れ物 ■ ナイフ( knife )   リポジトリを操作するツール、クックブックはこれで作る ■ ノード   Chefで管理するサーバのこと
  • 8. Chef Soloの基本 FUNTERACTIVE OPEN MEETING VOL.05 
  • 9. FUNTERACTIVE OPEN MEETING VOL.05  Chef Soloの使い方 ローカル端末対象サーバ クックブックChef Solo Upload レシピ クックブックを作ってレシピを書くコマンド実行
  • 10. FUNTERACTIVE OPEN MEETING VOL.05  Vagrant # 任意のディレクトリ $ vagrant init BOX ! # 起動 $ vagrant up ! # ssh-config設定 $ vagrant ssh-config —host webdb >> ~/.ssh/config ! # ログイン $ ssh webdb
  • 11. FUNTERACTIVE OPEN MEETING VOL.05  Install # インストール $ curl -L https://www.opscode.com.chef/install.sh | sudo bash ! # Chef Soloの実行確認 $ chef-solo -v ※Vagrantを使ってインストール
  • 12. クックブックを作ってレシピを実行 # /var/chef/cookbooksディレクトリ内に作成 $ sudo knife cookbook create hello /var/chef/cookbooks ! # レシピの編集 $ sudo vi /var/chef/cookbokks/hello/recipes.default.rb log “Hellow World!” ! # Chef Solo実行 $ sudo chef-solo -o hello FUNTERACTIVE OPEN MEETING VOL.05 
  • 13. FUNTERACTIVE OPEN MEETING VOL.05  knife-soloを使う ローカル端末対象サーバ クックブックChef Solo Upload レシピ クックブックを作ってレシピを書くコマンド実行 knife-solo
  • 14. knife-soloのインストール # インストール $ sudo gem install knife-solo $ sudo gem install berkshelf ! # カレントディレクトリにリポジトリを準備 $ knife solo init . FUNTERACTIVE OPEN MEETING VOL.05 
  • 15. ディレクトリ構成 . ├── Berksfile ├── Vagrantfile ├── cookbooks/ ├── data_bags/ ├── environments/ ├── nodes/ ├── roles/ └── site-cookbooks/ FUNTERACTIVE OPEN MEETING VOL.05 
  • 16. knife soloでChef Soloインストール # knife soloでChef Soloインストール $ knife solo bootstrap webdb ! # クックブック作成 $ knife cookbook create hello -o site-cookbooks ! # レシピ編集 $ vi site-cookbooks/hello/recipes/default.rb log “Hello World!” FUNTERACTIVE OPEN MEETING VOL.05 
  • 17. Nodeオブジェクトの設定 # Nodeオブジェクト設定ファイルの編集 $ vi nodes/webdb.json ! { “run_list” : [ “recipe[hello]” ] } webdbというホストノードにhelloというレシピが適用される FUNTERACTIVE OPEN MEETING VOL.05 
  • 18. knife-soloでChef Soloを実行 # プロビジョニング $ knife solo cook webdb ! # サーバに直接実行する場合 $ knife solo cook user@exsample.com -i ~/.ssh/id_rsa FUNTERACTIVE OPEN MEETING VOL.05 
  • 20. タスクごとにクックブックを作成 Apache MySQL yum FUNTERACTIVE OPEN MEETING VOL.05  クックブック作成 PHP iptables …etc $ bundle exec knife cookbook create apache -o site-cookbooks
  • 21. FUNTERACTIVE OPEN MEETING VOL.05  bundler? # Bundlerでgemの依存関係を解決 $ sudo gem install bundler ! $ vi Gemfile ! source ‘https://rubygems.org’ ! gem ‘chef’ gem ‘knife-solo’ gem ‘berkshelf’ ! $ bundle install ! $ vagrant init ! $ bundle exec knife solo init .
  • 22. FUNTERACTIVE OPEN MEETING VOL.05  レシピの作り方 ■ 初期値を設定する(Attribute) ! ■ 設定ファイル(template)を配置する ! ■ レシピを書く
  • 23. テンプレートやレシピの中から参照できるもの FUNTERACTIVE OPEN MEETING VOL.05  Attribute default['apache'] [:packages] = %w[ httpd httpd-devel ] . ├── site-cookbooks/ ├── attributes ├── default.rb site-cookbooks/apache/attributes/default.rb
  • 24. FUNTERACTIVE OPEN MEETING VOL.05  Template . ├── site-cookbooks/ ├── templates ├── default http.conf.erb vhost.conf.erb • クックブックのtemplateディレクトリ内に設定ファイルを置く • Templateリソースで設定ファイルをChef実行時に配置する
  • 25. FUNTERACTIVE OPEN MEETING VOL.05  レシピの例 node['apache']['packages'].each do |pkg| package "#{pkg}" do action :install notifies :restart, 'service[httpd]', :delayed end end ! service 'httpd' do supports :status => true, :restart => true, :reload => true action [ :enable, :start ] end ! template '/etc/httpd/conf/httpd.conf' do Attributeで設定した パッケージインストール サービスの設定 templateフォルダに配 置した設定ファイルを 配置 source 'httpd.conf.erb' notifies :restart, 'service[httpd]' end site-cookbooks/apache/recipes/default.rb
  • 27. FUNTERACTIVE OPEN MEETING VOL.05  _ http://cookbooks.opscode.com/cookbooks
  • 28. コミュニティクックブック Chefのクックブックが集積されている # クックブックを検索 $ knife cookbook site search apache2 ! # クックブックの詳細 $ knife cookbook site show apache2 | head -20 ! # クックブックのリスト一覧 $ knife cookbook site list ! # クックブックのダウンロード $ knife cookbook site install apache2 FUNTERACTIVE OPEN MEETING VOL.05 
  • 29. FUNTERACTIVE OPEN MEETING VOL.05  Berkshelf ■ クックブックの依存管理ツール ! ■ bundlerと似たようなもの ! ■ 定義しておけば、リポジトリから 依存関係解消して落としてきてくれる
  • 30. FUNTERACTIVE OPEN MEETING VOL.05  Berksfile $ vi Berksfile ! source “https://supermarket.getchef.com" #もしくは site :opscode ! metadata ! cookbook “yum" cookbook "git" cookbook "vim" cookbook "apache2" cookbook "php" cookbook “mysql" ! $ bundle exec berks install —path ./cookbooks ! $ bundle exec knife solo cook webdb
  • 32. FUNTERACTIVE OPEN MEETING VOL.05  http://vccw.cc/
  • 33. FUNTERACTIVE OPEN MEETING VOL.05  VCCW $ vagrant plugin install vagrant-hostsupdater ! $ git clone git@github.com:miya0001/vccw.git ! $ cd vccw ! $ cp Vagrantfile.sample Vagrantfile ! $ vagrant up ! Visit http://192.168.33.10/
  • 34. FUNTERACTIVE OPEN MEETING VOL.05  補足 Chef Soloは2014年6月に引退アナウンス 今後はChef Zeroに移行
  • 35. FUNTERACTIVE OPEN MEETING VOL.05  Chef Zero Chef Zeroは開発のために、完全で、インメモリで、高速起動 するChef Serverです。データをディスクに残したり、認証や 認可を行うこともありません。 ! ローカルモードは実行中に、ローカルChef Zeroサーバを localhostに起動し、すべてのローカルCookbookとRecipe をそちらにアップロードし、Chef Clientを実行し、そして Chef Zeroサーバを終了するという一連の動作を除けば、 Chef Soloのように動作します。 https://www.chef.io/blog/2014/06/24/from-solo-to-zero-migrating-to-chef-client-local-mode/