読者です 読者をやめる 読者になる 読者になる

気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

chefの導入と基本的な使い方

今回の作業

・Chef Development Kit(chef-DK)のインストール
・knife-soloインストール
・knife設定ファイルの作成
・chefリポジトリ作成
・Node設定
vagrant起動、ssh接続
・nodeをchef対応にする
・cookbookを作成する

chefとは?

複数サーバーをrubyコードで設定管理するツール

chef-DKとは?

下記のようなgem、プラグインをパッケージングしている全部のせkit
OS依存しないようにrubyなども内包されている。様々な依存関係を考慮することなく
扱えるようになっている。

・chef-solo:chefを1台だけ管理するために用いるプラグイン
・knife:設定ファイル(レシピ)の雛形作成、設定のサーバーへの適用など実際にChefが調理する際の道具
・Berkshelf:いろんな人が作ったレシピを複数保持するCookbookを管理するツール

実際のインストール方法

chef-DKをインストール

下記より、自分のOSに合ったchef-DKをダウンロードし、アプリのインストールを行うようにインストールする。
https://downloads.chef.io/chef-dk/

インストールされたか確認

$ chef -v
Chef Development Kit Version: 0.6.2
chef-client version: 12.3.0
berks version: 3.2.4
kitchen version: 1.4.0

knife-soloをインストール

$ sudo chef gem install knife-solo

knife設定ファイルの作成

$ knife configure

・・・
/Users/user_name/.chef/knife.rb

Node設定

#作業用ディレクトリの作成
mkdir -p chef/vagrant
cd chef/vagrant

#vagrantの設定ファイル作成
vagrant init centos

#Vagrantfileの修正
vi Vagrantfile

# config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "private_network", ip: "192.168.33.10"
box(OSイメージ)を取得
vagrant box add centos https://github.com/2creatives/vagrant-centos/releases/download/v6.4.2/centos64-x86_64-20140116.box

vagrant起動、ssh接続

vagrant up
vagrant status

Current machine states:
default                   running (virtualbox)

# sshアクセスを楽にする設定
vagrant ssh-config --host myhost

# .ssh設定ファイルに設定を反映
vagrant ssh-config --host myhost >> ~/.ssh/config
 
# 仮想環境へssh接続
 ssh myhost
 

実際に使ってみる

chefリポジトリ(Cookbook)作成

#リポジトリの作成
knife solo init chef-repo

cd chef-repo 
ls
Berksfile
data_bags	nodes
site-cookbooks
cookbooks
environments
roles

site-cookbooks:自分で作ったCookbookを配置
cookbooks:ダウンロードして来たCookbookを配置

nodeをchef対応にする

knife solo prepare myhost

cookbookを作成する

#hello worldを表示するcookbookを作成
knife cookbook create hello -o site-cookbooks 

** Creating cookbook hello in /Users/user/work/chef/chef-repo/site-cookbooks
** Creating README for cookbook: hello
** Creating CHANGELOG for cookbook: hello
** Creating metadata for cookbook: hello

いろいろ作ってくれる。
次に生成されたデフォルトレシピ(実際のサーバー設定の雛形)を編集する

resipeを作成する

vim site-cookbooks/hello/recipes/defalt.rb

#下記を追記
log "Hello world!!"

nodeにレシピを適用する設定

vim nodes/myhost.json


{
     "run_list": [
       "recipe[hello]"
     
     ],
     "automatic": { 
       "ipaddress": "myhost"
     }
   }

指定nodeにおいて実行するレシピを登録するため、
run_listへrecipe[hello]を追記。

nodeにレシピを適用する

knife solo cook myhost

・・・
Compiling Cookbooks...
Converging 1 resources
Recipe: hello::default
  * log[Hello world!!] action write
・・・

packageでvimを導入

site-cookbooks/hello/recipes/default.rb

#下記を追記
package "vim" do
   action :install
end

設定を反映

knife solo cook myhost

参考URL
chef-DK触ってみた - わすれっぽいきみえ

Chef入門 (全14回) - プログラミングならドットインストール