開発環境構築(vagrant + chef-zero)
参考情報
本番環境構築(knife-zero)
参考情報
前提条件
- プロジェクトがchef-repo構造になっていること
- 本番環境のサーバが用意されていること
インストール
Gemfileに以下を追加
# Gemfile:
gem 'chef'
gem 'chef-zero'
gem 'knife-zero'
インストール
bundle install --path vendor/bundle --binstubs
chefのenvironmentを作成
$ ./bin/knife environment create staging
Created staging
$ ./bin/knife environment create production
Created production
knife zero実行
以下のコマンドを実行します
./bin/knife zero bootstrap your-site.example.com --identity-file ~/.ssh/xxx.pem --ssh-user xxx --sudo --use-sudo-password
(注意: ~/.ssh/configに設定を記述していたとしても、オプションでidentity-fileとssh-userを指定する必要があります)
コマンドを実行すると対象のサーバにchefがインストールされ、ローカルにnode/your-site.example.com.jsonが作成されます
nodeファイル修正
chef_environmentやrun_listを設定します。
# nodes/your-site.example.com.json:
{
"name": "your-site.example.com",
"default": {
"fqdn": "your-site.example.com"
},
"normal": {
},
"chef_environment": "production",
"run_list":[
"role[common]"
]
}
chef_client実行
chef_clientを実行して、run_listで指定されたライブラリをインストールします。
./bin/knife zero chef_client "fqdn:your-site.example.com"
注意事項
現時点では、knife-zeroはsite-cookbooks以下のCookbookを参照することができない。
Knife-ZeroでCookbookの作成/実行/削除&git cloneコマンドでCookbookの取得 (1/2)
本来のChefの作法では、個人で作成したCookbookは「chef-repo/site-cookbooks」に格納し、Chef社が公開しているCookbookや第三者が作成したCookbookを「chef-repo/cookbooks」に格納することが推奨されています。
しかし2015年3月現在、Chef-Zeroの仕様で、「site-cookbooks」配下を参照しないため、個人作成のCookbookを「chef-repo/cookbooks」に作成するような手順としています。