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