どうも、cloudpack のかっぱ (@inokara) です…夜中に目が覚めてざっと触ってみて書きました。
はじめに
せっかく sensu なのに手でチマチマ設定は辛い、ナウでヤングに人気なツールはナウでヤングにセットアップしなければいけませんということで sensu-client for Windows を chef-solo でセットアップしたメモです。
memo
必要なもの、環境
ということで ChefDK と git に関しては予めインストールしておきましょう。berkshelf と knife-solo は powershell を起動して以下のようにインストールしました。
cd C:\opscode\chefdk\embedded\bin ./gem install knife-solo berkshelf --no-ri --no-rdoc -V
powershell は私的な 2014 年の産業革命です。
chef-repo 作る
cd C:\ knife solo init chef-repo
berkshelf を使って sensu-chef とか必要な cookbook を召喚する
source "https://supermarket.getchef.com"cookbook 'windows', '~> 1.34.6' cookbook 'sensu', git: 'https://github.com/sensu/sensu-chef.git'
を書いておいて berks vendor します。
cd C:\chef-repo berks vendor berks-cookbooks
solo.rb を設定する
file_cache_path "C://opscode/chef/cache/chef-solo" cookbook_path "C://chef-repo/cookbooks","C://chef-repo/berks-cookbooks" data_bag_path "C://chef-repo/data_bags"
data_bag に ssl.json を入れておく
これも powershell でやります。
cd C:\chef-repo\data_bags mkdir sensu cd sensu wget -Outfile ssl.json https://raw.githubusercontent.com/culturejam/chef-sensu/master/examples/data_bags/sensu/ssl.json
俺の cookbook を作る
sensu-client の設定に必要な情報は個別の cookbook を作ってそちらに設定しておきます。
cookbook を作る
これも powershell でやります。
cd C:\chef-repo\cookbooks berks cookbook sensu-deploy ./sensu-deploy
attribute を設定する
C:\\chef-repo\cookbooks\sensu-deploy\attributes\default.rb
を適当なエディタで設定します。
platform
if platform_family?("windows") default.sensu.admin_user = "Administrator" default.sensu.directory = 'C:\opt\sensu\etc' default.sensu.log_directory = 'C:\opt\sensu\var\log' default.sensu.windows.dism_source = nil default.sensu.windows.package_options = nil else default.sensu.admin_user = "root" default.sensu.directory = "/etc/sensu" default.sensu.log_directory = "/var/log/sensu" end
installation
default.sensu.version = "0.13.1-1" default.sensu.use_unstable_repo = false default.sensu.log_level = "info" default.sensu.use_ssl = false default.sensu.use_embedded_ruby = false default.sensu.init_style = "sysv" default.sensu.service_max_wait = 10
default.sensu.apt_repo_url = "http://repos.sensuapp.org/apt" default.sensu.yum_repo_url = "http://repos.sensuapp.org" default.sensu.msi_repo_url = "http://repos.sensuapp.org/msi"
rabbitmq
default.sensu.rabbitmq.host = "${your_rabbitmq_host}" default.sensu.rabbitmq.port = 5672 default.sensu.rabbitmq.vhost = "/sensu" default.sensu.rabbitmq.user = "sensu" default.sensu.rabbitmq.password = "xxxxxxxxxxx"
redis
default.sensu.redis.host = "localhost" default.sensu.redis.port = 6379
api
default.sensu.api.host = "localhost" default.sensu.api.bind = "0.0.0.0" default.sensu.api.port = 4567
今回は SSL を有効にするとなぜか sensu-client が動かないので SSL は無効にしてます。(efault.sensu.use_ssl = false
)実際に運用する際には SSL は有効にしておいた方が良いと思います!
recipe を書く
C:\\chef-repo\cookbooks\sensu-deploy\recipes\default.rb
を適当なエディタで設定します。
include_recipe "sensu::default" include_recipe "sensu::client_service"sensu_client node.name do address node.ipaddress subscriptions node.roles + ["all"] #additional(:cluster => node.cluster) end
特に凝った設定等はいれていない極めてシンプルな環境です。
nodes/localhost.json を設定する
{ "run_list": [ "recipe[windows]", "recipe[sensu]", "recipe[sensu-deploy]" ] }
chef-solo 実行!
とその前…
cd C:\chef-repo chef-solo -c .\solo.rb -j .\nodes\localhost.json -W
してから…
chef-solo -c .\solo.rb -j .\nodes\localhost.json
を実行すると…
すいません!既に二回目の実行なので何も処理されず終了していますが、上図の通りに chef-solo が実行されて sensu-client のセットアップが滞りなく終了しています(しました)。
ホントに設定されたの?
ご安心下さい。
設定ファイルも確認してみます。
{ "client": { "name": "WIN-xxxxxxxxx", "address": "xxx.xxx.xx.xxx", "subscriptions": [ "all" ] } }
ね!
これで!
チマチマした「手 conf」からは開放されそうです!
そして、もっとナウでヤングに knife solo でリモートから…は無理しないようにしたいと思います。
そして…もう一回寝ます。
元記事はこちらです。
「chef-solo で始める sensu-client for Windows」