どうも Chef コマンドを覚えられず、入門 Chef solo を毎回読みなおしてしまっているので、コマンド覚書を作っておく。
- レポジトリ名 : chef-repo
- chef クライアントホスト名 : chef-client
- クックブック名 : cookbook-name
適当に置き換えてください。
新規
レポジトリ作成
Chef レポジトリを作る。
$ knife solo init [chef-repo-name]
クックブック作成
レシピを新規作成する。
$ knife cookbook create [cookbook-name] -o site-cookbooks
ノード設定
chef クライアントに仕立てる。
$ knife solo prepare [chef-client-hostname]
AWS EC2 に適用する場合はキーとユーザ名の指定が必要なので、ec2-user ユーザで作業すると、
$ knife solo prepare -i ~/Keypair/[key-file] ec2-user@[chef-client-hostname]
とする。
nodesディレクトリに [chef-client-hostname].json が作成される。
更新
レシピを編集する
site-cookbooks/[cookbook-name]/recipes/default.rb を編集する。 適用したいレシピが複数に渡る場合はそれぞれの recipes/default.rb を編集する。
適用したいnodeファイルを確認
AWS EC2 AMI からの起動する際のように、すでに chef クライアントとして設定されているがホスト名が変わってしまう場合は、[chef-client-hostname].json ファイル名を割り当てられたホスト名に変更する。
適用したいクックブックが記述されているか、nodes/[chef-client-hostname].json ファイルの中身を確認。
ノードに適用
ノードに適用。
$ knife solo cook [chef-client-hostname]
AWS EC2 に適用する場合はキーとユーザ名の指定が必要なので、ec2-user ユーザで作業すると、
$ knife solo cook -i ~/Keypair/[key-file] ec2-user@[chef-client-hostname]
とする。