Tomcat7をインストールする [Chef]
Tomcat7に対応したCoookbookは、OPSCodeにはないので、gitのリポジジトリから次のCookbookを入手します。(もちろんProxyの設定は、必須である)
java,logrotate,arkのcookbookに依存するので、これらをcookbookにダウンロードして解凍しておきます。(javaは前章で設定済み)
【chef-repo\roles\webserver.json】
【chef-repo\site-cookbooks\iptables\templates\default\iptables.erb】
【chef-repo\apache2\templates\httpd-proxy.conf.erb】
【chef-repo\apache2\recipes\default.rb】
C:\Users\hoge\chef-repo> cd cookbooks
chef-repo\cookbooks> git clone git://github.com/bryanwb/chef-tomcat.git
ここで、注意することは、chef-tomcatのCookbookの名前をtomcatに変更しておくことです。java,logrotate,arkのcookbookに依存するので、これらをcookbookにダウンロードして解凍しておきます。(javaは前章で設定済み)
C:\Users\hoge\chef-repo\cookbooks> knife cookbook site download logrotate
C:\Users\hoge\chef-repo\cookbooks> knife cookbook site download ark
RolesのJSONファイルを以下のように変更します。【chef-repo\roles\webserver.json】
// webserver.json
{
"name": "webserver",
"default_attributes": {},
"override_attributes": {
"java": {
"install_flavor": "oracle",
"jdk_version": 7,
"java_home": "/usr/local/java",
"oracle" : {
"accept_oracle_download_terms": true
}
}
},
"json_class": "Chef::Role",
"descripution": "",
"chef_type": "role",
"run_list": [
"recipe[iptables::iptables]",
"recipe[apache2]",
"recipe[java]",
"recipe[tomcat]"
]
}
Cookします。C:\Users\hoge\chef-repo> knife solo cook vagrant@hoge202
Tomcatのport 8080/tcpが空いていないので、ブラウザからアクセスできません。iptablesを変更して、8080のportをあけるようにします。【chef-repo\site-cookbooks\iptables\templates\default\iptables.erb】
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
※このとき、iptables.erbの改行コードが、CRLFではなく、LFで保存されるよう注意すること。Apacheとの連携の設定
Tomcat7とApacheのAJP連携のため、apache2/templates/httpd-proxy.conf.erbを追加します。【chef-repo\apache2\templates\httpd-proxy.conf.erb】
ProxyPass / ajp://localhost:8009/
http-proxyを展開するように、Apache2のレシピを変更します。【chef-repo\apache2\recipes\default.rb】
#
# Cookbook Name:: apache2
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
package "httpd" do
action :install
end
package "mod_ssl" do
action :install
end
template "/etc/httpd/conf/httpd.conf" do
source "httpd.conf.erb"
group "root"
owner "root"
mode "0644"
# notifies :reload, 'service[httpd]'
end
template "/etc/httpd/conf.d/ssl.conf" do
source "ssl.conf.erb"
group "root"
owner "root"
mode "0644"
# notifies :reload, 'service[httpd]'
end
template "/etc/httpd/conf.d/httpd-proxy.conf" do
source "httpd-proxy.conf.erb"
group "root"
owner "root"
mode "0644"
# notifies :reload, 'service[httpd]'
end
cookbook_file "/var/www/html/robots.txt" do
source "robots.txt"
owner "root"
group "root"
mode "0644"
action :create_if_missing
end
service "httpd" do
supports :status => true, :restart => true
action [ :enable, :restart ]
end
これで、いったんGuestOSをRollbackします。C:\Users\hoge\chef-repo> vagrant sandbox rollback web
Cookします。C:\Users\hoge\chef-repo> knife solo cook vagrant@hoge202