SlideShare une entreprise Scribd logo
1  sur  26
chef
Chef概論と
レシピ実践入門
大原 和人(やまと)
1
chef 目次
Chef概論
Chefとは
Chef SoloとChef Server
Chef導入でここが変わる!
レシピ実践入門~Apacheの設定レシピを書
いてみよう!~
インストール
起動、自動起動
VirtualHostの設定
サーバ情報を表示してみる
Copyright 2014 All About,inc. 2
chef Chefとは
インフラ構築・管理を自動化するツール
インフラの状態をコードで管理(Ruby)
• 構築手順ではない
冪等性を保証する
• 何度実行しても同じ結果になる
Copyright 2014 All About,inc. 3
chef Chef SoloとChef Server
Chef Solo(スタンドアロン)
サーバで直接動く
すぐに始められる、小規模向き
→ローカル開発環境の管理などに利用
Copyright 2014 All About,inc. 4
作業端末
Cookbookをアップロードし実行する
対象サーバ
chef Chef SoloとChef Server
Chef Server(クライアント/サーバ)
Chef Serverでサーバの設定情報が管理される
サーバ情報、設定情報を一元管理できるので大
規模な場合便利
→本番環境等の管理に利用
Copyright 2014 All About,inc. 5
作業端末
対象サーバ
Chef Server
chef Chef導入でここが変わる!
ローカル開発環境構築の自動化・統一化
設定変更時もレシピをPullして実行するだけ
開発者もインフラ設定を触れる(DevOps)
実現速度向上
インフラ設定が全てレビューされる
品質向上
インフラ設定がバージョン管理される
いつ、誰が、何のために、どの設定を変更したのかがわ
かる
Copyright 2014 All About,inc. 6
Infrastructure as Code + Github flow
chef Chef導入でここが変わる!
サーバの統一的かつ動的な管理が可能になる
Ohaiによるサーバ情報の自動登録
強力な検索機能
• IPが10.255.255.xのサーバ一覧
• アプリ”aa-front”が動いているサーバ一覧 など
サーバ情報と紐付いた設定の自動化が出来る
サーバに対応するアプリのVirtualHostを自動作成
本番とステージングでターミナルの色を変える など
Copyright 2014 All About,inc. 7
Chef Serverによる管理自動化
参考:Ohai
http://heartbeats.jp/hbblog/2013/06/use-ohai.html
chef Chefレシピ実践入門
Apacheの設定レシピを書いてみよう!
Apacheのインストール
Apacheの起動
VirtualHostの設定
• ディレクトリ作成
• Apache設定の追加
サーバ情報を表示してみる
Copyright 2014 All About,inc. 8
chef 注意点
設定対象サーバにログインするの禁止!
手動での設定変更は事故につながります
本当はテスト書くといいんだけど、それ
はまた今度
serverspec
http://serverspec.org/
Copyright 2014 All About,inc. 9
chef ハンズオン環境
Knife Soloを利用
Chef Soloのリモート実行をいい感じに面倒み
てくれるツール
配布したVM
user/passはroot/vagrant
knife01(192.168.56.11)
• Knife Soloはインストール済み
• Samba設定してあるので、レシピの編集はお好み
のエディタでどうぞ
test-web01(192.168.56.12)
• 基本的なCentOS6.5
Copyright 2014 All About,inc. 10
knife01 test-web01
chef 準備
公開鍵認証設定
/etc/hosts 192.168.56.12 test-web01
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub test-web01
Chefリポジトリ作成
mkdir chef-lesson
cd chef-lesson
knife solo init .
test-web01のChefセットアップ
knife solo prepare test-web01
Cookbookの作成
knife cookbook create httpd -o site-cookbooks
Copyright 2014 All About,inc. 11
chef レシピの記述①
Apacheのインストール
site-cookbooks/httpd/recipes/default.rb
Copyright 2014 All About,inc. 12
package "httpd" do
action :install
end
http://docs.getchef.com/resource_package.html
chef レシピの適用
run_listの指定
nodes/test-web01.json
レシピ適用
knife solo cook test-web01
knife solo cook test-web01 –W (dry-run)
Copyright 2014 All About,inc. 13
{
"run_list": [
"recipe[httpd]"
],
"automatic": {
"ipaddress": "test-web01"
}
}
chef レシピの記述②
Apacheの起動、自動起動
site-cookbooks/httpd/recipes/default.rb
Apacheが起動されたか確認
• http://192.168.56.12/
Copyright 2014 All About,inc. 14
service 'httpd' do
action [ :enable, :start]
supports :status => true, :restart => true,
:reload => true
end
http://docs.getchef.com/resource_service.html
chef レシピの記述③
VirtualHostの設定
アプリ、ログ共通ディレクトリ作成
• /app, /AccessLog.local
アプリ固有ディレクトリ作成
• /app/test, /AccessLog.local/test
Apache設定の追加
• /etc/httpd/conf.d/test.conf
Copyright 2014 All About,inc. 15
chef レシピの記述③
アプリ、ログ共通ディレクトリ作成
Copyright 2014 All About,inc. 16
directory '/app' do
action :create
owner 'root'
group 'root'
mode '0755'
end
directory '/AccessLog.local' do
action :create
owner 'root'
group 'root'
mode '0755'
end
http://docs.getchef.com/resource_directory.html
chef レシピの書き方の注意点
クックブックへのハードコーディングを
避ける
重複する記述をループで処理する
Copyright 2014 All About,inc. 17
ちょっと待った!
私のコード
長すぎ
chef
node.default['httpd']['directories'].each do |key,dir|
directory dir do
owner 'root'
group 'root'
mode 0755
action :create
end
end
Attribute,ループを活用
site-cookbooks/httpd/attribute/default.rb
site-cookbooks/httpd/recipes/default.rb
レシピの書き方の注意点
Copyright 2014 All About,inc. 18
default['httpd']['directories']['app'] = "/app"
default['httpd']['directories']['log'] = "/AccessLog.local"
chef レシピの記述③
アプリ固有ディレクトリ作成
/app/test, /AccessLog.local/test
レシピのattributeに書くと、サーバごとに設
定を変えられない
サーバにアプリ情報を登録しておいて、それ
を元に作成するようにしたい
Copyright 2014 All About,inc. 19
chef レシピの記述③
アプリ固有のディレクトリ
nodes/test-web01.json
Copyright 2014 All About,inc. 20
{
"run_list": [
"recipe[httpd]"
],
"normal": {
"apps": [
"test"
]
},
"automatic": {
"ipaddress": "test-web01"
}
}
chef レシピの記述③
アプリ固有のディレクトリ
site-cookbooks/httpd/recipes/default.rb
Copyright 2014 All About,inc. 21
node['normal']['apps'].each do |app_name|
node.default['httpd']['directories'].each do |key,base_dir|
dir = base_dir + "/" + app_name
directory dir do
owner 'root'
group 'root'
mode 0755
action :create
end
end
end
chef レシピの記述③
Apache設定の追加
/etc/httpd/conf.d/配下にvhostごとの設定を置く
テンプレート機能を利用
• 指定のファイルを指定の場所に設置
• ファイルの中にRubyコードを埋め込める(erb)
テンプレート設置ディレクトリの作成
• mkdir -p site-
cookbooks/httpd/templates/default/etc/httpd/conf.d
Copyright 2014 All About,inc. 22
chef レシピの記述③
Apache設定の追加
テンプレート用レシピ
site-cookbooks/httpd/recipes/default.rb
Copyright 2014 All About,inc. 23
node['normal']['apps'].each do |app_name|
・・・
template "/etc/httpd/conf.d/#{app_name}.conf" do
source 'etc/httpd/conf.d/vhost.conf.erb'
notifies :restart, "service[httpd]"
variables({
:app_name => app_name
})
end
end
chef レシピの記述③
Apache設定の追加
site-cookbooks/httpd/templates/default/
etc/httpd/conf.d/vhost.conf.erb
Copyright 2014 All About,inc. 24
<Directory <%= node['httpd']['directories']['app'] %>/<%= @app_name %>>
AllowOverride All
Options Includes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
DocumentRoot <%= node['httpd']['directories']['app'] %>/<%= @app_name
%>
ServerName <%= @app_name %>.com
ErrorLog <%= node['httpd']['directories']['log'] %>/<%= @app_name
%>/<%= @app_name %>-error_log
CustomLog <%= node['httpd']['directories']['log'] %>/<%= @app_name
%>/<%= @app_name %>-access_log combined
</VirtualHost>
chef レシピの記述④
サーバ情報を表示してみよう
site-cookbooks/httpd/recipes/default.rb
site-cookbooks/httpd/templates/default/
app/index.html.erb
Copyright 2014 All About,inc. 25
template "/app/#{app_name}/index.html" do
source "app/index.html.erb"
end
<%= node['hostname'] %><br>
<%= node['ipaddress'] %><br>
<%= node['macaddress'] %><br>
<%= node['platform'] %><%= node['platform_version'] %><br>
<%= node['memory'] %><br>
<%= node['network'] %>
参考:Ohai
http://heartbeats.jp/hbblog/2013/06/use-ohai.html
chef 参考
vagrant sahara
レシピ実行前の状態にロールバックできる
インストール
• vagrant plugin install sahara
操作
• vagrant sandbox on
• vagrant sandbox commit
• vagrant sandbox rollback
Copyright 2014 All About,inc. 26

Contenu connexe

Tendances

20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
NIFTY Cloud
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
 

Tendances (20)

20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
 
Chef windows linux環境構築
Chef windows linux環境構築Chef windows linux環境構築
Chef windows linux環境構築
 
Itamae-Serverspec入門
Itamae-Serverspec入門Itamae-Serverspec入門
Itamae-Serverspec入門
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 
Windows7でもchefしたい!
Windows7でもchefしたい!Windows7でもchefしたい!
Windows7でもchefしたい!
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
 
Puppetのススメ
PuppetのススメPuppetのススメ
Puppetのススメ
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Serverspecの活用tips紹介
Serverspecの活用tips紹介Serverspecの活用tips紹介
Serverspecの活用tips紹介
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
 
Serverspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingServerspec at Testing Framework Meeting
Serverspec at Testing Framework Meeting
 
Server specのご紹介
Server specのご紹介Server specのご紹介
Server specのご紹介
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Chefで作る開発環境
Chefで作る開発環境Chefで作る開発環境
Chefで作る開発環境
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstart
 
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
 

En vedette

En vedette (20)

Chef社内向け解説とその課題について
Chef社内向け解説とその課題についてChef社内向け解説とその課題について
Chef社内向け解説とその課題について
 
はかどるChefの小ネタ集
はかどるChefの小ネタ集はかどるChefの小ネタ集
はかどるChefの小ネタ集
 
オールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組みオールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組み
 
Ansible container
Ansible containerAnsible container
Ansible container
 
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
 
RubyでDSL
RubyでDSLRubyでDSL
RubyでDSL
 
Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程
 
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
 
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
 
CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成
CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成
CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成
 
入門Ansible
入門Ansible入門Ansible
入門Ansible
 
Ansibleの現在とこれから
Ansibleの現在とこれからAnsibleの現在とこれから
Ansibleの現在とこれから
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
DevOps Practices: Configuration as Code
DevOps Practices:Configuration as CodeDevOps Practices:Configuration as Code
DevOps Practices: Configuration as Code
 
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixConfiguration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 

Similaire à Chef概論とレシピ実践入門

DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
Yusuke Ando
 
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithackChef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
満徳 関
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4
Taku Unno
 
小さく始めて後で困らないためのVPCとChefを使ったAWS運用
小さく始めて後で困らないためのVPCとChefを使ったAWS運用小さく始めて後で困らないためのVPCとChefを使ったAWS運用
小さく始めて後で困らないためのVPCとChefを使ったAWS運用
Satoru Nakamura
 

Similaire à Chef概論とレシピ実践入門 (20)

Chef
ChefChef
Chef
 
Chefのはじめの一歩
Chefのはじめの一歩Chefのはじめの一歩
Chefのはじめの一歩
 
S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成
 
ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 
Chef 11概要-osct
Chef 11概要-osctChef 11概要-osct
Chef 11概要-osct
 
Apache Module
Apache ModuleApache Module
Apache Module
 
ニフティ社内の Chef 利用について
ニフティ社内の Chef 利用についてニフティ社内の Chef 利用について
ニフティ社内の Chef 利用について
 
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithackChef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
 
Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議
 
test
testtest
test
 
Chef入門
Chef入門Chef入門
Chef入門
 
DevOps 研修 中級編#01
DevOps 研修 中級編#01DevOps 研修 中級編#01
DevOps 研修 中級編#01
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4
 
Yohes kitchen
Yohes kitchenYohes kitchen
Yohes kitchen
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
 
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
 
小さく始めて後で困らないためのVPCとChefを使ったAWS運用
小さく始めて後で困らないためのVPCとChefを使ったAWS運用小さく始めて後で困らないためのVPCとChefを使ったAWS運用
小さく始めて後で困らないためのVPCとChefを使ったAWS運用
 

Plus de Kazuto Ohara (6)

副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフト副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフト
 
クラウド&コンテナ活用でDevOpsを加速させる!
クラウド&コンテナ活用でDevOpsを加速させる!クラウド&コンテナ活用でDevOpsを加速させる!
クラウド&コンテナ活用でDevOpsを加速させる!
 
国内最大級の総合情報メディアを支えるVarnish Cache
国内最大級の総合情報メディアを支えるVarnish Cache国内最大級の総合情報メディアを支えるVarnish Cache
国内最大級の総合情報メディアを支えるVarnish Cache
 
オールアバウトの DevOpsと リリースフロー
オールアバウトのDevOpsとリリースフローオールアバウトのDevOpsとリリースフロー
オールアバウトの DevOpsと リリースフロー
 
オールアバウトにおけるオンプレミス・クラウド使い分けポイント
オールアバウトにおけるオンプレミス・クラウド使い分けポイントオールアバウトにおけるオンプレミス・クラウド使い分けポイント
オールアバウトにおけるオンプレミス・クラウド使い分けポイント
 
Varnishの使い方~All Aboutでの使い方を例に~
Varnishの使い方~All Aboutでの使い方を例に~Varnishの使い方~All Aboutでの使い方を例に~
Varnishの使い方~All Aboutでの使い方を例に~
 

Chef概論とレシピ実践入門