knife-zeroのインストールと簡単な使い方。
AWSのEC2内のインスタンスが前提。
chefDKインストール
chefの構成要素を一通り含まれているchefDKをインストール。
chefDKをインストールすればchef-zeroを使用することが可能。
chefDKを公開しているサイトからrpmを取得してインストール。
wget https://packages.chef.io/stable/el/6/chefdk-0.12.0-1.el6.x86_64.rpm
rpm -Uvh chefdk-0.12.0-1.el6.x86_64.rpm
knife-zeroインストール
kinfe-zeroはchefDKに含まれていないのでchefコマンドでインストール。
chef gem install knife-zero --no-document
リポジトリ作成
リポジトリを作成したいディレクトリでコマンドを実行。
chef generate repo chef-repo
kinfe-zeroを使用するための設定
ローカルモードを有効とする設定ファイルを作成。
cd chef-repo
mkdir .chef
echo 'local_mode true' > .chef/knife.rb
リモートサーバに対してbootstrap実行
リモートサーバをノードに追加。
追加されたノードをnode listコマンドで確認可能。
knife zero bootstrap infra -x ec2-user --hint ec2 --sudo
knife node list
bootstrapが完了するとnodeディレクトリ以下にjsonファイルが生成される。
ノード追加時に-Nオプションをつけるとノード名を指定することが可能。
クックブックの作成
サーバを構築するためのクックブックを作成。
knife cookbook create {クックブック名}
完了するとcookbook以下にクックブック名のディレクトリが作成される。
レシピの作成
例としてnginxインストールのレシピを作成。
cookbook/recipes/default.rbのファイルを次のように修正する。
package 'nginx' do
action :install
end
ノードにクックブックを登録
レシピを実行するためにノードにクックブックを登録する。
knife node run_list add {ノード名} {クックブック名}
レシピの実行
レシピを実行する。
knife zero converge '{ノード名}' --attribute ec2.local_ipv4 -x ec2-user --sudo -i {鍵のパス}
正常終了するとリモート先のサーバにnginxがインストールされる。