]> git.openstreetmap.org Git - chef.git/blob - cookbooks/stateofthemap/recipes/default.rb
37217d919d14215c56f3161b6a4c5dade980521f
[chef.git] / cookbooks / stateofthemap / recipes / default.rb
1 #
2 # Cookbook:: stateofthemap
3 # Recipe:: default
4 #
5 # Copyright:: 2013, 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 #     https://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 include_recipe "wordpress"
21
22 passwords = data_bag_item("stateofthemap", "passwords")
23
24 git "/srv/stateofthemap.org" do
25   action :sync
26   repository "https://git.openstreetmap.org/public/stateofthemap.git"
27   revision "chooser"
28   depth 1
29   user "root"
30   group "root"
31 end
32
33 ssl_certificate "stateofthemap.org" do
34   domains ["stateofthemap.org", "www.stateofthemap.org",
35            "stateofthemap.com", "www.stateofthemap.com",
36            "sotm.org", "www.sotm.org"]
37   notifies :reload, "service[apache2]"
38 end
39
40 apache_site "stateofthemap.org" do
41   template "apache.erb"
42   directory "/srv/stateofthemap.org"
43 end
44
45 directory "/srv/2007.stateofthemap.org" do
46   owner "wordpress"
47   group "wordpress"
48   mode "755"
49 end
50
51 wordpress_site "2007.stateofthemap.org" do
52   aliases "2007.stateofthemap.com"
53   directory "/srv/2007.stateofthemap.org/wp"
54   database_name "sotm2007"
55   database_user "sotm2007"
56   database_password passwords["sotm2007"]
57   database_prefix "wp_sotm_"
58   fpm_prometheus_port 12007
59 end
60
61 wordpress_theme "2007.stateofthemap.org-refreshwp-11" do
62   theme "refreshwp-11"
63   site "2007.stateofthemap.org"
64   repository "https://git.openstreetmap.org/public/stateofthemap.git"
65   revision "theme-2007"
66 end
67
68 # wordpress_plugin "2007.stateofthemap.org-geopress" do
69 #   plugin "geopress"
70 #   site "2007.stateofthemap.org"
71 # end
72
73 directory "/srv/2008.stateofthemap.org" do
74   owner "wordpress"
75   group "wordpress"
76   mode "755"
77 end
78
79 wordpress_site "2008.stateofthemap.org" do
80   aliases "2008.stateofthemap.com"
81   directory "/srv/2008.stateofthemap.org/wp"
82   database_name "sotm2008"
83   database_user "sotm2008"
84   database_password passwords["sotm2008"]
85   database_prefix "wp_sotm08_"
86   fpm_prometheus_port 12008
87 end
88
89 wordpress_theme "2008.stateofthemap.org-refreshwp-11" do
90   theme "refreshwp-11"
91   site "2008.stateofthemap.org"
92   repository "https://git.openstreetmap.org/public/stateofthemap.git"
93   revision "theme-2008"
94 end
95
96 # wordpress_plugin "2008.stateofthemap.org-geopress" do
97 #   plugin "geopress"
98 #   site "2008.stateofthemap.org"
99 # end
100
101 directory "/srv/2009.stateofthemap.org" do
102   owner "wordpress"
103   group "wordpress"
104   mode "755"
105 end
106
107 git "/srv/2009.stateofthemap.org" do
108   action :sync
109   repository "https://git.openstreetmap.org/public/stateofthemap.git"
110   revision "resources-2009"
111   depth 1
112   user "wordpress"
113   group "wordpress"
114 end
115
116 wordpress_site "2009.stateofthemap.org" do
117   aliases "2009.stateofthemap.com"
118   directory "/srv/2009.stateofthemap.org/wp"
119   database_name "sotm2009"
120   database_user "sotm2009"
121   database_password passwords["sotm2009"]
122   urls "/register" => "/srv/2009.stateofthemap.org/register",
123        "/register-pro-user" => "/srv/2009.stateofthemap.org/register-pro-user",
124        "/podcasts" => "/srv/2009.stateofthemap.org/podcasts"
125   fpm_prometheus_port 12009
126 end
127
128 wordpress_theme "2009.stateofthemap.org-aerodrome" do
129   theme "aerodrome"
130   site "2009.stateofthemap.org"
131   repository "https://git.openstreetmap.org/public/stateofthemap.git"
132   revision "theme-2009"
133 end
134
135 # wordpress_plugin "2009.stateofthemap.org-wp-sticky" do
136 #   plugin "wp-sticky"
137 #   site "2009.stateofthemap.org"
138 # end
139
140 directory "/srv/2010.stateofthemap.org" do
141   owner "wordpress"
142   group "wordpress"
143   mode "755"
144 end
145
146 git "/srv/2010.stateofthemap.org" do
147   action :sync
148   repository "https://git.openstreetmap.org/public/stateofthemap.git"
149   revision "resources-2010"
150   depth 1
151   user "wordpress"
152   group "wordpress"
153 end
154
155 wordpress_site "2010.stateofthemap.org" do
156   aliases "2010.stateofthemap.com"
157   directory "/srv/2010.stateofthemap.org/wp"
158   database_name "sotm2010"
159   database_user "sotm2010"
160   database_password passwords["sotm2010"]
161   urls "/register" => "/srv/2010.stateofthemap.org/register"
162   fpm_prometheus_port 12010
163 end
164
165 wordpress_theme "2010.stateofthemap.org-aerodrome" do
166   theme "aerodrome"
167   site "2010.stateofthemap.org"
168   repository "https://git.openstreetmap.org/public/stateofthemap.git"
169   revision "theme-2010"
170 end
171
172 wordpress_plugin "2010.stateofthemap.org-sitepress-multilingual-cms" do
173   plugin "sitepress-multilingual-cms"
174   site "2010.stateofthemap.org"
175   repository "https://git.openstreetmap.org/private/sitepress-multilingual-cms.git"
176   revision "master"
177   not_if { kitchen? }
178 end
179
180 # wordpress_plugin "2010.stateofthemap.org-wp-sticky" do
181 #   plugin "wp-sticky"
182 #   site "2010.stateofthemap.org"
183 # end
184
185 directory "/srv/2011.stateofthemap.org" do
186   owner "wordpress"
187   group "wordpress"
188   mode "755"
189 end
190
191 git "/srv/2011.stateofthemap.org" do
192   action :sync
193   repository "https://git.openstreetmap.org/public/stateofthemap.git"
194   revision "resources-2011"
195   depth 1
196   user "wordpress"
197   group "wordpress"
198 end
199
200 wordpress_site "2011.stateofthemap.org" do
201   aliases "2011.stateofthemap.com"
202   directory "/srv/2011.stateofthemap.org/wp"
203   database_name "sotm2011"
204   database_user "sotm2011"
205   database_password passwords["sotm2011"]
206   urls "/register" => "/srv/2011.stateofthemap.org/register"
207   fpm_prometheus_port 12011
208 end
209
210 wordpress_theme "2011.stateofthemap.org-aerodrome" do
211   theme "aerodrome"
212   site "2011.stateofthemap.org"
213   repository "https://git.openstreetmap.org/public/stateofthemap.git"
214   revision "theme-2011"
215 end
216
217 wordpress_plugin "2011.stateofthemap.org-sitepress-multilingual-cms" do
218   plugin "sitepress-multilingual-cms"
219   site "2011.stateofthemap.org"
220   repository "https://git.openstreetmap.org/private/sitepress-multilingual-cms.git"
221   revision "master"
222   not_if { kitchen? }
223 end
224
225 # wordpress_plugin "2011.stateofthemap.org-wp-sticky" do
226 #   plugin "wp-sticky"
227 #   site "2011.stateofthemap.org"
228 # end
229
230 directory "/srv/2012.stateofthemap.org" do
231   owner "wordpress"
232   group "wordpress"
233   mode "755"
234 end
235
236 git "/srv/2012.stateofthemap.org" do
237   action :sync
238   repository "https://git.openstreetmap.org/public/stateofthemap.git"
239   revision "resources-2012"
240   depth 1
241   user "wordpress"
242   group "wordpress"
243 end
244
245 wordpress_site "2012.stateofthemap.org" do
246   aliases "2012.stateofthemap.com"
247   directory "/srv/2012.stateofthemap.org/wp"
248   database_name "sotm2012"
249   database_user "sotm2012"
250   database_password passwords["sotm2012"]
251   urls "/register" => "/srv/2012.stateofthemap.org/register"
252   fpm_prometheus_port 12012
253 end
254
255 wordpress_theme "2012.stateofthemap.org-aerodrome" do
256   theme "aerodrome"
257   site "2012.stateofthemap.org"
258   repository "https://git.openstreetmap.org/public/stateofthemap.git"
259   revision "theme-2012"
260 end
261
262 wordpress_plugin "2012.stateofthemap.org-leaflet-maps-marker" do
263   plugin "leaflet-maps-marker"
264   site "2012.stateofthemap.org"
265 end
266
267 wordpress_plugin "2012.stateofthemap.org-sitepress-multilingual-cms" do
268   plugin "sitepress-multilingual-cms"
269   site "2012.stateofthemap.org"
270   repository "https://git.openstreetmap.org/private/sitepress-multilingual-cms.git"
271   revision "master"
272   not_if { kitchen? }
273 end
274
275 # wordpress_plugin "2012.stateofthemap.org-wp-sticky" do
276 #   plugin "wp-sticky"
277 #   site "2012.stateofthemap.org"
278 # end
279
280 %w[2013].each do |year|
281   git "/srv/#{year}.stateofthemap.org" do
282     action :sync
283     repository "https://git.openstreetmap.org/public/stateofthemap.git"
284     revision "site-#{year}"
285     depth 1
286     user "root"
287     group "root"
288   end
289
290   ssl_certificate "#{year}.stateofthemap.org" do
291     domains ["#{year}.stateofthemap.org", "#{year}.stateofthemap.com", "#{year}.sotm.org"]
292     notifies :reload, "service[apache2]"
293   end
294
295   apache_site "#{year}.stateofthemap.org" do
296     template "apache.static.erb"
297     directory "/srv/#{year}.stateofthemap.org"
298     variables :year => year
299   end
300 end
301
302 package %w[
303   gcc
304   g++
305   make
306   ruby
307   ruby-dev
308   libssl-dev
309   zlib1g-dev
310   pkg-config
311 ]
312
313 apache_module "expires"
314 apache_module "rewrite"
315
316 gem_package "bundler" do
317   version "1.17.3"
318 end
319
320 gem_package "bundler" do
321   version "2.1.4"
322 end
323
324 %w[2016 2017 2018 2019 2020 2021 2022].each do |year|
325   git "/srv/#{year}.stateofthemap.org" do
326     action :sync
327     repository "https://github.com/openstreetmap/stateofthemap-#{year}.git"
328     depth 1
329     user "root"
330     group "root"
331     notifies :run, "execute[/srv/#{year}.stateofthemap.org/Gemfile]"
332   end
333
334   directory "/srv/#{year}.stateofthemap.org/_site" do
335     mode "755"
336     owner "nobody"
337     group "nogroup"
338   end
339
340   # Workaround https://github.com/jekyll/jekyll/issues/7804
341   # by creating a .jekyll-cache folder
342   directory "/srv/#{year}.stateofthemap.org/.jekyll-cache" do
343     mode "755"
344     owner "nobody"
345     group "nogroup"
346   end
347
348   execute "/srv/#{year}.stateofthemap.org/Gemfile" do
349     action :nothing
350     command "bundle install --deployment --jobs #{node[:cpu][:total]}"
351     cwd "/srv/#{year}.stateofthemap.org"
352     user "root"
353     group "root"
354     notifies :run, "execute[/srv/#{year}.stateofthemap.org]"
355     only_if { ::File.exist?("/srv/#{year}.stateofthemap.org/Gemfile") }
356   end
357
358   execute "/srv/#{year}.stateofthemap.org" do
359     action :nothing
360     command "bundle exec jekyll build --trace --baseurl=https://#{year}.stateofthemap.org"
361     cwd "/srv/#{year}.stateofthemap.org"
362     user "nobody"
363     group "nogroup"
364     environment "LANG" => "C.UTF-8"
365   end
366
367   ssl_certificate "#{year}.stateofthemap.org" do
368     domains ["#{year}.stateofthemap.org", "#{year}.stateofthemap.com", "#{year}.sotm.org"]
369     notifies :reload, "service[apache2]"
370   end
371
372   apache_site "#{year}.stateofthemap.org" do
373     template "apache.jekyll.erb"
374     directory "/srv/#{year}.stateofthemap.org/_site"
375     variables :year => year
376   end
377 end
378
379 template "/etc/cron.daily/sotm-backup" do
380   source "backup.cron.erb"
381   owner "root"
382   group "root"
383   mode "750"
384   variables :passwords => passwords
385 end