どうも、cloudpackかっぱ (@inokara) です…夜中に目が覚めてざっと触ってみて書きました。

はじめに

せっかく sensu なのに手でチマチマ設定は辛い、ナウでヤングに人気なツールはナウでヤングにセットアップしなければいけませんということで sensu-client for Windows を chef-solo でセットアップしたメモです。


memo

必要なもの、環境

  • Windows Server 2012 R2
  • ChefDK
  • git
  • powershell
  • berkshelf
  • knife-solo

ということで 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

を実行すると…

sensu-client for Windows を chef-solo で構築: 実行結果

すいません!既に二回目の実行なので何も処理されず終了していますが、上図の通りに chef-solo が実行されて sensu-client のセットアップが滞りなく終了しています(しました)。

ホントに設定されたの?

ご安心下さい。

sensu-client for Windows を chef-solo で構築: 実行結果(uchiwa)

設定ファイルも確認してみます。

{
  "client": {
    "name": "WIN-xxxxxxxxx",
    "address": "xxx.xxx.xx.xxx",
    "subscriptions": [
      "all"
    ]
  }
}

ね!


これで!

チマチマした「手 conf」からは開放されそうです!
そして、もっとナウでヤングに knife solo でリモートから…は無理しないようにしたいと思います。

そして…もう一回寝ます。

元記事はこちらです。
chef-solo で始める sensu-client for Windows