Chef

Post on 14-Aug-2015

108 Views

Category:

Engineering

2 Downloads

Preview:

Click to see full reader

Transcript

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

top related