Provided by: rex_1.14.3-1_all bug

NAME

       rex - execute tasks defined in a Rexfile

DESCRIPTION

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

SYNOPSIS

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

USAGE

        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

Rexfile

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

   Configuration
       See all the available commands in Rex::Commands.

       Simple authentication

        user 'bruce';
        password 'batman';
        pass_auth;

       Key authentication

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

       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', 'frontend[03..09]';

       Groups can also be defined in separate files, like "server.ini":

        # server.ini
        [frontends]
        frontend[01..04]

        # Rexfile
        use Rex::Group::Lookup::INI;
        groups_file 'file.ini'

       See Rex::Group::Lookup::INI for more details, and check the "Rex::Group::Lookup" namespace
       for other formats.

   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';
        };

       By default it will be targeted at the same host where `rex` is being executed.

       You can also set a default server as the task's target:

        desc 'This is a long description of a task';
        task 'shortname',
          'frontend01',
          sub {
            say run 'uptime';
          };

       or even a default server group:

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

       The task options from the command line will be passed to the task as well:

        # Rexfile
        desc 'Get task options';
        task 'get_task_options', sub {
          my $task_options = shift;
          my $option1 = $task_options->{option1};
        };

        # command line
        rex get_task_options --option1=yes

TAB COMPLETION

       Tab completion scripts are provided for Bash and Zsh in the share
       <https://metacpan.org/release/Rex/source/share> directory. They provide completions for
       the available CLI options, hosts, groups, environments and tasks.