Sensu Server
やSensu Client
の設定Chef
でやらせるにあたり、毎回knife solo
を叩くのは近い将来はやってられんので- あと、この作業に乗じて
Chef Server
を復習する - ほとんど
Chef Server
とかChef Client
の使い方メモになってしまってる...
Amazon EC2
のCentOS 6.5
SELinux
は無効にしておきたいのでこの辺もbootstrap
でやってしまいたい
wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.12-1.el6.x86_64.rpm
sudo rpm -Uvh chef-server-11.0.12-1.el6.x86_64.rpm
してから...
chef-server-ctl reconfigure
以上。簡単。
こっから本題。
まず、node
の登録から始める。(整理することで自動化することが出来るはず)
- インスタンス起動
Chef
をインストールchef-client
コマンドを利用してChef Server
にnode
を登録するWorkstation
にてこちらの通りに sensu-chef を取得しておく- sensu-chef の
attributes/default.rb
を以下の通り修正する
--- default.rb 2014-05-11 12:45:21.544293121 +0000
+++ default.rb.bk 2014-05-10 06:45:08.527128295 +0000
@@ -23,7 +23,7 @@
default.sensu.msi_repo_url = "http://repos.sensuapp.org/msi"
# rabbitmq
-default.sensu.rabbitmq.host = "${your_rabbitmq_host}"
+default.sensu.rabbitmq.host = "localhost"
default.sensu.rabbitmq.port = 5671
default.sensu.rabbitmq.vhost = "/sensu"
default.sensu.rabbitmq.user = "sensu"
- 一旦、
Cookbook
をアップロードする
cd ~/chef-repo-sensu
knife cookbook upload sensu --include-dependencies -o ./cookbooks/ -c ~/.chef/knife.rb
Workstation
にてrole
を追加(こちらの通りroles/sensu-server.json
を用意する)role/sensu-server.json
をChef Server
にアップロードする
cd ~/chef-repo-sensu
knife role from file roles/sensu-server.json -c ~/.chef/knife.rb
role
をnode
に関連付ける
cd ~/chef-repo-sensu
knife node run_list add ${node} "role["sensu-server"]" -c ~/.chef/knife.rb
knife node run_list set ${node} "role["sensu-server"]" -c ~/.chef/knife.rb
- 新しい
node
上でchef-client
を実行する
chef-client -S https://${chef_server_fqdn}
まず、node
の登録から始める。(整理することで自動化することが出来るはず)
- インスタンス起動
Chef
をインストールchef-client
コマンドを利用してChef Server
にnode
を登録するWorkstation
にてrole
を追加(こちらの通りroles/sensu-client.json
を用意する)role/sensu-client.json
をChef Server
にアップロードする
cd ~/chef-repo-sensu
knife role from file roles/sensu-client.json -c ~/.chef/knife.rb
role
をnode
に関連付ける
cd ~/chef-repo-sensu
knife node run_list add ${node} "role["sensu-client"]" -c ~/.chef/knife.rb
knife node run_list set ${node} "role["sensu-client"]" -c ~/.chef/knife.rb
- 新しい
node
上でchef-client
を実行する
chef-client -S https://${chef_server_fqdn}
Sensu Server
追加
node
追加role["sensu-server"]
とnode
を関連付けるchef-client
実行
Sensu Client
追加
node
追加role["sensu-client"]
とnode
を関連付けるchef-client
実行
- 監視項目の追加、削除
- 監視内容を
cookbook
に落としこむ cookbook
をテストする(test-kitchen
→Serverspec
)cookbook
をChef Server
にアップロードcookbook
とnode
を関連付けるchef-client
実行
cron
に任せる。
*/5 * * * * /opt/chef/bin/chef-client -S https://${chef_server_fqdn}
定期的な chef-client
の結果を確認する方法を別途検討する。(Chef Handles
を活用する。)
curl -L https://www.opscode.com/chef/install.sh | bash
knife bootstrap
でもイケるけど試せてないChef Server
上で
chef-client -K /etc/chef-server/chef-validator.pem
Chef Server
以外で(これから登録したいnode
上で)
chef-client -S https://${chef_server_fqdn} -K /etc/chef/validation.pem
/etc/chef-server/chef-validator.pem
= /etc/chef/validation.pem
なので何かしらの方法でコピーしておく。
knife
コマンドを利用。
knife node list -c ~/.chef/knife.rb
knife
コマンドを利用。
cd ~/chef-repo-sensu
/opt/chef/bin/knife cookbook upload sensu --include-dependencies -o ./cookbooks/ -c ~/.chef/knife.rb -V
/opt/chef/bin/knife cookbook upload sensu --include-dependencies -o ./cookbooks/ -c ~/.chef/knife.rb
role
は run_list
と attribute
をガッチャンコして登録出来る。JSON
形式で書いたファイルを from file ${PATH}
でアップする。
knife role from file roles/sensu-client.json -c ~/.chef/knife.rb
role
の書式は以下の通り。JSON
形式以外にも ruby
でも書けるらしい。
{
"name": "sensu-client",
"default_attributes": {
},
"override_attributes": {
},
"run_list": [
"sensu::default",
"sensu::client_service"
]
}
knife node run_list add ${node} "role["sensu-server"]" -c ~/.chef/knife.rb
knife node run_list set ${node} "role["sensu-server"]" -c ~/.chef/knife.rb
log_level :info
log_location STDOUT
chef_server_url 'https://ip-xxx-xxx-x-xxx'
validation_client_name 'chef-validator'
log_level :info
log_location STDOUT
node_name 'sensu'
client_key "#{ENV["HOME"]}/.chef/sensu.pem"
validation_client_name 'chef-validator'
validation_key "#{ENV["HOME"]}/.chef/validation.pem"
chef_server_url 'https://ip-xxx-xxx-x-xxx'
syntax_check_cache_path "#{ENV["HOME"]}/.chef/syntax_check_cache"
-
対処
-
Chef Server
のダッシュボード上でchef-validator
クライアントの秘密鍵を再度作成して利用する -
memo
-
validation.pem
はnode
登録の為に必要 -
node
登録後はvalidation.pem
は削除可能(削除が推奨されている)
-
現象
-
これと同じ現象
-
存在していない
Chef Server
にcookbook
をアップロードしようとするがホストが存在していないのでエラーになる -
対処
-
Chef Server
側でchef-server-ctl reconfigure
- 現象
- ulimit という
cookbook
をアップロード時発生 - 以下のようなエラーが出た
ERROR: The data in your request was invalid
Response: Invalid value '[]' for metadata.platforms
cd ~/.berkshelf/cookbooks/ulimit-0.3.2/
/opt/chef/bin/knife cookbook metadata from file metadata.rb
cp metadata.json ~/chef-repo-sensu/cookbooks/ulimit/
Chef Server
便利