Chefで既存手順のレシピを書く5(munin、zabbix)
...おつかれさまです。小宮です。
前回に引き続き、munin,zabbixの手順のレシピをご紹介します。レシピはこの記事でおしまいです。
記事の最後にはレシピの適用方法を記載します。・muninのレシピ
# cd /opt/src/rpms # mkdir -p /root/chef-repo/site-cookbooks/munin/files/default/rpms # mkdir -p /root/chef-repo/site-cookbooks/munin/files/default/var/www/html/munin # mkdir /root/chef-repo/site-cookbooks/munin/files/default/etc/munin/plugin-conf.d # cp -p /etc/munin/munin.conf /root/chef-repo/site-cookbooks/munin/files/default/etc/munin/ # scp -Cp xxx-web01:/etc/munin/munin-node.conf /root/chef-repo/site-cookbooks/munin/files/default/etc/munin/ # cp -p /var/www/html/munin/.htaccess /root/chef-repo/site-cookbooks/munin/files/default/var/www/html/munin/ # cp -p /etc/munin/plugin-conf.d/munin-node /root/chef-repo/site-cookbooks/munin/files/default/etc/munin/plugin-conf.d/ # tar cf /root/chef-repo/site-cookbooks/munin/files/default/rpms/munin-node-rpm.tar ./munin-node-rpm/ # tar tf /root/chef-repo/site-cookbooks/munin/files/default/rpms/munin-node-rpm.tar ./munin-node-rpm/ # tar cf /root/chef-repo/site-cookbooks/munin/files/default/rpms/munin-serv-rpm.tar ./munin-serv-rpm/ # tar tf /root/chef-repo/site-cookbooks/munin/files/default/rpms/munin-serv-rpm.tar ./munin-serv-rpm/ # cd /root/chef-repo/site-cookbooks/munin/recipes # touch munin-node.rb munin-server.rb munin-node-db.rb munin-node-web.rb # vi munin-node.rb filename = "munin-node-rpm.tar" cookbook_file "/tmp/#{filename}" do source "rpms/#{filename}" mode 0644 end package "perl-DBI" do not_if "rpm -qa|grep perl-DBI" action :install end script "install_munin-node" do not_if 'ls /etc/munin/munin-node.conf' interpreter "bash" user "root" code <<-EOL cd /tmp tar xf /tmp/#{filename} rpm -i /tmp/munin-node-rpm/perl-Dig* rpm -i /tmp/munin-node-rpm/perl-{C*,H*,I*,L*,N*,X*,li*} rpm -i /tmp/munin-node-rpm/perl-DBD-Pg* rpm -i /tmp/munin-node-rpm/munin-* cp -p /etc/munin/munin-node.conf{,.org} EOL end cookbook_file "/etc/munin/munin-node.conf" do source "etc/munin/munin-node.conf" mode 0644 end script "link_plugins" do not_if 'ls /etc/munin/plugins/tcp' interpreter "bash" user "root" code <<-EOL rm -f /etc/munin/plugins/* ln -s /usr/share/munin/plugins/cpu /etc/munin/plugins/cpu ln -s /usr/share/munin/plugins/if_err_ /etc/munin/plugins/if_err_eth0 ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_eth0 ln -s /usr/share/munin/plugins/iostat /etc/munin/plugins/iostat ln -s /usr/share/munin/plugins/load /etc/munin/plugins/load ln -s /usr/share/munin/plugins/memory /etc/munin/plugins/memory ln -s /usr/share/munin/plugins/tcp /etc/munin/plugins/tcp ln -s /usr/share/munin/plugins/df /etc/munin/plugins/df EOL end service "munin-node" do supports :status => true, :restart => true action [ :enable, :start ] end # vi munin-server.rb filename = "munin-serv-rpm.tar" cookbook_file "/tmp/#{filename}" do source "rpms/#{filename}" mode 0644 end script "install_munin-serv" do not_if 'ls /etc/munin/munin.conf' interpreter "bash" user "root" code <<-EOL tar xf /tmp/#{filename} rpm -i /tmp/munin-serv-rpm/* cp -p /etc/munin/munin.conf{,.org} EOL end cookbook_file "/etc/munin/munin.conf" do source "etc/munin/munin.conf" mode 0644 end service "munin-node" do supports :status => true, :restart => true action [ :enable, :start ] end cookbook_file "/var/www/html/munin/.htaccess" do source "var/www/html/munin/.htaccess" mode 0644 end # vi munin-node-web.rb script "link_plugins_web" do not_if 'ls /etc/munin/plugins/apache_accesses' interpreter "bash" user "root" code <<-EOL ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes EOL end service "munin-node" do supports :status => true, :restart => true action [ :enable, :restart ] end # vi munin-node-db.rb script "link_plugins_db" do not_if 'ls /etc/munin/plugins/mysql_threads' interpreter "bash" user "root" code <<-EOL ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads EOL end cookbook_file "/etc/munin/plugin-conf.d/munin-node" do source "etc/munin/plugin-conf.d/munin-node" mode 0644 end service "munin-node" do supports :status => true, :restart => true action [ :enable, :restart ] endrole毎にちがうコマンド実行するとかひとつのレシピ内でやる方法ってあるのかが気になります。ifとかでできるんでしょうか。
今回はそんな方法はわからなかったので、webとdbそれぞれ用のレシピを分けて作りました。
roleに適用する順序は、munin-node.rbを最初にしないとプラグインが最初全部消される仕様です。(レシピは上から順に実行されます)Chefで既存手順のレシピを書く4(DBサーバ)
...おつかれさまです。小宮です。
前回に引き続きdbserverのレシピについて書いていきます。
のこってるのはmunin、zabbxとserverspecでのテストだけです。もうすこしの辛抱です。webと同じくバージョン固定インストールなので、外部レシピは基本的に使わない方向とする
・mysqlのインストールと起動と自動起動の有効化
[shell]# cd /root/chef-repo/site-cookbooks/mysqld/recipes
mkdir -p /root/chef-repo/site-cookbooks/mysqld/files/default/usr/local/src/rpms
mkdir -p ../templates/default/etc/init.d
mkdir -p ../files/default/etc/init.d
mkdir -p ../files/default/root
mkdir -p /root/chef-repo/site-cookbooks/mysqld/files/default/etc/logrotate.d
mkdir -p /root/chef-repo/site-cookbooks/mysqld/files/default/opt/{backup,bin}
scp -Cp xxx-db02:/opt/bin/mysql-back.sh /root/chef-repo/site-cookbooks/mysqld/files/default/opt/bin/
cp -p /etc/logrotate.d/mysqld /root/chef-repo/site-cookbooks/mysqld/files/default/etc/logrotate.d/
scp -Cp xxx-db01:/etc/init.d/mysqld ../files/default/etc/init.d/
scp -Cp xxx-db02:/etc/my.cnf ../templates/default/etc/
cp -p /root/.path_to_file ../files/default/root/
cd /opt/src/rpms/
tar czf /root/chef-repo/site-cookbooks/mysqld/files/default/usr/local/src/rpms/db-rpm.tar.gz ./db-rpm/
tar czf /root/chef-repo/site-cookbooks/mysqld/files/default/usr/local/src/rpms/db-tools-rpm.tar.gz ./db-tools-rpm/
tar tzf /root/chef-repo/site-cookbooks/mysqld/files/default/usr/local/src/rpms/db-rpm.tar.gz
vi ../templates/default/etc/my.cnf
diff /etc/my.cnf ../templates/default/etc/my.cnf
53c53
Chefで既存手順のレシピを書く3(WEBサーバ)
...こんにちは。プラットフォームの小宮です。
前回に引き続き既存手順のレシピ化をすすめていきます。あと3回くらいだと思われるので気長におつきあいください。今回はWEBサーバのレシピになります。
特別なことは特にしていなくて普通のwebサーバだと思いますが、一応何してるか書いておきますと、
apache2.2+php5.3系で中間コードキャッシュにAPCを使っていてwordpressとそのsshプラグインつかっておりAWSのS3にmountしています。
s3mountに使うfuseが最新版からソースコードで入れる必要があり、バージョン固定のphpのパッケージが18個くらいとかありまして
一つ一つpackageリソース書くのが面倒だったこともありましてscriptつかいました。
scriptつかうときはnot_if忘れるとmakeとか何回も実行されて困るので注意が必要です。
あとcd書き忘れると展開場所が認識してるとこに出ないのでその後の手順でファイルが存在しないエラーがでました。・httpdのレシピを書く
設定ファイルの準備をする
[shell]# mkdir -p /root/chef-repo/site-cookbooks/httpd/files/default/rpms # tar cf /root/chef-repo/site-cookbooks/httpd/files/default/rpms/web-rpm.tar ./web-rpm/ # tar tf /root/chef-repo/site-cookbooks/httpd/files/default/rpms/web-rpm.tar ./web-rpm/ # cd /root/chef-repo/site-cookbooks/httpd/recipes # mkdir -p /root/chef-repo/site-cookbooks/httpd/files/default/etc/httpd/{conf,conf.d} # cp -p /opt/src/config/web/httpd.conf /root/chef-repo/site-cookbooks/httpd/files/default/etc/httpd/conf/ # vi /root/chef-repo/site-cookbooks/httpd/files/default/etc/httpd/conf/httpd.conf # mkdir -p /root/chef-repo/site-cookbooks/httpd/files/default/etc/php.d # cp -p /opt/src/config/php/php.ini /root/chef-repo/site-cookbooks/httpd/files/default/etc/ # cd /root/chef-repo/site-cookbooks/httpd/files/default/rpms # wget http://rpms.famillecollet.com/enterprise/5/olds/x86_64/php-pecl-apc-3.1.13-3.el5.remi.x86_64.rpm # cp -p /etc/php.d/apc.ini /root/chef-repo/site-cookbooks/httpd/files/default/etc/php.d/ # wget http://rpms.famillecollet.com/enterprise/5/remi/x86_64/php-pecl-ssh2-0.11.3-2.el5.remi.x86_64.rpm[/shell]
apacheのインストールと基本設定
[shell]# vi httpd-server.rb cookbook_file “/tmp/web-rpm.tar” do source “rpms/web-rpm.tar” mode 0644 end