]> git.openstreetmap.org Git - chef.git/blob - cookbooks/taginfo/recipes/default.rb
93d1611235dcbe6517110daf6b8eca0846c14aa9
[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 "m4"
41 package "subversion"
42
43 package "ruby"
44 package "rubygems"
45 gem_package "json"
46 gem_package "sqlite3"
47 gem_package "sinatra"
48 gem_package "sinatra-r18n"
49 gem_package "rack-contrib"
50
51 apache_module "cache"
52 apache_module "cache_disk"
53
54 template "/etc/cron.d/taginfo" do
55   source "cron.erb"
56   owner "root"
57   group "root"
58   mode 0644
59 end
60
61 directory "/var/log/taginfo" do
62   owner "taginfo"
63   group "taginfo"
64   mode 0755
65 end
66
67 file "/etc/logrotate.d/taginfo" do
68   action :delete
69 end
70
71 node[:taginfo][:sites].each do |site|
72   name = site[:name]
73   directory = site[:directory] || "/srv/#{name}"
74   description = site[:description]
75   about = site[:about]
76   icon = site[:icon]
77   contact = site[:contact]
78
79   directory "/var/log/taginfo/#{name}" do
80     owner "taginfo"
81     group "taginfo"
82     mode 0755
83   end
84
85   directory directory do
86     owner "taginfo"
87     group "taginfo"
88     mode 0755
89   end
90
91   git "#{directory}/osmium" do
92     action :sync
93     repository "git://github.com/joto/osmium.git"
94     revision "osmorg-taginfo-live"
95     user "taginfo"
96     group "taginfo"
97   end
98
99   git "#{directory}/taginfo" do
100     action :sync
101     repository "git://github.com/joto/taginfo.git"
102     revision "osmorg-taginfo-live"
103     user "taginfo"
104     group "taginfo"
105   end
106
107   settings = JSON.parse(IO.read("#{directory}/taginfo/taginfo-config-example.json"))
108
109   settings["instance"]["url"] = "http://#{name}/"
110   settings["instance"]["description"] = description
111   settings["instance"]["about"] = about
112   settings["instance"]["icon"] = "/img/logo/#{icon}.png"
113   settings["instance"]["contact"] = contact
114   settings["logging"]["directory"] = "/var/log/taginfo/#{name}"
115   settings["opensearch"]["shortname"] = "Taginfo"
116   settings["opensearch"]["contact"] = "webmaster@openstreetmap.org"
117   settings["sources"]["download"] = "josm"
118   settings["sources"]["create"] = "db languages potlatch projects wiki"
119   settings["sources"]["db"]["planetfile"] = "#{directory}/planet/planet.pbf"
120   settings["sources"]["db"]["tagstats"] = "#{directory}/taginfo/tagstats/tagstats"
121   settings["tagstats"]["cxxflags"] = "-I../../osmium/include"
122   settings["tagstats"]["geodistribution"] = "MmapAnon"
123
124   file "#{directory}/taginfo-config.json" do
125     owner "taginfo"
126     group "taginfo"
127     mode 0644
128     content JSON.pretty_generate(settings)
129   end
130
131   execute "#{directory}/taginfo/tagstats/Makefile" do
132     action :nothing
133     command "make"
134     cwd "#{directory}/taginfo/tagstats"
135     user "taginfo"
136     group "taginfo"
137     subscribes :run, "git[#{directory}/osmium]"
138     subscribes :run, "git[#{directory}/taginfo]"
139     notifies :restart, "service[apache2]"
140   end
141
142   directory "#{directory}/taginfo/web/tmp" do
143     owner "taginfo"
144     group "taginfo"
145     mode 0755
146   end
147
148   directory "#{directory}/data" do
149     owner "taginfo"
150     group "taginfo"
151     mode 0755
152   end
153
154   directory "#{directory}/data/old" do
155     owner "taginfo"
156     group "taginfo"
157     mode 0755
158   end
159
160   directory "#{directory}/download" do
161     owner "taginfo"
162     group "taginfo"
163     mode 0755
164   end
165
166   directory "#{directory}/sources" do
167     owner "taginfo"
168     group "taginfo"
169     mode 0755
170   end
171
172   directory "#{directory}/planet" do
173     owner "taginfo"
174     group "taginfo"
175     mode 0755
176   end
177
178   remote_file "#{directory}/planet/planet.pbf" do
179     action :create_if_missing
180     source "http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf"
181     owner "taginfo"
182     group "taginfo"
183     mode 0644
184   end
185
186   directory "#{directory}/planet/log" do
187     owner "taginfo"
188     group "taginfo"
189     mode 0755
190   end
191
192   directory "#{directory}/planet/replication" do
193     owner "taginfo"
194     group "taginfo"
195     mode 0755
196   end
197
198   template "#{directory}/planet/replication/configuration.txt" do
199     source "configuration.txt.erb"
200     owner "taginfo"
201     group "taginfo"
202     mode 0644
203   end
204
205   file "#{directory}/planet/replication/download.lock" do
206     owner "taginfo"
207     group "taginfo"
208     mode 0644
209   end
210
211   directory "#{directory}/bin" do
212     owner "taginfo"
213     group "taginfo"
214     mode 0755
215   end
216
217   template "#{directory}/bin/update-planet" do
218     source "update-planet.erb"
219     owner "taginfo"
220     group "taginfo"
221     mode 0755
222     variables :directory => directory
223   end
224
225   template "#{directory}/bin/update-taginfo" do
226     source "update-taginfo.erb"
227     owner "taginfo"
228     group "taginfo"
229     mode 0755
230     variables :directory => directory
231   end
232
233   template "#{directory}/bin/update" do
234     source "update.erb"
235     owner "taginfo"
236     group "taginfo"
237     mode 0755
238     variables :name => name, :directory => directory
239   end
240
241   apache_site name do
242     template "apache.erb"
243     directory "#{directory}/taginfo/web/public"
244   end
245 end