Chef Study Meeting in NNCT 2015/06/29 Created by / Kazutaka Matsumoto @udon_papapa
Chef Study Meeting inNNCT2015/06/29
Created by / Kazutaka Matsumoto @udon_papapa
OutlineWhat's Chef
Tutorial Chef
Beginner Chef Antipatterns
Chef Environment Cookbook Pattern
What's Chef
Chef 1/2
,
Chef 2/2
Cookbook
Chef Cookbook
Comunity Cookbook
supermarket Github Cookbook
node
node
LWRP(lightweight resource and provider)
.
ChefChef Server Chef Solo 2
Chef Server Chef Client
2014 localmode
Chef Solo
localmode
Chef Solo Chef Server localmode
KnifeChef ssh
Knife Chef
Knife-Solo Knife-Zero
Knife Solo Knife Zero
BerksChef cookbook
Gem Chef
Berks
Jamie Winsor
....Chef Solo
Tutorial Chef
Click
Chef ?
Chef ?
Chef Tutorial
1. Vagrant
2. Chef
3. Knife Solo
4.
VagrantShell
$ mkdir temp && cd temp$ vagrant init$ vim Vagrantfile$ vagrant up $ vagrant ssh-config >> ~/.ssh/config # 接続先defaultと名称でconfigファイルが作成される$ ssh default # これで起動できた?
VagrantfileVagrant.configure(2) do |config| config.vm.box = "Debian_7.8.0" # 環境に合わせてください config.vm.box_url = "https://github.com/kraksoft/vagrant-box-debian/releases/download/7.8.0/debian-7.8.0-amd64.box
ChefShell
$ knife configure # 初期設定 基本エンター連打$ knife solo init . # Chef Repositoryの作成$ knife solo prepare default # defaultにChefをインストールする
--- lessというディレクトリでCookbookのテンプレート作成$ knife cookbook create vim -o site-cookbooks
--- 基本は,Recipesの中のdefault.rbを編集します$ vim site-cookbooks/vim/recipes/default.rb
vim/default.rbpackage 'vim' do action :installend
Shell--- サーバに適用するChefを編集します$ vim nodes/default.json$ knife solo cook default # defaultにRecipeを適用する
--- 確認してみよう$ ssh default# vim
nodes/default.json"run_list": [ "recipe[vim]"]
:Chef Repository├── Berksfile # いわずもがな├── cookbooks # Community Cookbookを入れる├── data_bags # 暗号化したいファイル等はここで扱う├── environments # サーバに適用する設定等を記述├── nodes # サーバ毎に適用するrecipeやrolesがかかれている├── roles # recipeを一括で実行できる.被推奨└── site-cookbooks # 自作Cookbookを入れる
:Chef Cookbook├── CHANGELOG.md├── README.md├── attributes # Cookbookのデフォルト値を設定する├── definitions # Recipeとほぼ同じ(但し変数を扱える├── files # 静的ファイルを扱う│ └── default├── libraries # LWRPを扱う?├── metadata.rb├── providers # LWRPを扱う?├── recipes # レシピを書く│ └── default.rb├── resources # 条件式やアクションを書く└── templates # templateファイルを扱う └── default
Chef !
Beginner ChefAntipatterns
Chef
Chef
Chef 1 Git
Community Cookbook
NIH ( )
Chef
Chef 1Git
cookbooks
Git :
Git
Git
Chef 1Git
Cookbook Repository Berks
Community Cookbook
(
)
Community Cookbook
Attirbute
NIH(Not Invented Here) ()
...
Cookbook
NIH(Not Invented Here) ()
Chef EnvironmentCookbook Pattern
Chef Cookbook Chef Environment
Cookbook Pattern
Chef Environement Cookbook PatternCookbook
1. Library Cookbook
2. Application Cookbook
3. Wrapper Cookbook
4. Base Cookbook
5. Environment Cookbook
Library Cookbookcookbook
cookbook
Recipe
LWRP( package)
:
github-cookbook
github API LWRP Cookbook
Application Cookbookcookbook
vim git
install Cookbook
1 1Cookbook
attribute
Wrapper CookbookApplication cookbook wrap
cookbook
Application cookbook
cookbook { }-{wrap cookbook}
{ }-{wrap cookbook}
Community Cookbook
Base cookbookcookbook
bash zsh
cookbook { }-base
Environment cookbookcookbook
Cookbook
1 1cookbook
Cookbook Berks Cookbookk
import
The Environment Cookbook Pattern Cookbook