]> git.openstreetmap.org Git - chef.git/blob - cookbooks/taginfo/recipes/default.rb
80a196d06b4b6e8ef73eff8c9db41b2890a564f2
[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   settings["tagstats"]["geodistribution"] = "MmapAnon"
120
121   file "#{directory}/taginfo-config.json" do
122     owner "taginfo"
123     group "taginfo"
124     mode 0644
125     content JSON.pretty_generate(settings)
126   end
127
128   execute "#{directory}/taginfo/tagstats/Makefile" do
129     action :nothing
130     command "make"
131     cwd "#{directory}/taginfo/tagstats"
132     user "taginfo"
133     group "taginfo"
134     subscribes :run, "git[#{directory}/osmium]"
135     subscribes :run, "git[#{directory}/taginfo]"
136     notifies :restart, "service[apache2]"
137   end
138
139   directory "#{directory}/taginfo/web/tmp" do
140     owner "taginfo"
141     group "taginfo"
142     mode 0755
143   end
144
145   directory "#{directory}/data" do
146     owner "taginfo"
147     group "taginfo"
148     mode 0755
149   end
150
151   directory "#{directory}/data/old" do
152     owner "taginfo"
153     group "taginfo"
154     mode 0755
155   end
156
157   directory "#{directory}/download" do
158     owner "taginfo"
159     group "taginfo"
160     mode 0755
161   end
162
163   directory "#{directory}/sources" do
164     owner "taginfo"
165     group "taginfo"
166     mode 0755
167   end
168
169   directory "#{directory}/planet" do
170     owner "taginfo"
171     group "taginfo"
172     mode 0755
173   end
174
175   remote_file "#{directory}/planet/planet.pbf" do
176     action :create_if_missing
177     source "http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf"
178     owner "taginfo"
179     group "taginfo"
180     mode 0644
181   end
182
183   directory "#{directory}/planet/log" do
184     owner "taginfo"
185     group "taginfo"
186     mode 0755
187   end
188
189   directory "#{directory}/planet/replication" do
190     owner "taginfo"
191     group "taginfo"
192     mode 0755
193   end
194
195   template "#{directory}/planet/replication/configuration.txt" do
196     source "configuration.txt.erb"
197     owner "taginfo"
198     group "taginfo"
199     mode 0644
200   end
201
202   file "#{directory}/planet/replication/download.lock" do
203     owner "taginfo"
204     group "taginfo"
205     mode 0644
206   end
207
208   directory "#{directory}/bin" do
209     owner "taginfo"
210     group "taginfo"
211     mode 0755
212   end
213
214   template "#{directory}/bin/update-planet" do
215     source "update-planet.erb"
216     owner "taginfo"
217     group "taginfo"
218     mode 0755
219     variables :directory => directory
220   end
221
222   template "#{directory}/bin/update-taginfo" do
223     source "update-taginfo.erb"
224     owner "taginfo"
225     group "taginfo"
226     mode 0755
227     variables :directory => directory
228   end
229
230   template "#{directory}/bin/update" do
231     source "update.erb"
232     owner "taginfo"
233     group "taginfo"
234     mode 0755
235     variables :name => name, :directory => directory
236   end
237
238   apache_site name do
239     template "apache.erb"
240     directory "#{directory}/taginfo/web/public"
241   end
242 end