買いました。
入門Chef Solo - Infrastructure as Code
読みました。
chef-soloの触りとchef-server環境の作成ぐらいは出来たのであの丘の向こうを目指して使い心地とかまとめておきます。
chefとは
引用:
入門Chef Solo #23 どこまでをChefでやるべきか
chefは「ノードの状態を管理し、そのノードをあるべき状態に収束させるフレームワーク」だからです。
と、あるようにchefはサーバーをあるべき状態に収束させるフレームワークです。
サーバーの初期環境構築や設定ファイルの変更等をしてくれます。sshでログインしてパッケージインストールや設定ファイルの変更をしなくても目的のサーバーの状態にしてくれます。
chefの種類
単一で機能するchef solo
複数を管理するchef server
&chef client
がある。
どちらも同じcookbooks(サーバーの状態を示すファイル)を使う事が出来るのでchef solo
でcookbooksを充実させたり、検証してからchef server
に移ると良いかも
Hello, chef-solo.
chefのインストールからchef soloのセットアップまで。
作業環境からリモートでchef-soloを実行して環境の状態を変更する。
事前準備としてVMでもEC2でも状態を変更するサーバーを立ち上げて、パスワード無しでsudoが実行できるユーザーでssh接続が出来るようにしておく。
基本このサーバーではコマンドを流す必要は無い。
作業環境で実行
$ gem install chef
chefの操作は主にknife
コマンドを使用する
knifeのセットアップをする
$ knife configure
入力を求められるのですべてデフォルト状態、空エンターでとりあえずおk
~/.chef/
が作成される
knife solo
コマンドのインストール、chef-repoの作成
$ gem install knife-solo
$ knife solo init chef-repo
chef-repo
ディレクトリが作成される。
cookbooks作成
$ cd chef-repo
$ knife cookbook create hello-chef -o ./cookbooks/
$ vi cookbooks/hello-chef/recipes/default.rb
#
# Cookbook Name:: hello-chef
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
template "/tmp/hello-chef" do
action :create
end
$ vi cookbooks/hello-chef/templates/default/hello-chef.erb
hello, chef-solo.
hostname <%= node[:hostname] %>
chef-soloが実行できるようにセットアップ
$ knife solo prepare <host>
nodes/<host>.json
が作成されるのでそれを編集
{
"run_list":[
"hello-chef"
]
}
$ knife solo cook <host>
ここでようやっとにssh接続して変更されているか確認
$ cat /tmp/hello-chef
hello, chef-solo.
hostname <hostname>
完了
cookbooksの書き方
GitHubにもろもろのCookbooksがあるので参考になる
Opscode Public Cookbooks
cookbooksのrecipeの記述は以下
About Resources and Providers
まとめ
chef-serverのセットアップも書きたかったけど面倒くさくなってしまったのでとりあえずここまで。詳しくは入門Chef Soloを読む事をお勧めする。
chefの記事を見ていると学習コストうんぬん言っているがそこまでコストは高くない印象。
これも id:naoya のおかげなのか。
わざわざ面倒な、しかし必要な手順を見せてから「実はさきほどの手順はこのコマンドで行う事が出来ます。」という手法は良いですね。
chefの話に戻るとそこまで学習コストは感じられなく、一度設定してしまえば同じ作業は自動化できてしまうので学習しておくのは無駄にはならない。というか楽しいので利益とか考えなくても自分は勝手にやってそう。
しかし手動で設定するのとchefのrecipeを少しずつ貯めて行くのとでは、時間が経てばchefの方が時間がかからないで設定が出来るようにはなるだろうが、そこまで到達するのに結構な時間と経験が必要にはなりそうなのは確か。
chefを始めたからすぐに効果が出たってのは無いかもです。
数十台、数百台のサーバーを設定する必要が有る場合はchefやpuppetの恩恵を得られるでしょうが、そこまでのシステムを触る事なんてそうそう無いですしね。
しかし、仮想環境で開発したり仮想環境で本番公開するのが当たり前の現在なので、仮想環境の利点の一つである「すぐに潰してすぐに立てる」をしても、プラットフォームや環境が変わっても、問題なくさっきまでの環境に整えてくれるchefは心強いです。
chefを使いこなせればまた一つあの丘の向こうに行ける事でしょう。