Rex - the friendly automation framework
Rex is an automation framework that is friendly to any combinations of local and
remote execution, push and pull style of management, or imperative and
declarative approach.
Its flexibility makes it a great fit for many different use cases,
but most commonly Rex is used to automate application deployment and data
center infrastructure management tasks.
See Rex::Commands for a starting point of available built-in
commands.
See rex <https://metacpan.org/pod/distribution/Rex/bin/rex>
for more information about how to use rex on the command line.
# In a Rexfile:
use Rex -feature => [qw/1.4/];
user "root";
password "ch4ngem3";
desc "Show system information";
task "sysinfo", sub {
say run "uname -a";
};
1;
# On the command line:
$ rex -H server[01..10] sysinfo
This function is deprecated since 0.28! See Rex::Commands::connection.
Returns the current connection as a hashRef.
- server
- The server name
- ssh
- 1 if it is a ssh connection, 0 if not.
Returns 1 if the current connection is a ssh connection. 0 if not.
Returns 1 if the current connection is local. Otherwise 0.
Returns 1 if the current operation is executed within sudo.
Returns the sftp object for the current ssh connection.
Use this function to create a connection if you use Rex as a library.
use Rex;
use Rex::Commands::Run;
use Rex::Commands::Fs;
Rex::connect(
server => "remotehost",
user => "root",
password => "f00b4r",
private_key => "/path/to/private/key/file",
public_key => "/path/to/public/key/file",
);
if(is_file("/foo/bar")) {
print "Do something...\n";
}
my $output = run("uptime");
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.
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)];
- 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
- Rex cleans the path before executing a command. With this feature Rex
doesn't cleanup the path. 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.
Many thanks to the contributors for their work. Please see CONTRIBUTORS
<https://metacpan.org/release/Rex/source/CONTRIBUTORS> file for a
complete list.
Rex is a free software, licensed under: The Apache License, Version 2.0, January
2004