1Rex::Config(3) User Contributed Perl Documentation Rex::Config(3)
2
3
4
6 Rex::Config - Handles Rex configuration
7
9 use Rex::Config;
10
11 # set a config option
12 Rex::Config->set_exec_autodie(TRUE);
13
14 # get value of a config option
15 my $user = Rex::Config->get_user();
16
18 This module holds all configuration options for Rex, and also allows
19 you to specify your own ones for your modules.
20
21 Please take a look at Rex::Commands first, which provides convenience
22 wrappers for many of these options.
23
24 While it's possible to use the methods below to set a configuration
25 option directly, their main intended purpose is to be used as internal
26 plumbing, and to provide an escape hatch in case there are no better
27 alternatives.
28
30 set_autodie
31 get_autodie
32 Sets and gets the value of the $autodie configuration variable.
33
34 This controls whether Rex should die() if there's an error while
35 executing file system commands that are supposed to change the
36 contents.
37
38 Default is "undef".
39
40 set_use_net_openssh_if_present
41 get_use_net_openssh_if_present
42 Sets and gets the value of the $use_net_openssh_if_present
43 configuration variable.
44
45 This controls whether Rex should use Net::OpenSSH for connections if
46 that is available.
47
48 Default is "undef".
49
50 set_use_rex_kvm_agent
51 get_use_rex_kvm_agent
52 Sets and gets the value of the $use_rex_kvm_agent configuration
53 variable.
54
55 This controls whether Rex should setup and use a serial device for the
56 experimental Rex KVM agent <https://github.com/RexOps/rex-kvm-agent>
57 for managed VMs.
58
59 Default is "undef".
60
61 set_use_template_ng
62 get_use_template_ng
63 Sets and gets the value of the $use_template_ng configuration variable.
64
65 This controls whether Rex should use Rex::Template::NG to render
66 templates.
67
68 Default is "undef".
69
70 set_set_no_append
71 get_set_no_append
72 Sets and gets the value of the $set_no_append configuration variable.
73
74 This controls whether Rex should overwrite or append values of
75 configuration options when using the set command.
76
77 Default is "undef".
78
79 set_check_service_exists
80 get_check_service_exists
81 Sets and gets the value of the $check_service_exists configuration
82 variable.
83
84 This controls whether Rex should die() early if it is asked to manage a
85 service that doesn't exist.
86
87 Default is "undef".
88
89 set_register_cmdb_template
90 get_register_cmdb_template
91 Sets and gets the value of the $register_cmdb_template configuration
92 variable.
93
94 This controls whether Rex should make CMDB data available to be used in
95 templates as variables.
96
97 Default is "undef".
98
99 set_fallback_auth
100 get_fallback_auth
101 Sets and gets the value of the $fallback_auth configuration variable.
102
103 This can be used to define an array of hash references, each of them
104 containing authentication details to be tried during connection
105 attempts when the directly specified ones fail.
106
107 Default is "undef".
108
109 set_task_call_by_method
110 get_task_call_by_method
111 Sets and gets the value of the $task_call_by_method configuration
112 variable.
113
114 This controls whether calling tasks as a method is allowed or not.
115
116 Default is "undef".
117
118 set_disable_taskname_warning
119 get_disable_taskname_warning
120 Sets and gets the value of the $disable_taskname_warning configuration
121 variable.
122
123 This controls whether Rex should show or suppress the warning message
124 about task names that can not be used as Perl identifiers.
125
126 Default is "undef".
127
128 set_task_chaining_cmdline_args
129 get_task_chaining_cmdline_args
130 Sets and gets the value of the $task_chaining_cmdline_args
131 configuration variable.
132
133 This controls whether Rex should parse task arguments on the command
134 line per task, or should pass all arguments to all tasks.
135
136 Default is "undef".
137
138 set_verbose_run
139 get_verbose_run
140 Sets and gets the value of the $verbose_run configuration variable.
141
142 This controls whether Rex should show verbose output about executed run
143 commands. This means an error message if the command is not found, a
144 warning message if the exit code indicates an error, and an
145 informational message upon success.
146
147 Default is "undef".
148
149 set_exec_autodie
150 get_exec_autodie
151 Sets and gets the value of the $exec_autodie configuration variable.
152
153 This controls whether Rex should die() or not when the exit code of
154 executed run command indicate an error.
155
156 Default is "undef".
157
158 set_no_path_cleanup
159 get_no_path_cleanup
160 Sets and gets the value of the $no_path_cleanup configuration variable.
161
162 This controls whether Rex should use either the default or the
163 explicitly configured "PATH" settings (via path or set_path) when
164 executing commands or not.
165
166 Default is "undef".
167
168 set_source_profile
169 get_source_profile
170 Sets and gets the value of the $source_profile configuration variable.
171
172 This controls whether Rex should source shell-specific profile files
173 before executing commands.
174
175 Default is "undef".
176
177 set_say_format
178 get_say_format
179 Sets and gets the value of the $say_format configuration variable.
180
181 This controls the output format of the built-in "say" command (see also
182 sayformat).
183
184 Default is "undef".
185
186 set_do_reporting
187 get_do_reporting
188 Sets and gets the value of the $do_reporting configuration variable.
189
190 This controls whether Rex should do reporting on executed resources
191 where it is supported. This only affects the data structures returned
192 internally.
193
194 Default is "undef".
195
196 set_report_type
197 get_report_type
198 Sets and gets the value of the $report_type configuration variable,
199 which can also be controlled via the "REX_REPORT_TYPE" environment
200 variable.
201
202 This selects the reporting type (format) Rex should use, e.g. 'YAML'.
203
204 Default is "undef".
205
206 set_sleep_hack
207 get_sleep_hack
208 Sets and gets the value of the $sleep_hack configuration variable.
209
210 This controls whether Rex should use or not an extra 10 ns long sleep
211 after executed commands.
212
213 This might help working around an issue when Rex runs inside a KVM
214 virtualized host and Net::SSH2/libssh2 <https://www.libssh2.org> is
215 used to connect to another VM on the same hardware.
216
217 Default is "undef".
218
219 set_cache_type
220 get_cache_type
221 Sets and gets the value of the $cache_type configuration variable,
222 which can also be controlled via the "REX_CACHE_TYPE" environment
223 variable.
224
225 This selects the cache type Rex should use, e.g. 'YAML'.
226
227 Default is 'Base'.
228
229 set_use_cache
230 get_use_cache
231 Sets and gets the value of the $use_cache configuration variable.
232
233 This controls whether Rex should use caching or not for runtime
234 information like CMDB contents, hardware and operating system
235 information, or the shell type that is being used to execute commands
236 on the managed endpoint.
237
238 Default is "undef".
239
240 set_openssh_opt
241 get_openssh_opt
242 Sets and gets the value of the $openssh_opt configuration variable,
243 which holds a hash of the SSH configuration options used for the
244 connection. See the ssh_config(5) man page
245 <http://man.openbsd.org/OpenBSD-current/man5/ssh_config.5> for the
246 available options.
247
248 Rex::Config->set_openssh_opt( $option => $value, );
249
250 There is a custom option named "initialize_options" specific to Rex,
251 which can be used to pass a hash reference describing the constructor
252 parameters
253 <https://metacpan.org/pod/Net::OpenSSH#Net::OpenSSH->new($host,-%opts)>
254 for the underlying Net::OpenSSH object:
255
256 Rex::Config->set_openssh_opt( initialize_options => { $parameter => $value, } );
257
258 Default is "undef".
259
260 set_sudo_without_locales
261 get_sudo_without_locales
262 Sets and gets the value of the $sudo_without_locales configuration
263 variable.
264
265 This controls whether Rex should execute sudo commands without setting
266 any locales via the "LC_ALL" environment variable.
267
268 Warning: if the locale is something else than "C" or "en_US", then
269 things will break!
270
271 Default is "undef".
272
273 set_sudo_without_sh
274 get_sudo_without_sh
275 Sets and gets the value of the $sudo_without_sh configuration variable.
276
277 This controls whether Rex should run sudo commands without "sh". This
278 might break things.
279
280 Default is "undef".
281
282 set_executor_for
283 get_executor_for
284 Sets and gets the keys and values of the %executor_for configuration
285 variable.
286
287 This sets the executor for a given file type when using the
288 upload_and_run() function of Rex::Helper::Run module.
289
290 Default is:
291
292 (
293 perl => 'perl',
294 python => 'python',
295 ruby => 'ruby',
296 bash => 'bash',
297 )
298
299 set_tmp_dir
300 get_tmp_dir
301 Sets and gets the value of the $tmp_dir configuration variable.
302
303 This controls which directory Rex should use for temporary files.
304
305 Default is determined by the following logic:
306
307 • try to use what "File::Spec->tmpdir" would return on the managed
308 endpoint
309
310 • fall back to '/tmp'
311
312 set_path
313 get_path
314 Sets and gets the value of the $path configuration variable.
315
316 This controls which "PATH" Rex should use when executing commands via
317 the Rex::Commands::Run module.
318
319 The value should be set as an array reference, and will be dereferenced
320 as such before returned by "get_path". The path command is a
321 convenience wrapper for "set_path", and accepts an array.
322
323 Default is
324
325 qw(
326 /bin
327 /sbin
328 /usr/bin
329 /usr/sbin
330 /usr/local/bin
331 /usr/local/sbin
332 /usr/pkg/bin
333 /usr/pkg/sbin
334 )
335
336 set_user
337 get_user
338 Sets and gets the value of the $user configuration variable, which also
339 can be set via the "REX_USER" environment variable.
340
341 This controls which user Rex should use for authentication.
342
343 Default is determined by the following logic:
344
345 • value of "REX_USER" environment variable
346
347 • user set by user command
348
349 • user running Rex
350
351 set_password
352 get_password
353 Sets and gets the value of the $password configuration variable, which
354 also can be set via the "REX_PASSWORD" environment variable.
355
356 This controls what password Rex should use for authentication or as
357 passphrase when using private keys.
358
359 Default is "undef".
360
361 set_port
362 get_port
363 Sets and gets the value of the $port configuration variable.
364
365 This controls which port Rex should connect to.
366
367 "get_port" accepts an optional "server => $server" argument to return
368 the "port" setting for the given $server as optionally set in group
369 files.
370
371 Default is "undef".
372
373 set_sudo_password
374 get_sudo_password
375 Sets and gets the value of the $sudo_password configuration variable,
376 which can also be controlled via the "REX_SUDO_PASSWORD" environment
377 variable.
378
379 This controls what sudo password Rex should use.
380
381 Default is determined by the following logic:
382
383 • value of "REX_SUDO_PASSWORD" environment variable
384
385 • sudo password set by the sudo_password command
386
387 • password set by the password command
388
389 • empty string ('')
390
391 set_source_global_profile
392 get_source_global_profile
393 Sets and gets the value of the $source_global_profile configuration
394 variable.
395
396 This controls whether Rex should source "/etc/profile" before executing
397 commands.
398
399 Default is "undef".
400
401 set_max_connect_fails
402 get_max_connect_fails
403 Sets and gets the value of the $max_connect_fails configuration
404 variable.
405
406 This controls how many times Rex should retry to connect before giving
407 up.
408
409 "get_max_connect_fails" accepts an optional "server => $server"
410 argument to "connectionattempts" setting for the given $server as
411 optionally set in group files.
412
413 Default is "undef".
414
415 set_proxy_command
416 get_proxy_command
417 Sets and gets the value of the $proxy_command configuration variable.
418
419 This controls the SSH ProxyCommand Rex should set for connections when
420 Net::OpenSSH is used.
421
422 "get_proxy_command" accepts an optional "server => $server" argument to
423 return the "proxycommand" setting for the given $server as optionally
424 set in group files.
425
426 Default is "undef".
427
428 set_timeout
429 get_timeout
430 Sets and gets the value of the $timeout configuration variable.
431
432 This controls how many seconds Rex should wait for connections to
433 succeed when using SSH or Rex::Commands::Rsync.
434
435 "get_timeout" accepts an optional "server => $server" argument to
436 return the "connecttimeout" setting for the given $server as optionally
437 set in group files.
438
439 Default is "undef".
440
441 set_password_auth
442 get_password_auth
443 Sets and gets the value of the $password_auth configuration variable,
444 which can also be set by setting the "REX_AUTH_TYPE" environment
445 variable to "pass".
446
447 This controls whether Rex should use the password authentication
448 method.
449
450 Default is "undef".
451
452 set_key_auth
453 get_key_auth
454 Sets and gets the value of the $key_auth configuration variable, which
455 can also be set by setting the "REX_AUTH_TYPE" environment variable to
456 "key".
457
458 This controls whether Rex should use the key authentication method.
459
460 Default is "undef".
461
462 set_krb5_auth
463 get_krb5_auth
464 Sets and gets the value of the $krb5_auth configuration variable, which
465 can also be set by setting the "REX_AUTH_TYPE" environment variable to
466 "krb5".
467
468 This controls whether Rex should use the Kerberos 5 authentication
469 method.
470
471 Default is "undef".
472
473 set_public_key
474 get_public_key
475 Sets and gets the value of the $public_key configuration variable.
476
477 This controls which public key Rex should use when using Net::SSH2 for
478 connections.
479
480 Default is "undef".
481
482 set_private_key
483 get_private_key
484 Sets and gets the value of the $private_key configuration variable.
485
486 This controls which private key Rex should use with
487 Rex::Commands::Rsync or when using Net::SSH2 for connections.
488
489 Default is "undef".
490
491 set_parallelism
492 get_parallelism
493 Sets and gets the value of the $parallelism configuration variable.
494
495 This controls how many hosts Rex should connect to in parallel.
496
497 Default is 1.
498
499 set_log_filename
500 get_log_filename
501 Sets and gets the value of the $log_filename configuration variable.
502
503 This controls which file Rex should use for logging.
504
505 Default is "undef".
506
507 set_log_facility
508 get_log_facility
509 Sets and gets the value of the $log_facility configuration variable.
510
511 This controls which log facility Rex should use when logging to syslog.
512
513 Default is 'local0'.
514
515 set_environment
516 get_environment
517 Sets and gets the value of the $environment configuration variable.
518
519 This controls which environment Rex should use.
520
521 Default is ''.
522
523 set_distributor
524 get_distributor
525 Sets and gets the value of the $distributor configuration variable.
526
527 This controls which method Rex should use for distributing tasks for
528 parallel execution.
529
530 Default is 'Base'.
531
532 set_template_function
533 get_template_function
534 Sets and gets the value of the $template_function configuration
535 variable.
536
537 This controls the function to be used for rendering templates. The
538 value should be a subroutine reference that will be called with passing
539 two scalar references as positional arguments: first is template
540 content, second is template variables.
541
542 Default is determined by the following logic:
543
544 • if Rex::Template::NG is loadable and use_template_ng is true, use
545 that
546
547 • fall back to Rex::Template otherwise
548
549 set_no_tty
550 get_no_tty
551 Sets and gets the value of the $no_tty configuration variable.
552
553 This controls whether Rex should request a terminal when using
554 Net::SSH2 or allocate a pseudo-tty for the remote process when using
555 Net::OpenSSH.
556
557 Default is "undef".
558
559 set_allow_empty_groups
560 get_allow_empty_groups
561 Sets and gets the value of the $allow_empty_groups configuration
562 variable.
563
564 This controls whether Rex should allow empty groups of hosts or not.
565
566 Default is 0.
567
568 set_use_server_auth
569 get_use_server_auth
570 Sets and gets the value of the $use_server_auth configuration variable.
571
572 This controls whether Rex should use server-specific authentication
573 information from group files.
574
575 Default is 0.
576
577 set_waitpid_blocking_sleep_time
578 get_waitpid_blocking_sleep_time
579 Sets and gets the value of the $waitpid_blocking_sleep_time
580 configuration variable.
581
582 This controls how many seconds Rex should sleep between checking forks.
583
584 Default is 0.1.
585
586 set_write_utf8_files
587 get_write_utf8_files
588 Sets and gets the value of the $write_utf8_files configuration
589 variable.
590
591 This controls whether Rex should force "UTF-8" encoding when writing
592 files.
593
594 Default is "undef".
595
596 set_default_auth
597 get_default_auth
598 Sets and gets the value of the $default_auth configuration variable.
599
600 This controls whether Rex should attach default authentication info to
601 tasks.
602
603 Default is 1.
604
605 register_set_handler($handler_name, $code)
606 Register a handler that gets called by set.
607
608 Rex::Config->register_set_handler("foo", sub {
609 my ($value) = @_;
610 print "The user set foo -> $value\n";
611 });
612
613 And now you can use this handler in your Rexfile like this:
614
615 set foo => "bar";
616
617 register_config_handler($topic, $code)
618 With this function it is possible to register own sections in the users
619 config file ("$HOME/.rex/config.yml").
620
621 Example:
622
623 Rex::Config->register_config_handler("foo", sub {
624 my ($param) = @_;
625 print "bar is: " . $param->{bar} . "\n";
626 });
627
628 And now the user can set this in his configuration file:
629
630 base:
631 user: theuser
632 password: thepassw0rd
633 foo:
634 bar: baz
635
636
637
638perl v5.36.1 2023-08-07 Rex::Config(3)