Add tests for planet cookbook
[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 template "/etc/replication/auth.conf" do
131   source "replication.auth.erb"
132   user "root"
133   group "planet"
134   mode 0o640
135   variables :password => db_passwords["planetdiff"]
136 end
137
138 template "/etc/replication/changesets.conf" do
139   source "changesets.conf.erb"
140   user "root"
141   group "planet"
142   mode 0o640
143   variables :password => db_passwords["planetdiff"]
144 end
145
146 template "/etc/replication/users-agreed.conf" do
147   source "users-agreed.conf.erb"
148   user "planet"
149   group "planet"
150   mode 0o600
151   variables :password => db_passwords["planetdiff"]
152 end
153
154 directory "/var/lib/replication" do
155   owner "planet"
156   group "planet"
157   mode 0o755
158 end
159
160 directory "/var/lib/replication/hour" do
161   owner "planet"
162   group "planet"
163   mode 0o755
164 end
165
166 template "/var/lib/replication/hour/configuration.txt" do
167   source "replication.config.erb"
168   owner "planet"
169   group "planet"
170   mode 0o644
171   variables :base => "minute", :interval => 3600
172 end
173
174 link "/var/lib/replication/hour/data" do
175   to "/store/planet/replication/hour"
176 end
177
178 directory "/var/lib/replication/day" do
179   owner "planet"
180   group "planet"
181   mode 0o755
182 end
183
184 template "/var/lib/replication/day/configuration.txt" do
185   source "replication.config.erb"
186   owner "planet"
187   group "planet"
188   mode 0o644
189   variables :base => "hour", :interval => 86400
190 end
191
192 link "/var/lib/replication/day/data" do
193   to "/store/planet/replication/day"
194 end
195
196 if node[:planet][:replication] == "enabled"
197   template "/etc/cron.d/replication" do
198     source "replication.cron.erb"
199     owner "root"
200     group "root"
201     mode 0o644
202   end
203 else
204   file "/etc/cron.d/replication" do
205     action :delete
206   end
207 end
208
209 # directory "/var/lib/replication/streaming" do
210 #   owner "planet"
211 #   group "planet"
212 #   mode 0o755
213 # end
214 #
215 # directory "/var/log/replication" do
216 #   owner "planet"
217 #   group "planet"
218 #   mode 0o755
219 # end
220 #
221 # ["streaming-replicator", "streaming-server"].each do |name|
222 #   template "/etc/init.d/#{name}" do
223 #     source "streaming.init.erb"
224 #     owner "root"
225 #     group "root"
226 #     mode 0o755
227 #     variables :service => name
228 #   end
229 #
230 #   if node[:planet][:replication] == "enabled"
231 #     service name do
232 #       action [:enable, :start]
233 #       supports :restart => true, :status => true
234 #       subscribes :restart, "template[/etc/init.d/#{name}]"
235 #     end
236 #   else
237 #     service name do
238 #       action [:disable, :stop]
239 #       supports :restart => true, :status => true
240 #     end
241 #   end
242 # end