8e309246a0ddb69318c488916f931e485bbce77e
[chef.git] / cookbooks / planet / recipes / replication.rb
1 #
2 # Cookbook Name:: planet
3 # Recipe:: dump
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 "osmosis"
21
22 db_passwords = data_bag_item("db", "passwords")
23
24 package "postgresql-client"
25
26 package "ruby"
27 package "ruby-dev"
28 package "ruby-libxml"
29
30 package "libpq-dev"
31 gem_package "pg"
32
33 package "make"
34 package "gcc"
35
36 remote_directory "/opt/flush" do
37   source "flush"
38   owner "root"
39   group "root"
40   mode 0o755
41   files_owner "root"
42   files_group "root"
43   files_mode 0o755
44 end
45
46 execute "/opt/flush/Makefile" do
47   action :nothing
48   command "make"
49   cwd "/opt/flush"
50   user "root"
51   group "root"
52   subscribes :run, "remote_directory[/opt/flush]"
53 end
54
55 remote_directory "/usr/local/bin" do
56   source "replication-bin"
57   owner "root"
58   group "root"
59   mode 0o755
60   files_owner "root"
61   files_group "root"
62   files_mode 0o755
63 end
64
65 template "/usr/local/bin/users-agreed" do
66   source "users-agreed.erb"
67   owner "root"
68   group "root"
69   mode 0o755
70 end
71
72 template "/usr/local/bin/users-deleted" do
73   source "users-deleted.erb"
74   owner "root"
75   group "root"
76   mode 0o755
77 end
78
79 remote_directory "/store/planet/users_deleted" do
80   source "users_deleted"
81   owner "planet"
82   group "planet"
83   mode 0o755
84   files_owner "root"
85   files_group "root"
86   files_mode 0o644
87 end
88
89 remote_directory "/store/planet/replication" do
90   source "replication-cgi"
91   owner "root"
92   group "root"
93   mode 0o755
94   files_owner "root"
95   files_group "root"
96   files_mode 0o755
97 end
98
99 directory "/store/planet/replication/changesets" do
100   owner "planet"
101   group "planet"
102   mode 0o755
103 end
104
105 directory "/store/planet/replication/day" do
106   owner "planet"
107   group "planet"
108   mode 0o755
109 end
110
111 directory "/store/planet/replication/hour" do
112   owner "planet"
113   group "planet"
114   mode 0o755
115 end
116
117 directory "/store/planet/replication/minute" do
118   owner "planet"
119   group "planet"
120   mode 0o755
121 end
122
123 directory "/etc/replication" do
124   owner "root"
125   group "root"
126   mode 0o755
127 end
128
129 template "/etc/replication/auth.conf" do
130   source "replication.auth.erb"
131   user "root"
132   group "planet"
133   mode 0o640
134   variables :password => db_passwords["planetdiff"]
135 end
136
137 template "/etc/replication/changesets.conf" do
138   source "changesets.conf.erb"
139   user "root"
140   group "planet"
141   mode 0o640
142   variables :password => db_passwords["planetdiff"]
143 end
144
145 template "/etc/replication/users-agreed.conf" do
146   source "users-agreed.conf.erb"
147   user "planet"
148   group "planet"
149   mode 0o600
150   variables :password => db_passwords["planetdiff"]
151 end
152
153 directory "/var/lib/replication" do
154   owner "planet"
155   group "planet"
156   mode 0o755
157 end
158
159 directory "/var/lib/replication/hour" do
160   owner "planet"
161   group "planet"
162   mode 0o755
163 end
164
165 template "/var/lib/replication/hour/configuration.txt" do
166   source "replication.config.erb"
167   owner "planet"
168   group "planet"
169   mode 0o644
170   variables :base => "minute", :interval => 3600
171 end
172
173 link "/var/lib/replication/hour/data" do
174   to "/store/planet/replication/hour"
175 end
176
177 directory "/var/lib/replication/day" do
178   owner "planet"
179   group "planet"
180   mode 0o755
181 end
182
183 template "/var/lib/replication/day/configuration.txt" do
184   source "replication.config.erb"
185   owner "planet"
186   group "planet"
187   mode 0o644
188   variables :base => "hour", :interval => 86400
189 end
190
191 link "/var/lib/replication/day/data" do
192   to "/store/planet/replication/day"
193 end
194
195 if node[:planet][:replication] == "enabled"
196   template "/etc/cron.d/replication" do
197     source "replication.cron.erb"
198     owner "root"
199     group "root"
200     mode 0o644
201   end
202 else
203   file "/etc/cron.d/replication" do
204     action :delete
205   end
206 end
207
208 # directory "/var/lib/replication/streaming" do
209 #   owner "planet"
210 #   group "planet"
211 #   mode 0o755
212 # end
213 #
214 # directory "/var/log/replication" do
215 #   owner "planet"
216 #   group "planet"
217 #   mode 0o755
218 # end
219 #
220 # ["streaming-replicator", "streaming-server"].each do |name|
221 #   template "/etc/init.d/#{name}" do
222 #     source "streaming.init.erb"
223 #     owner "root"
224 #     group "root"
225 #     mode 0o755
226 #     variables :service => name
227 #   end
228 #
229 #   if node[:planet][:replication] == "enabled"
230 #     service name do
231 #       action [:enable, :start]
232 #       supports :restart => true, :status => true
233 #       subscribes :restart, "template[/etc/init.d/#{name}]"
234 #     end
235 #   else
236 #     service name do
237 #       action [:disable, :stop]
238 #       supports :restart => true, :status => true
239 #     end
240 #   end
241 # end