Everyone knows the pain if something gets deprecated and one has to port his old (and stable) code to a
new version of a library or a framework. There is enough work to do instead of fixing code to work with
newer versions of them.
So there is one promise new versions of Rex has to fulfill. They must be backward compatible.
I know this might be impossible in one way or another, but to minimize this danger there is a thing
called feature flags. If there is the need to break backward compatibility in favor of a new feature
there will be a feature flag for this change. And only if this feature flag gets enabled in the Rexfile
it will break compatibility.
So the default is always to remain compatible.
If you have a problem that occurs after an update, it is considered as a bug. Please report this bug in
our issue tracker.
Also see the backwards compatibility
<https://metacpan.org/release/Rex/source/CONTRIBUTING.md#backwardscompatibility> section of the
CONTRIBUTING guide.
Howtoenablefeatureflags
You can enable feature flags in your Rexfile with the following code:
use Rex -feature => ['1.4'];
or even multiple ones like this:
use Rex -feature => [qw(1.4 exec_autodie)];
Listoffeatureflags
1.4 Enable per-task argument parsing (task_chaining_cmdline_args). Furthermore, all features from earlier
versions are activated. Available since version 1.4.
no_task_chaining_cmdline_args
Disable per-task argument parsing. Available since version 1.4.
task_chaining_cmdline_args
Enable per-task argument parsing: "rex --rex --args task1 --task1arg=value task2 --task2arg" so task1
only gets "task1arg" and task2 only gets "task2arg". Available since version 1.4.
1.3 Activating the new template engine by default. Furthermore, all features from earlier versions are
activated. Available since version 1.3.
no_template_ng
Disabling the new template engine. Available since version 1.3.
1.0 Disabling usage of a tty. This increases compatibility for remote execution. Furthermore, all
features from earlier versions are activated. Available since version 1.0.
no_autodie
Will disable autodie feature. Available since version 1.0.
tty Enable pty usage for ssh connections. Available since version 1.0.
template_ng
Enabling the new template engine (better error reporting, etc.). Available since version 0.56.
0.56
Will activate autodie feature. Furthermore, all features from earlier versions are activated.
Available since version 0.56.
autodie
Will enable autodie feature: die on all failed filesystem commands
<https://metacpan.org/pod/Rex::Commands::Fs>. Available since version 1.13.1.
0.55
Will activate using Net::OpenSSH by default if present. Furthermore, all features from earlier
versions are activated. Available since version 0.55.
0.54
Will activate checking services for existence before trying to manipulate them, and set() will
overwrite already existing values (instead of concatenating). Furthermore, all features from earlier
versions are activated. Available since version 0.54.
0.53
Will activate register_cmdb_top_scope. And all things 0.51 and down activated. Available since
version 0.53.
register_cmdb_top_scope
Will register all cmdb top scope variables automatically in the templates. Available since version
0.53.
0.51
Will load Rex::Constants and the CMDB by default. And all things 0.47 and down activated. Available
since version 0.51.
disable_taskname_warning
Disable warning about invalid task names (they should match "/^[a-zA-Z_][a-zA-Z0-9_]*$/"). Available
since version 0.47.
verbose_run
Explicitly output "Successfully executed" or "Error executing" messages for run() commands. Available
since version 0.47.
no_cache
Disable caching (like discovery results of remote OS, hardware, shell, etc.). Available since version
0.46.
no_path_cleanup
Controls whether Rex should use the default or explicitly configured "PATH" settings when executing
commands or not. See also the path command and the set_path configuration option. Available since
version 0.44.
source_profile
Source "$HOME/.profile" before running a command. Available since version 0.44.
source_global_profile
Source "/etc/profile" before running a command. Available since version 0.44.
exec_autodie
If you execute a command with run() Rex will die() if the command returns a "RETVAL != 0". Available
since version 0.44.
exec_and_sleep
Sometimes some commands that fork away didn't keep running. With this flag rex will wait a few ms
before exiting the shell. Available since version 0.43.
disable_strict_host_key_checking
Disabling strict host key checking for openssh connection mode. Available since version 0.43.
reporting
Enable reporting. Available since version 0.43.
empty_groups
Enable usage of empty groups. Available since version 0.42.
use_server_auth
Enable the usage of special authentication options for servers. Available since version 0.42.
no_tty
Disable pty usage for ssh connections. Available since version 0.41.
no_local_template_vars
Use global variables in templates. Available since version 0.40.
sudo_without_sh
Run sudo commands directly without the use of 'sh'. This might break things. Available since version
0.40.
sudo_without_locales
Run sudo commands without locales. This will break things if you don't use English locales. Available
since version 0.40.
exit_status
This option tells Rex to return a non zero value on exit if a task fails. Available since version
0.39.
0.35
This option enables the features of 0.31 and the possibility to call tasks as a functions without the
need to use a hash reference for the parameters. Available since version 0.35.
0.31
To enable special authentication options for a server group. This will overwrite the default
authentication options for a task. Available since version 0.31.