forked from basho-labs/riak-chef-cookbook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
metadata.rb
444 lines (358 loc) · 15.8 KB
/
metadata.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
#
# Author:: Benjamin Black (<b@b3k.us>) and Sean Cribbs (<sean@basho.com>)
# Cookbook Name:: riak
#
# Copyright (c) 2011 Basho Technologies, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
maintainer "Basho Technologies, Inc."
maintainer_email "riak@basho.com"
license "Apache 2.0"
description "Installs and configures Riak distributed data store (v1.0.2)"
version "1.0.2"
recipe "riak", "Installs Riak"
recipe "riak::autoconf", "Automatically configure nodes from chef-server information."
recipe "riak::innostore", "Install and configure the Innostore backend."
recipe "riak::iptables", "Automatically configure iptables rules for Riak."
depends "iptables"
%w{ubuntu debian}.each do |os|
supports os
end
#
# Global Configuration components
#
grouping "riak",
:title => "Riak",
:description => "Riak is a Dynamo-inspired key/value store"
grouping "riak/package", :title => "Riak package options"
attribute "riak/package/type",
:display_name => "Package type",
:description => "Package type for installation (source or binary)",
:default => "binary",
:choice => ["binary", "source"]
attribute "riak/package/version/major",
:display_name => "Riak major version",
:description => "Major version of Riak to install.",
:default => "0"
attribute "riak/package/version/minor",
:display_name => "Riak minor version",
:description => "Minor version of Riak to install.",
:default => "14"
attribute "riak/package/version/incremental",
:display_name => "Riak incremental version",
:description => "Incremental release of Riak to install.",
:default => "1"
attribute "riak/package/version/build",
:display_name => "Riak binary package build version",
:description => "For binary packages, the specific build to use.",
:default => "1"
attribute "riak/package/prefix",
:display_name => "Installation prefix",
:description => "Installation prefix for source installs",
:default => "/usr/local"
attribute "riak/package/source_checksum",
:display_name => "Checksum of the package (source or binary).",
:description => "SHA256 checksum of the package file. Defaults to checksum of Debian/64-bit package."
attribute "riak/package/config_dir",
:display_name => "Riak configuration directory.",
:default => "/etc/riak"
#
# Configuration for the "kernel" OTP app
#
grouping "riak/kernel", :title => "Riak-related Erlang kernel options"
attribute "riak/kernel/limit_port_range",
:display_name => "Limit port range",
:description => "Boolean indicating whether to limit the range of ports used for Erlang node communication.",
:default => "true"
attribute "riak/kernel/inet_dist_listen_min",
:display_name => "Minimum port for Erlang node communication",
:default => "6000"
attribute "riak/kernel/inet_dist_listen_max",
:display_name => "Maximum port for Erlang node communication",
:default => "7999"
#
# Erlang Configuration components
#
grouping "riak/erlang", :title => "Erlang virtual machine configuration"
attribute "riak/erlang/node_name",
:display_name => "Erlang node name",
:description => "The name of the Erlang node",
:default => "riak@127.0.0.1"
attribute "riak/erlang/cookie",
:display_name => "Erlang cookie",
:description => "The cookie of the Erlang node",
:default => "riak"
attribute "riak/erlang/heart",
:display_name => "Enable heart node monitoring",
:default => "false"
attribute "riak/erlang/kernel_polling",
:display_name => "Enable kernel polling",
:default => "true"
attribute "riak/erlang/async_threads",
:display_name => "Async thread pool size",
:description => "Number of threads in the async thread pool",
:default => "64"
grouping "riak/erlang/env_vars", :title => "Additional Erlang environment variables"
attribute "riak/erlang/env_vars/ERL_MAX_PORTS",
:display_name => "The maximum number of ports Erlang can open",
:default => "4096"
attribute "riak/erlang/env_vars/ERL_FULLSWEEP_AFTER",
:display_name => "How often (in reductions) to run a fullsweep in the garbage collector",
:default => "0"
#
# riak-core Configuration components
#
grouping "riak/core", :title => "Riak core", :description => "Riak core system configuration"
attribute "riak/core/cluster_name",
:display_name => "Riak cluster name",
:default => "default"
attribute "riak/core/default_bucket_props",
:display_name => "Default bucket properties"
attribute "riak/core/gossip_interval",
:display_name => "Gossip interval",
:description => "Gossip interval in milliseconds",
:default => "60000"
attribute "riak/core/target_n_val",
:display_name => "Target N",
:default => "4"
attribute "riak/core/ring_state_dir",
:display_name => "Ring state directory",
:description => "The directory on-disk in which to store the ring state (default: data/ring)",
:default => "/var/lib/riak/ring"
attribute "riak/core/ring_creation_size",
:display_name => "Ring creation size",
:description => "The number of partitions into which to divide the hash space (default: 64)",
:default => "64"
attribute "riak/core/http",
:display_name => "HTTP interfaces",
:description => "The IP address / port pairs that Riak's HTTP interface will listen on. default: [[\"127.0.0.1\",8098]]",
:default => "[[\"127.0.0.1\",8098]]"
attribute "riak/core/https",
:display_name => "HTTPS interfaces",
:description => "The IP address / port pairs that Riak's HTTPS (SSL) interface will listen on. default: empty"
attribute "riak/core/vnode_inactivity_timeout",
:display_name => "VNode inactivity timeout",
:description => "How often to check if fallback vnodes should return their data, in milliseconds.",
:default => "60000"
attribute "riak/core/handoff_concurrency",
:display_name => "Handoff concurrency",
:description => "Number of vnodes, per physical node, allowed to perform handoff at once. (default: 4)",
:default => "4"
attribute "riak/core/handoff_port",
:display_name => "Handoff port",
:description => "TCP port number for the handoff listener (default: 8099)",
:default => "8099"
attribute "riak/core/disable_http_nagle",
:display_name => "Disable HTTP Nagle",
:description => "Disable Nagle's algorithm on HTTP sockets",
:default => "false"
#
# riak-kv Configuration components
#
grouping "riak/kv", :title => "Riak key/value",
:description => "Riak key/value system configuration"
attribute "riak/kv/add_paths",
:display_name => "Additional Erlang paths",
:description => "A list of paths to add to the Erlang code path"
attribute "riak/kv/mapred_queue_dir",
:display_name => "MapReduce queue directory",
:description => "Directory used to store a transient queue for pending map tasks. (default: /var/lib/riak/mr_queue)",
:default => "/var/lib/riak/mr_queue"
attribute "riak/kv/mapper_batch_size",
:display_name => "Mapper batch size",
:description => "Number of items the mapper will fetch in one request. Larger values can impact read/write performance for non-MapReduce requests. (default: 5)",
:default => "5"
attribute "riak/kv/map_js_vm_count",
:display_name => "JS VMs for map functions",
:description => "How many Javascript virtual machies are available for map functions. (default: 8)",
:default => "8"
attribute "riak/kv/reduce_js_vm_count",
:display_name => "JS VMs for reduce functions",
:description => "How many Javascript virtual machies are available for reduce functions. (default: 6)",
:default => "6"
attribute "riak/kv/hook_js_vm_count",
:display_name => "JS VMs for hook functions",
:description => "How many Javascript virtual machies are available for pre-commit functions. (default: 2)",
:default => "2"
attribute "riak/kv/js_max_vm_mem",
:default_name => "Maximum JS VM memory",
:description => "the maximum amount of memory, in megabytes, allocated to the Javascript VMs (default: 8)",
:default => "8"
attribute "riak/kv/js_thread_stack",
:default_name => "Maximum JS VM thread stack",
:description => "The maximum amount of thread stack, in megabytes, allocated to the Javascript VMs (default: 16)",
:default => "16"
attribute "riak/kv/js_source_dir",
:default_name => "Javascript source directory",
:description => "Where to load user-defined built in Javascript functions"
attribute "riak/kv/mapred_name",
:display_name => "Map/Reduce base path",
:description => "The base of the path in the URL exposing Riak's Map/Reduce interface",
:default => "mapred"
attribute "riak/kv/raw_name",
:display_name => "HTTP base path",
:description => "The base of the path in the URL exposing Riak's HTTP interface.",
:default => "riak"
attribute "riak/kv/riak_kv_stat",
:display_name => "Statistics reporting",
:description => "Enables the statistics-aggregator if set to true.",
:default => "true"
attribute "riak/kv/stats_urlpath",
:display_name => "Path for HTTP retrieval of statistics",
:default => "stats"
attribute "riak/kv/pb_ip",
:display_name => "Protocol Buffers Client (PBC) address",
:description => "The IP address on which Riak's PBC interface should listen",
:default => "127.0.0.1"
attribute "riak/kv/pb_port",
:display_name => " Protocol Buffers Client (PBC) port",
:description => "The port on which Riak's PBC interface should listen",
:default => "8087"
attribute "riak/kv/storage_backend",
:display_name => "Storage backend",
:description => "The module name of the storage backend that Riak should use.",
:default => "riak_kv_bitcask_backend"
#
# DETS Configuration components
#
# Only applicable if storage_backend is set to "riak_kv_dets_backend"
#
attribute "riak/kv/riak_kv_dets_backend_root",
:display_name => "Data root directory",
:description => "Directory where the data files will be stored.",
:default => "/var/lib/riak/dets"
#
# InnoDB Configuration components
#
# Only applicable if storage_backend is set to "riak_kv_innostore_backend"
#
grouping "riak/innostore", :title => "Innostore (Embedded InnoDB) configuration"
attribute "riak/innostore/version", :title => "Innostore version", :default => "1.0.3"
attribute "riak/innostore/build", :title => "Innostore package build", :default => "1"
attribute "riak/innostore/buffer_pool_size",
:display_name => "Buffer pool size",
:description => "Size of the buffer pool in bytes.",
:default => "2147483648"
attribute "riak/innostore/data_home_dir",
:display_name => "Data home directory",
:description => "Directory where the system files will be created. All database directories will also be created relative to this path. Note: The path must end in a / or \\ depending on the platform.",
:default => "/var/lib/riak/innodb"
attribute "riak/innostore/log_group_home_dir",
:display_name => "Log file path",
:description => "Path to the directory where the log files will be created.",
:default => "/var/lib/riak/innodb"
attribute "riak/innostore/log_buffer_size",
:display_name => "Log buffer size",
:description => "Size of the in-memory log buffer in bytes.",
:default => "8388608"
attribute "riak/innostore/log_files_in_group",
:display_name => "Log files in group",
:default => "8"
attribute "riak/innostore/log_file_size",
:display_name => "Log file size",
:description => "Log file size in bytes.",
:default => "268435456"
attribute "riak/innostore/flush_log_at_trx_commit",
:display_name => "Log flush policy",
:description => "This variable can be set to 0, 1 or 2.\n
0 - Force sync of log contents to disk once every second.\n
1 - Force sync of log contents to disk at transaction commit.\n
2 - Write log contents to disk at transaction commit but do not force sync.\n",
:default => "1"
attribute "riak/innostore/flush_method",
:display_name => "Method for flushing writes to disk",
:description => "Modifies the way Innostore writes to disk",
:default => "O_DIRECT",
:choice => %w[fdatasync O_DSYNC O_DIRECT async_unbuffered]
#
# Bitcask Configuration components
#
# Only applicable if storage_backend is set to "riak_kv_bitcask_backend"
#
grouping "riak/bitcask", :title => "Bitcask log-structured storage engine configuration"
attribute "riak/bitcask/data_root",
:display_name => "Data root directory",
:description => "Directory where the data files will be stored.",
:default => "/var/lib/riak/bitcask"
attribute "riak/bitcask/max_file_size",
:display_name => "Maximum file size",
:description => "Maximum size for a single Bitcask cask file.",
:default => "2147483648"
# * none - let the O/S decide
# * o_sync - use the O_SYNC flag to sync each write
# * {seconds, N} - call bitcask:sync/1 every N seconds
attribute "riak/bitcask/sync_strategy",
:display_name => "Sync strategy",
:description => "Sync strategy is one of: :none (let the OS decide), :o_sync, or {:seconds => N} (which requires application support)",
:default => "none"
# Merge trigger variables. Files exceeding ANY of these
# values will cause bitcask:needs_merge/1 to return true.
attribute "riak/bitcask/frag_merge_trigger",
:display_name => "Fragment merge trigger",
:default => "60"
attribute "riak/bitcask/dead_bytes_merge_trigger",
:display_name => "Dead bytes merge trigger",
:default => "536870912"
# Merge thresholds. Files exceeding ANY of these values
# will be included in the list of files marked for merging
# by bitcask:needs_merge/1.
attribute "riak/bitcask/frag_threshold",
:display_name => "Fragment threshold",
:default => "40"
attribute "riak/bitcask/dead_bytes_threshold",
:display_name => "Dead bytes threshold",
:default => "134217728"
attribute "riak/bitcask/small_file_threshold",
:display_name => "Small file threshold",
:default => "10485760"
attribute "riak/bitcask/expiry_secs",
:display_name => "Data expiration threshold, in seconds",
:description => "Data expiration can be caused by setting this to a positive value. If set, items older than the value will be discarded.",
:default => "-1"
#
# Error reporting components
#
grouping "riak/err", :title => "Riak error reporting configuration"
attribute "riak/err/term_max_size",
:display_name => "Maximum error term size.",
:description => "Info/error/warning reports larger than this will be considered too big to be formatted safely with the user-supplied format string.",
:default => "65536"
attribute "riak/err/fmt_max_bytes",
:display_name => "Maximum total size of info/error/warning reports.",
:description => "Limit the total size of formatted info/error/warning reports.",
:default => "65536"
#
# Luwak component
#
grouping "riak/luwak", :title => "Luwak large-object interface configuration"
attribute "riak/luwak/enabled", :display_name => "Enable luwak", :default => "false"
#
# SASL (system diagnostics component)
#
grouping "riak/sasl", :title => "Erlang sasl configuration"
attribute "riak/sasl/sasl_error_logger/file",
:display_name => "File that Riak will log errors to.",
:default => "/var/log/riak/sasl-error.log"
attribute "riak/sasl/errlog_type",
:display_name => "Types of errors logged by sasl.",
:default => "error"
attribute "riak/sasl/error_logger_mf_dir",
:display_name => "Directory where structured sasl reports are stored.",
:default => "/var/log/riak/sasl"
attribute "riak/sasl/error_logger_mf_maxbytes",
:display_name => "Maximum size of any sasl db file.",
:default => "10485760"
attribute "riak/sasl/error_logger_mf_maxfiles",
:display_name => "Maximum number of sasl db files.",
:default => "5"