chefで作る開発環境

Post on 11-Jul-2015

1.321 Views

Category:

Engineering

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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つ

がある

FUNTERACTIVE OPEN MEETING VOL.05 

Chef Server / Chef Client ( クライアント / サーバ形式 )

Chefの動作形式

Chef Server UIChef Server API

Rabbit MQ

PostgreSQL

Chef Client

Chef Client

Chef Client

Chef Client

管理対象サーバChef Server

Chefサーバを1台用意、対象サーバにはChef Clientをインストール

FUNTERACTIVE OPEN MEETING VOL.05 

Chef Solo(スタンドアロン形式)

Chefの動作形式

対象サーバローカル端末

Chef Soloを実行サーバにインストール、設定内容のクックブック

を配置して実行する

クックブック Chef SoloUpload

FUNTERACTIVE OPEN MEETING VOL.05 

Chefの用語

■ レシピ

  Rubyコードで書いたサーバ設定の手順

■ クックブック

  レシピに必要なデータやファイルをまとめる入れ物

■ リポジトリ、キッチン

  クックブックを含むChefの実行に必要なファイルの入れ物

■ ナイフ( knife )

  リポジトリを操作するツール、クックブックはこれで作る

■ ノード

  Chefで管理するサーバのこと

FUNTERACTIVE OPEN MEETING VOL.05 

Chef Soloの基本

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を使ってインストール

FUNTERACTIVE OPEN MEETING VOL.05 

クックブックを作ってレシピを実行

# /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 

knife-soloを使う

対象サーバローカル端末

クックブック Chef Solo

Upload

レシピ

クックブックを作ってレシピを書く コマンド実行

knife-solo

FUNTERACTIVE OPEN MEETING VOL.05 

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 

クックブック作成

$ bundle exec knife cookbook create apache -o site-cookbooks

タスクごとにクックブックを作成

Apache MySQL

yum

PHP

iptables…etc

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/apache/attributes/default.rb

.

├── site-cookbooks/

├── attributes

├── default.rb

FUNTERACTIVE OPEN MEETING VOL.05 

Template

.

├── site-cookbooks/

├── templates

├── default

• クックブックのtemplateディレクトリ内に設定ファイルを置く • Templateリソースで設定ファイルをChef実行時に配置する

http.conf.erbvhost.conf.erb

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 source 'httpd.conf.erb' notifies :restart, 'service[httpd]' end

site-cookbooks/apache/recipes/default.rb

Attributeで設定した パッケージインストール

templateフォルダに配置した設定ファイルを配置

サービスの設定

FUNTERACTIVE OPEN MEETING VOL.05 

コミュニティクックブック

FUNTERACTIVE OPEN MEETING VOL.05 

_

http://cookbooks.opscode.com/cookbooks

FUNTERACTIVE OPEN MEETING VOL.05 

コミュニティクックブック

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 

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

FUNTERACTIVE OPEN MEETING VOL.05 

WordPress環境

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 

ご清聴ありがとうございました

top related