永遠の初級エンジニア

元OracleDBA、現AWSな低脳エンジニアの日記

EC2のRHELにKnife-Zeroインストール

EC2上の多数のインスタンスを管理する目的でChefを導入検討。

どのChefを選ぶべきかは以下が参考になる。
http://www.creationline.com/lab/9970


以下からEC2上にchef-dkをインストールします。
https://downloads.chef.io/chef-dk/redhat/Chef Development Kit | Chef Downloads | Chef


待ちます...
ダウンロードが完了したら、実行してください。
ツールのインストールが始まります。
インストールが完了すればターミナルに戻ってknife-zeroを入れます。

$ chef gem install knife-zero
$ chef generate repo chef
$ chef exec knife cookbook create apache -o cookbooks

試しにレシピを作成する

vi cookbooks/apache/recipes/default.rb
package "httpd" do
  action :install
end

service "httpd" do
  action [ :enable, :start ]
end

対象ノードを用意する(sgにknife-zeroのipを追加する必要)

新規ノードを追加、Chefクライアントインストールのみ→--nameでNameタグのvalueを追加

knife zero bootstrap 54.169.166.107 -x root -i ~/.ssh/aws_ap-southeast-1.pem --node-name Chef-node1
knife zero bootstrap 54.179.160.36 -x root -i ~/.ssh/aws_ap-southeast-1.pem --node-name Chef-node2

ロールリストを追加&レシピ実行

今回はnodeを2台追加する。

knife zero bootstrap 54.169.166.107 -x root -i ~/.ssh/aws_ap-southeast-1.pem --node-name Chef-node1 -r 'role[chef-sample]'
knife zero bootstrap 54.179.160.36 -x root -i ~/.ssh/aws_ap-southeast-1.pem --node-name Chef-node2 -r 'role[chef-sample]'

追加したノードにChef-Clientを再実行

これを実行すると更新したレシピをnodeに送信してChef-Clientを実行してレシピの内容を反映してくれる。
./nodeディレクトリのある場所で実行する

knife zero converge "name:*" -a knife_zero.host -x root -i ~/.ssh/aws_ap-southeast-1.pem -o 'role[chef-sample]' -C 2
  • -C 並列度
  • -o ランリストを上書きする

これで複数台のnodeを管理するknife-zero環境が出来上がった。

次はレシピとテンプレートを作成する。