SlideShare a Scribd company logo
社内Chef勉強会
@uchiunyo
本日の目標
• Chefで何が 勵るのか 卆する
• Chefを何となく動かせるようになる
• Chefの動きがそれとなくわかる
よくある困りごと
• 環境構築しなきゃ・・・
⇒ 構築する時間が無い
⇒ 手順書どおりに構築できない
⇒ そもそも手順書が無い
⇒ オペミスこわい
環境構築を自動化しよう!
• シェル化して自動化がベターですが・・・
• 最近自動化ツールたくさんあります
必要Ruby構成Puppet
必要Ruby構成Chef
勘要PythonデプロイFabric
勘要RubyデプロイCapistrano
クライアント
インストール
言語種別ツール名
Chefの特徴
• 構成 ツールである
・このサーバはこういう構成であると定義する
・冪等性を持つ
• Rubyで記述する
• 用語に特徴がある
• 対象ホストへのインストールが必要
• Communityやgithubで多数のcookbookが公開されている
Chef基本用語
• chef-server
⇒ Server/Client環境のChef。大規模環境向け
• chef-solo
⇒ 単 のChef。小規模ならこれで十分。
• Knife
⇒ chefを操作するためのCLIツール
• Cookbook
⇒ 設定をひとまとめにしたディレクトリ
• Recipe
⇒ 卣の定義本
早速動かしてみよう
https://github.com/uchiunyo/uchistudy/tree/master/201305chefstudy
“Chefをインストールしてみよう” “ してみよう”までやってみましょう。
Chef-soloの
Chef-soloは以下のように します
$ sudo chef-solo –c solo.rb –j chef.json
solo.rb ・・・ chef-soloの設定ファイル
chef.json ・・・ するレシ や匂数を指定する
chef.json
対象ホストで するレシ や変数を設定します。
JSON形式で書きます。
{
“helloworld":{
“name”:”uchi”
},
"run_list":[
“helloworld”
]
}
変数の設定。
node[“helloworld”][“name”]として参照可能
するcookbookを指定する
Cookbook構成
[cookbooks]
└ [helloworld]
├ [recipes] 卣の定義本
├ [resources]
├ [templates] 設定ファイルのテンプレート
├ [files] に必要なファイル
├ [attributes] 変数の定義
├ [definitions]
├ [libraries]
└ [providers]
ChefでMySQLをインストールしよう
https://github.com/uchiunyo/uchistudy/tree/master/201305chefstudy
“Chefでmysqlを入れてみよう“をやりましょう。
Recipeの書き方
• Resourceを使いcookbookの 卣を定義する
・ ResourceとはChefのDSL
・ Resourceに対してAttributeを定義する
・ Rubyのコードが匏用 勵る
・ Recipeに書いた事が から順に される
Recipeの書き方
template "my.cnf" do
path "/etc/my.cnf"
source "my.cnf.erb"
owner "root"
group "root"
mode 0644
notifies :restart, 'service[mysqld]'
end
Resource
Attribute
%w{mysql mysql-server}.each do |pkg|
package pkg do
action :install
end
end
こんな感じに
Rubyで書けます
Recipeの書き方
• Resourceいろいろあります
・ package パッケージをインストール
・ Template テンプレートを配置する
・ File ファイルを操作する
・ Directory ディレクトリを操作する
・ User ユーザー作成する
・ Service サービスを起動したり色々する
標準Resourceは以下のとおり
http://docs.opscode.com/chef/resources.html
Attributes
• Attributesは変数のデフォルト値を設定するファイルを
格納するディレクトリです
・ RecipeのAttributeとは“別モノ”
・ 変数はRecipeやTemplateから匏用できる
Attribute
default[“mysql”][“pkg_name”] = “mysql-server”
package node[“mysql”][“pkg_name”] do
action :install
end
cookbook/mysql/templates/attributes/default.rb
package “mysql-server” do
action :install
end
cookbook/mysql/recipes/default.rb
Templateを使おう
• Chefから配布する設定ファイルはTemplateを使用する
事で動的に生成が可能です
・ TemplateはeRubyで書く
<%= … %>と囲う事で、設定ファイルにRubyのコー
ドが埋め込める
・ 作成したTemplateはTemplate Resourceで配置する
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
character-set-server = utf8
skip-character-set-client-handshake
innodb_buffer_pool_size=<%= node["mysql"]["buffer_pool_size"] %>
innodb_log_file_size=<%= node["mysql"]["log_file_size"] %>
innodb_file_per_table
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server = utf8
Templateを使おう
my.cnfのTemplate(cookbook/mysql/templates/default/my.cnf.erb)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
character-set-server = utf8
skip-character-set-client-handshake
innodb_buffer_pool_size=128M
innodb_log_file_size=32M
innodb_file_per_table
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server = utf8
Templateを使おう
生成された/etc/my.cnf
Chef 匏ツール
• Knife-solo
knifeのplugin。ローカルのcookbookをリモート し
たり、Chefをリモートインストールする事が可能
• Vagrant
コマンドラインで簡単に新しいVMを作るツール。
Cookbookのテスト環境を作るのに重宝します。
• serverspec
構築したサーバをテストするツール。Chefでちゃんと構
築できたかテストするのに使えます。
最後に
• もう少し深く勉強したい!という人は「入門Chef
Solo」を買いましょう。Amazonで¥890です。
• 他人のcookbookを るととても勉強になります。
opscodeやgithubで公開されています。
• 大抵のcookbookは既にopscodeなどで公開されていま
すが、少なくともそのcookbookの 動を 卆した で
使いましょう。
ご清聴ありがとうございました

More Related Content

What's hot

Couchbase hackaton pomo
Couchbase hackaton pomoCouchbase hackaton pomo
Couchbase hackaton pomo
Taro Matsuzawa
 
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方
666oh666
 
シェフから板前になった話
シェフから板前になった話シェフから板前になった話
シェフから板前になった話
oshiro_seiya
 
Composerはじめました
ComposerはじめましたComposerはじめました
Composerはじめました
Takashi Nojima
 
安心Chef開発
安心Chef開発安心Chef開発
安心Chef開発
智彦 阪口
 
(BizRobo!)対業務改善用大型変形合体ロボット開発計画
(BizRobo!)対業務改善用大型変形合体ロボット開発計画(BizRobo!)対業務改善用大型変形合体ロボット開発計画
(BizRobo!)対業務改善用大型変形合体ロボット開発計画
ssuser040811
 
ChatOps with Hubot
ChatOps with HubotChatOps with Hubot
ChatOps with Hubot
Yoshiaki Yoshida
 
GitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO PepaboGitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO Pepabo
Hiroshi SHIBATA
 
Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+
Tsuyoshi Torii
 
趣味でやるSmalltalk Webアプリ開発
趣味でやるSmalltalk Webアプリ開発趣味でやるSmalltalk Webアプリ開発
趣味でやるSmalltalk Webアプリ開発
Kazuki Minamitani
 
ソフトウェア開発が好きだ
ソフトウェア開発が好きだソフトウェア開発が好きだ
ソフトウェア開発が好きだ
Koichi Ota
 
2016 02-09-co-edo lt
2016 02-09-co-edo lt2016 02-09-co-edo lt
2016 02-09-co-edo lt
Hiroshi Oyamada
 
Dockerプレゼン
DockerプレゼンDockerプレゼン
Dockerプレゼン
よしだ あつし
 
Chef環境の闇
Chef環境の闇Chef環境の闇
Chef環境の闇
Akihiro Kuwano
 
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話kanorimon
 
Web技術勉強会 20120609
Web技術勉強会 20120609Web技術勉強会 20120609
Web技術勉強会 20120609
龍一 田中
 
Calabashでbddしようぜ
CalabashでbddしようぜCalabashでbddしようぜ
Calabashでbddしようぜ
豊明 尾古
 

What's hot (17)

Couchbase hackaton pomo
Couchbase hackaton pomoCouchbase hackaton pomo
Couchbase hackaton pomo
 
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方
 
シェフから板前になった話
シェフから板前になった話シェフから板前になった話
シェフから板前になった話
 
Composerはじめました
ComposerはじめましたComposerはじめました
Composerはじめました
 
安心Chef開発
安心Chef開発安心Chef開発
安心Chef開発
 
(BizRobo!)対業務改善用大型変形合体ロボット開発計画
(BizRobo!)対業務改善用大型変形合体ロボット開発計画(BizRobo!)対業務改善用大型変形合体ロボット開発計画
(BizRobo!)対業務改善用大型変形合体ロボット開発計画
 
ChatOps with Hubot
ChatOps with HubotChatOps with Hubot
ChatOps with Hubot
 
GitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO PepaboGitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO Pepabo
 
Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+
 
趣味でやるSmalltalk Webアプリ開発
趣味でやるSmalltalk Webアプリ開発趣味でやるSmalltalk Webアプリ開発
趣味でやるSmalltalk Webアプリ開発
 
ソフトウェア開発が好きだ
ソフトウェア開発が好きだソフトウェア開発が好きだ
ソフトウェア開発が好きだ
 
2016 02-09-co-edo lt
2016 02-09-co-edo lt2016 02-09-co-edo lt
2016 02-09-co-edo lt
 
Dockerプレゼン
DockerプレゼンDockerプレゼン
Dockerプレゼン
 
Chef環境の闇
Chef環境の闇Chef環境の闇
Chef環境の闇
 
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話
 
Web技術勉強会 20120609
Web技術勉強会 20120609Web技術勉強会 20120609
Web技術勉強会 20120609
 
Calabashでbddしようぜ
CalabashでbddしようぜCalabashでbddしようぜ
Calabashでbddしようぜ
 

Similar to 社内Chef勉強会

DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
Yusuke Ando
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
Hideo Takahashi
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
Yusuke Ando
 
ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門
Mahito Ogura
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
Ryo Mitoma
 
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
Yuto Matsukubo
 
DevOpsを実現する為のChef活用テクニック
DevOpsを実現する為のChef活用テクニックDevOpsを実現する為のChef活用テクニック
DevOpsを実現する為のChef活用テクニック
Yu Kitazume
 
本番環境で使いたいPHP
本番環境で使いたいPHP本番環境で使いたいPHP
本番環境で使いたいPHPTakuya Sato
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
 
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Yukihiko SAWANOBORI
 
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
Shinichi Nishikawa
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Hisao Soyama
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
Hironobu Saitoh
 
2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as code2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as code
Yukihiko SAWANOBORI
 
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
Yukihiko SAWANOBORI
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
Katsuhiro Miura
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0NIFTY Cloud
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in OkazakiEtsushi Ishii
 
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドするDockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
Koji Shiraishi
 

Similar to 社内Chef勉強会 (20)

DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
 
DevOpsを実現する為のChef活用テクニック
DevOpsを実現する為のChef活用テクニックDevOpsを実現する為のChef活用テクニック
DevOpsを実現する為のChef活用テクニック
 
本番環境で使いたいPHP
本番環境で使いたいPHP本番環境で使いたいPHP
本番環境で使いたいPHP
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
 
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as code2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as code
 
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazaki
 
Chef
ChefChef
Chef
 
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドするDockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
 

社内Chef勉強会