]> git.openstreetmap.org Git - chef.git/blob - cookbooks/taginfo/recipes/default.rb
a0a4091961cc86764a781338cdca87b4025b79b4
[chef.git] / cookbooks / taginfo / recipes / default.rb
1 #
2 # Cookbook Name:: taginfo
3 # Recipe:: default
4 #
5 # Copyright 2014, OpenStreetMap Foundation
6 #
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
10 #
11 #     http://www.apache.org/licenses/LICENSE-2.0
12 #
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
18 #
19
20 require "json"
21
22 include_recipe "apache::ssl"
23 include_recipe "passenger"
24 include_recipe "git"
25
26 package "libsqlite3-dev"
27 package "zlib1g-dev"
28 package "libosmpbf-dev"
29 package "libprotobuf-dev"
30 package "libboost-dev"
31 package "libexpat1-dev"
32 package "libsparsehash-dev"
33 package "libgd2-xpm-dev"
34 package "make"
35 package "g++"
36
37 package "sqlite3"
38 package "osmosis"
39 package "curl"
40 package "subversion"
41
42 package "ruby"
43 package "rubygems"
44 gem_package "json"
45 gem_package "sqlite3"
46 gem_package "sinatra"
47 gem_package "sinatra-r18n"
48 gem_package "rack-contrib"
49
50 apache_module "cache"
51 apache_module "disk_cache"
52
53 template "/etc/cron.d/taginfo" do
54   source "cron.erb"
55   owner "root"
56   group "root"
57   mode 0644
58 end
59
60 directory "/var/log/taginfo" do
61   owner "taginfo"
62   group "taginfo"
63   mode 0755
64 end
65
66 file "/etc/logrotate.d/taginfo" do
67   action :delete
68 end
69
70 node[:taginfo][:sites].each do |site|
71   name = site[:name]
72   directory = site[:directory] || "/srv/#{name}"
73   description = site[:description]
74   icon = site[:icon]
75   contact = site[:contact]
76
77   directory "/var/log/taginfo/#{name}" do
78     owner "taginfo"
79     group "taginfo"
80     mode 0755
81   end
82
83   directory directory do
84     owner "taginfo"
85     group "taginfo"
86     mode 0755
87   end
88
89   git "#{directory}/osmium" do
90     action :sync
91     repository "git://github.com/joto/osmium.git"
92     revision "osmorg-taginfo-live"
93     user "taginfo"
94     group "taginfo"
95   end
96
97   git "#{directory}/taginfo" do
98     action :sync
99     repository "git://github.com/joto/taginfo.git"
100     revision "osmorg-taginfo-live"
101     user "taginfo"
102     group "taginfo"
103   end
104
105   settings = JSON.parse(IO.read("#{directory}/taginfo/taginfo-config-example.json"))
106
107   settings["instance"]["url"] = "http://#{name}/"
108   settings["instance"]["description"] = description
109   settings["instance"]["icon"] = "/img/logo/#{icon}.png"
110   settings["instance"]["contact"] = contact
111   settings["logging"]["directory"] = "/var/log/taginfo/#{name}"
112   settings["opensearch"]["shortname"] = "Taginfo"
113   settings["opensearch"]["contact"] = "webmaster@openstreetmap.org"
114   settings["sources"]["download"] = ""
115   settings["sources"]["create"] = "db languages josm potlatch wiki"
116   settings["sources"]["db"]["planetfile"] = "#{directory}/planet/planet.pbf"
117   settings["sources"]["db"]["tagstats"] = "#{directory}/taginfo/tagstats/tagstats"
118   settings["tagstats"]["cxxflags"] = "-I../../osmium/include"
119
120   file "#{directory}/taginfo-config.json" do
121     owner "taginfo"
122     group "taginfo"
123     mode 0644
124     content JSON.pretty_generate(settings)
125   end
126
127   execute "#{directory}/taginfo/tagstats/Makefile" do
128     action :nothing
129     command "make"
130     cwd "#{directory}/taginfo/tagstats"
131     user "taginfo"
132     group "taginfo"
133     subscribes :run, "git[#{directory}/osmium]"
134     subscribes :run, "git[#{directory}/taginfo]"
135     notifies :restart, "service[apache2]"
136   end
137
138   directory "#{directory}/taginfo/web/tmp" do
139     owner "taginfo"
140     group "taginfo"
141     mode 0755
142   end
143
144   directory "#{directory}/data" do
145     owner "taginfo"
146     group "taginfo"
147     mode 0755
148   end
149
150   directory "#{directory}/data/old" do
151     owner "taginfo"
152     group "taginfo"
153     mode 0755
154   end
155
156   directory "#{directory}/download" do
157     owner "taginfo"
158     group "taginfo"
159     mode 0755
160   end
161
162   directory "#{directory}/sources" do
163     owner "taginfo"
164     group "taginfo"
165     mode 0755
166   end
167
168   directory "#{directory}/planet" do
169     owner "taginfo"
170     group "taginfo"
171     mode 0755
172   end
173
174   remote_file "#{directory}/planet/planet.pbf" do
175     action :create_if_missing
176     source "http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf"
177     owner "taginfo"
178     group "taginfo"
179     mode 0644
180   end
181
182   directory "#{directory}/planet/log" do
183     owner "taginfo"
184     group "taginfo"
185     mode 0755
186   end
187
188   directory "#{directory}/planet/replication" do
189     owner "taginfo"
190     group "taginfo"
191     mode 0755
192   end
193
194   template "#{directory}/planet/replication/configuration.txt" do
195     source "configuration.txt.erb"
196     owner "taginfo"
197     group "taginfo"
198     mode 0644
199   end
200
201   file "#{directory}/planet/replication/download.lock" do
202     owner "taginfo"
203     group "taginfo"
204     mode 0644
205   end
206
207   directory "#{directory}/bin" do
208     owner "taginfo"
209     group "taginfo"
210     mode 0755
211   end
212
213   template "#{directory}/bin/update-planet" do
214     source "update-planet.erb"
215     owner "taginfo"
216     group "taginfo"
217     mode 0755
218     variables :directory => directory
219   end
220
221   template "#{directory}/bin/update-taginfo" do
222     source "update-taginfo.erb"
223     owner "taginfo"
224     group "taginfo"
225     mode 0755
226     variables :directory => directory
227   end
228
229   template "#{directory}/bin/update" do
230     source "update.erb"
231     owner "taginfo"
232     group "taginfo"
233     mode 0755
234     variables :name => name, :directory => directory
235   end
236
237   apache_site name do
238     template "apache.erb"
239     directory "#{directory}/taginfo/web/public"
240   end
241 end