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