読者です 読者をやめる 読者になる 読者になる

ログってなんぼ

日々のメモです

Chef-solo:CentOS6にZabbix-agentを入れる

zabbix infra

新しくサーバーを立てるときに行う共通処理を定義したops-toolsという名前のレシピにzabbix-agentを導入する記述を追加してみます

※ops-toolsは任意のレシピ名です。念のため。

サードパーティのcookbookを使ってもいいのですが、クロスプラットフォーム対応や複雑なエラー処理などしっかり作っている反面、Chef-soloを始めたばかりの人には若干複雑なコードになってるのと、私の場合は対象がCentOS6またはAmazon Linux限定でいいという事情があるのでシンプルに手書きすることにしました

とりあえずやってみる

zabbixの公式リポジトリを追加して、インストール、設定を書き換えて再起動となります。手作業と一緒ですね。

site-cookbooks/ops-tools/recipes/default.rb

# zabbix-agent
bash "zabbix repos" do
  user "root"
  code <<-EOS
    rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm
  EOS
end

package "zabbix-agent" do
  action :upgrade
end

template "/etc/zabbix/zabbix_agentd.conf" do
  path "/etc/zabbix/zabbix_agentd.conf"
  owner "root"
  source "zabbix_agentd.conf.erb"
end

service "zabbix-agent" do
  action :restart
end

最初のbashブロックでrootユーザーでリポジトリを追加してます

次のpackageブロックでzabbix-agentのインストールをします、action :install でもいいですが、action :upgradeにしておけば既に入っている場合更新しようとしてくれます

templateブロックで設定ファイルを置き換えています。

最後にserviceブロックでagentを再起動。

基本的に手作業で行うときと同じ内容です。Chefの持つ機能を最大限活用すればもっとインテリジェントに書くことも可能だと思うのですが、Chefを始めてしばらくの間はいつも自分がやっている手作業をそのままトレースするような書き方をしてみてとにかく動かすことから始めていって、少しずつ自分のレシピをレベルアップさせていけばいいかと。とにかく動かないとモチベーションが継続しません・・・実際私も触り始めて3日目くらいで心が折れかけましたが、カッコ悪いレシピでもとにかく動かしていくことでモチベの低下を乗り越えましたw

テンプレートを作る

site-cookbooks/ops-tools/templates/default/zabbix_agentd.conf.erb を作ります。

Server=<%= node['zabbix']['server'] %>
ServerActive=<%= node['zabbix']['server'] %>
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agentd.d/
EnableRemoteCommands=1
LogRemoteCommands=1
AllowRoot=1
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Timeout=30

設定内容はお好みで。

Zabbix ServerのFQDNはこのファイルにベタ書きしてもいいですが、今回はこの部分をAttributableにしてみました。

Attributeを作る

先ほど作ったテンプレートの

<%= node['zabbix']['server'] %>

に当たる部分のAttributeを定義します

site-cookbooks/ops-tools/attributes/default.rb を作ります。

default['zabbix']['server'] = 'ZABBIX_SERVER_FQDN'

できたら早速、レッツクッキングです。

こちらも参考までにどうぞ

okisanjp/chef-recipes はてなブックマーク - okisanjp/chef-recipes

okisanjp.hatenablog.jp