Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
REX(1)		      User Contributed Perl Documentation		REX(1)

       rex - execute tasks defined in a	Rexfile

       The "rex" script	can be used to execute tasks defined in	a Rexfile from
       the command line.

	   bash# rex -h			     # Show usage
	   bash# rex -T			     # List tasks
	   bash# rex uname		     # Run the 'uname' task
	   bash# rex -H	server[01..10] uname # Run the 'uname' task on all the specified hosts
	   bash# rex -G	production uname     # Run 'uname' on hosts on the 'production'	hostgroup
	   bash# rex deploy --gracefully     # Pass '--gracefully' to the 'deploy' task

	   rex [<options>] [-H <host>] [-G <group>] <task> [<task-options>]
	   rex -T[m|y|v] [<string>]

	   -b	  Run batch
	   -e	  Run the given	code fragment
	   -E	  Execute a task on the	given environment
	   -G|-g  Execute a task on the	given server groups
	   -H	  Execute a task on the	given hosts (space delimited)
	   -z	  Execute a task on hosts from this command's output

	   -K	  Public key file for the ssh connection
	   -P	  Private key file for the ssh connection
	   -p	  Password for the ssh connection
	   -u	  Username for the ssh connection

	   -d	  Show debug output
	   -ddd	  Show more debug output (includes profiling output)
	   -m	  Monochrome output: no	colors
	   -o	  Output format
	   -q	  Quiet	mode: no log output
	   -qw	  Quiet	mode: only output warnings and errors
	   -Q	  Really quiet:	output nothing

	   -T	  List tasks
	   -Ta	  List all tasks, including hidden
	   -Tm	  List tasks in	machine-readable format
	   -Tv	  List tasks verbosely
	   -Ty	  List tasks in	YAML format

	   -c	  Turn cache ON
	   -C	  Turn cache OFF
	   -f	  Use this file	instead	of Rexfile
	   -F	  Force: disregard lock	file
	   -h	  Display this help message
	   -M	  Load this module instead of Rexfile
	   -O	  Pass additional options, like	CMDB path
	   -s	  Use sudo for every command
	   -S	  Password for sudo
	   -t	  Number of threads to use (aka	'parallelism' param)
	   -v	  Display (R)?ex version

       When you	run "rex" it reads the file "Rexfile" in the current working
       directory. A Rexfile consists of	2 major	parts: Configuration and Task

       Simple Authentication

	   user	"bruce";
	   password "batman";

       Key Authentication

	   private_key "/path/to/your/private/key.file";
	   public_key "/path/to/your/public/key.file";

       Define Logging

	   logging to_file => "rex.log";
	   logging to_syslog =>	"local0";

       Group your servers

       Rex gives you the ability to define groups of servers. Groups can be
       defined the Rexfile:

	   group "frontends" =>	"frontend01", "frontend02", "frontend03", "frontend04",	"frontend[05..09]";

       Groups can also be defined in a server.ini file:


   Other Configuration
	   timeout 10;	  # ssh	timeout
	   parallelism 2; # execute tasks in parallel

   Defining tasks
       A basic task looks like this:

	   # task description
	   desc	"This task tells you how long since the	server was rebooted";

	   # task definition
	   task	"shortname", sub {
	       say run "uptime";

       You can also set	a default server group:

	   desc	"This is a long	description of a task";
	   task	"shortname", group => "frontends", sub {
	       say run "uptime";

       Tab completion scripts are provided for Bash and	Zsh in the share
       <> directory. They provide
       completions for the available CLI options, hosts, groups, environments
       and tasks.

perl v5.32.0			  2020-08-05				REX(1)


Want to link to this manual page? Use this URL:

home | help