pgstudioをセットアップする [Chef]
pgstudioをインストールする
pgstudioをセットアップするためのCookbookを作成します。C:\Users\hoge\chef-repo> knife cookbook create pgstudio -o site-cookbooks
pgstudioのレシピを作成します。【chef-repo\site-cookbooks\pgstudio\recipes\deault.rb】
#
# Cookbook Name:: pgstudio
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
script "install_pgstudio" do
interpreter "bash"
user "root"
code <<-EOH
wget -O /tmp/pgstudio.tar.gz http://www.postgresqlstudio.org/?ddownload=838
tar xzf /tmp/pgstudio.tar.gz -C /usr/local/tomcat/default/webapps
chown tomcat7 /usr/local/tomcat/default/webapps/pgstudio.war
EOH
end
service "tomcat7" do
supports :status => true, :restart => true
action [ :enable, :restart ]
end
Apache2のCookbookのテンプレートであるhttp-proxy.conf.erbを修正します。【chef-repo\site-cookbooks\apache2\tempolates\default\ http-proxy.conf.erb】
ProxyPass ajp://localhost:8009/pgstudio/
ProxyPass / ajp://localhost:8009/
Rolesのwebserver.jsonファイルのrun_listにpgstudioのレシピの記述を追加します。(前略)
"run_list": [
"recipe[iptables::iptables]",
"recipe[apache2]",
"recipe[java]",
"recipe[tomcat]",
"recipe[pgstudio]"
]
}
WebサーバをCookします。C:\Users\hoge\chef-repo> knife solo cook vagrant@hoge202
これで、pgstudioがインストールされて、画面が表示されるようになったが、postgresユーザでログインできません。rsyslog4postgresql Cookbookを作る
先のDBサーバの設定のままでは、PostgreSQLがsyslogを吐かないので、専用のCookboookを作成して、syslogの設定を行います。空のCookbookを作成します。
C:\Users\hoge\chef-repo> knife cookbook create rsyslog4postgresql -o site-cookbooks
レシピを書きます。/etc/rsyslog.confの末尾に、local0.* /var/log/Postgres.logのエントリを追加する簡単な内容です。
また、logrotateの設定をテンプレートで上書きします。
【chef-repo\site-cookbooks\rsyslog4postgresql\recipes\deaflut.rb】
#
# Cookbook Name:: rsyslog4postgresql
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
script "setup_local0_syslog" do
interpreter "bash"
user "root"
code <<-EOH
echo 'local0.* /var/log/postgres.log' >> /etc/rsyslog.conf
EOH
end
template "/etc/logrotate.d/syslog" do
source "syslog.erb"
group "root"
owner "root"
mode "0600"
end
service "rsyslog" do
supports :status => true, :restart => true
action [ :enable, :restart ]
end
【chef-repo\site-cookbooks\rsyslog4postgresql\templates\default\syslog.erb】
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/postgres.log
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || t
rue
endscript
}
Roleのdbserver.josnを修正します。【chef-repo\roles\dbserver.json】
// dbserver.json
{
"name": "dbserver",
"default_attributes": {},
"override_attributes": {
"iptables" : {
"postgres" : "5432"
}
},
"json_class": "Chef::Role",
"descripution": "",
"chef_type": "role",
"run_list": [
"recipe[postgresql]",
"recipe[postgresql::server]",
"recipe[postgresql::contrib]",
"recipe[iptables::iptables]",
"recipe[rsyslog4postgresql]"
]
}
DBサーバをCookします。C:\Users\hoge\chef-repo> knife solo cook vagrant@hoge201
postgresのパスワードを設定するCookbookを作成する(passwd4postgresql)
空のCookbookを作成します。C:\Users\hoge\chef-repo> knife cookbook create passwd4postgresql -o site-cookbooks
【chef-repo\site-cookbooks\ passwd4postgresql \recipes\default.rb】
#
# Cookbook Name:: passwd4postgresql
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
script "set_passwd_postgres" do
interpreter "bash"
user "postgres"
code <<-EOH
psql -c "alter user postgres with password 'postgres'"
EOH
end
【chef-repo\roles\dbserver.json】
// dbserver.json
{
"name": "dbserver",
"default_attributes": {},
"override_attributes": {
"iptables" : {
"postgres" : "5432"
}
},
"json_class": "Chef::Role",
"descripution": "",
"chef_type": "role",
"run_list": [
"recipe[postgresql]",
"recipe[postgresql::server]",
"recipe[postgresql::contrib]",
"recipe[iptables::iptables]",
"recipe[rsyslog4postgresql]",
"recipe[passwd4postgresql]"
]
}
DBサーバをCookします。C:\Users\hoge\chef-repo> knife solo cook vagrant@hoge201
pgstudioを使う
以上の設定にて、HostOS側からブラウザで、以下のURLを実行して、pgstudioにログインできます。http://192.168.56.202/pgstudio/
タグ:Chef