##chef-dkとは
opscodeでrpmでパッケージングしてくれている
chefを利用するにあたって使うと想定されているツール群です。
ちょっと試したい or 長期で運用を想定していない(とりあえず使えれば良い)
程度であれば、chef-dkからのインストールがお手軽で簡単です。
##構築環境
今回インストールする構成は以下
####chefをインストールするサーバ
- CentOS6系(vagrant VM)
####chefを使って自動構築するサーバ
- CentOS6系(vagrant VM)
##Hostサーバでchefのインストール
ダウンロードサイトがあるので下記URLからダウンロードしてきます。
Chef-dkダウンロードサイト
http://www.getchef.com/downloads/chef-dk/mac/
$ wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.1.0-1.el6.x86_64.rpm
$ sudo rpm -ivh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.1.0-1.el6.x86_64.rpm
これでchefの周辺ツールのインストールは完了しました。
リモートサーバでの自動構築をするにはもう一つ
knife-soloというパッケージが足りないのでインストールします。
$ chef gem install knife-solo
これで準備は全て整いました。
環境設定をリロードするため、knife-soloをインストールした後は
一度サーバからログアウトを行う事をお勧めします。
##レシピを書く
ここでは試験的に、対象にapacheをインストールして起動するレシピを書きましょう
#レポジトリ初期化
$ knife solo init ./chef-repo
$ cd chef-repo
$ knife cookbook create apache -o site-cookbooks
対象のファイルを以下のように記述します
package "httpd" do
action :install
end
service "httpd" do
action [ :enable, :start]
end
これで準備は完了です。
##対象ホストと利用レシピを設定する
nodeファイルを新規作成し、以下のように記述します。
ここでいう192.168.33.11
はapacheをインストールした対象のホストIPになります。
名前解決出来るようならドメインでも構いません。
$ cat < END >> nodes/192.168.33.11.json
{
"run_list":[
"recipe[apache]"
]
}
END
##knife-soloを実行する
knife-soloとはリモートでchef-soloを実行してくれるソフトになります。
何をいってるか分からないという人はググって下さい。
まずは対象のサーバへchefのレシピが適用出来るように初期設定を行います。
$ knife solo bootstrap 192.168.33.11 --bootstrap-version 11.12.0
オプションとしてbootstrapのバージョンを指定してやります。
rpmになってるバージョンがちょっとおかしくなっており
何もオプションを指定せずに実行すると失敗してしまいます。
####注意
この時対象のサーバへの前提条件として
- hostからノーパスワードでログインが実行出来る。
- ノーパスワードでログイン後、ノーパスワードでsudoが行える。
上記2つの条件を満たしているとスムーズにいくので設定することを推奨します。
また上記の流れでbootstrapをすると
設定したレシピまで実行されるので実際には対象にapacheが入っているかと思います。
レシピのみ実行する場合は下記コマンドを実行します。
$ knife solo cook 192.168.33.11
対象のサーバで確認してみます
[vagrant@localhost ~]$
[vagrant@localhost ~]$ ps aux |grep http
root 3795 0.0 0.8 175708 3764 ? Ss 11:57 0:00 /usr/sbin/httpd
apache 3797 0.0 0.5 175708 2400 ? S 11:57 0:00 /usr/sbin/httpd
apache 3798 0.0 0.5 175708 2400 ? S 11:57 0:00 /usr/sbin/httpd
apache 3799 0.0 0.5 175708 2400 ? S 11:57 0:00 /usr/sbin/httpd
apache 3800 0.0 0.5 175708 2400 ? S 11:57 0:00 /usr/sbin/httpd
apache 3801 0.0 0.5 175708 2400 ? S 11:57 0:00 /usr/sbin/httpd
apache 3802 0.0 0.5 175708 2400 ? S 11:57 0:00 /usr/sbin/httpd
apache 3803 0.0 0.5 175708 2400 ? S 11:57 0:00 /usr/sbin/httpd
apache 3804 0.0 0.5 175708 2400 ? S 11:57 0:00 /usr/sbin/httpd
vagrant 4185 0.0 0.2 107460 940 pts/0 S+ 12:31 0:00 grep http
[vagrant@localhost ~]$ chkconfig --list |grep 3:on |grep httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[vagrant@localhost ~]$
お疲れ様でした。