NAME
rset
—
remote staging and execution
tool
SYNOPSIS
rset |
[-AenRtv ] [-E
environment] [-F
sshconfig_file] [-f
routes_file] [-x
label_pattern] hostname
... |
rset |
[-ev ] [-E
environment] [-F
sshconfig_file] [-f
routes_file] [-x
label_pattern] -o
log_directory -p
workers hostname ... |
DESCRIPTION
rset
evaluates script fragments written in
Progressive Label Notation
(pln(5)), executing each script in sequence using ssh connection
multiplexing. rset
accepts one or more hostnames
which match the labels in routes_file.
The arguments are as follows:
-A
- Download files listed in label export paths to the local _archive directory in the format ‘hostname:basename(filename)’. Absolute paths are permitted, or paths relative to the staging directory.
-e
- Exit immediately if any label returns non-zero exit status.
-n
- Do not connect to remote hosts. May be combined with
-x
to highlight label names that match. Special text defined between { and } is still executed locally. -R
- Send files listed in label export paths from the local
_archive directory. This is the reverse of
-A
. -t
- Allow TTY input by copying the content of each label to the remote host instead of opening a pipe to the interpreter.
-v
- Print the HTTP log messages after each label is executed.
-E
- Set one or more environment variables using the format ‘name="value" ...’.
-F
- Specify a config file for ssh(1) to use.
-f
- Specify a routes_file. This file is composed of labels which correspond to hostnames or IP addresses which are matched against hostname. The default is routes.pln.
-o
- Log directory to use for background workers. Each log file is created for
each worker using the format
‘
YYYY-MM-DD_HHMMSS.n
’. -p
- Parallel execution distributed across the specified number of workers. The
log directory must also be specified using
-o
. A summary of results is displayed using the rexec-summary script located in the search path. -x
- Execute labels matching the specified regex. By default only labels beginning with [0-9a-z] are evaluated.
ENVIRONMENT
Status messages for each stage of execution may be customized by
setting RSET_HOST_CONNECT
,
RSET_HOST_CONNECT_ERROR
,
RSET_LABEL_EXEC_BEGIN
,
RSET_LABEL_EXEC_END
,
RSET_LABEL_EXEC_ERROR
, and
RSET_HOST_DISCONNECT
.
Setting RSET_HOST_CONNECT
disables the
default status messages and is the only required variable. These have no
effect in conjunction with the -n
flag. The
following variables are interpolated:
%e
- exit code
%l
- label name
%h
- hostname
%s
- session identifier
%T
- rfc-3339 timestamp
%%
- literal ‘
%
’
Execution on the remote host sets the following environment variables:
INSTALL_URL
- Used by rinstall(1) for fetching content from _sources.
SD
- Staging directory where
rset
unpacks utilities and configuration files.
Environment state may set for the duration of the ssh session
using renv(1) using
‘name=value
’ as the first
argument.
FILES
Available hosts and the pathnames to labeled scripts to run are read from routes.pln, located in the current directory.
A ssh master is established at the beginning of a session and all subsequent interactions with a host are run over a socket at /tmp/rset_control_{hostname}.
The local directory _rutils is created if it does not exist, and is shipped to the remote host at the beginning of each execution to directory named /tmp/rset_staging_{http_port}.
OPTIONS
The following options are recognized when parsing a pln(5) file:
environment=
Space separated list of environment variables. Only values
matching the pattern
‘name="value"
’ are added to
the environment on the remote host.
environment_file=
Path to a file which defines environment variables validated by renv(1).
interpreter=
The interpreter to run a script fragment with. Defaults to /bin/sh, but any language may be used that is capable of reading scripts over STDIN.
local_interpreter=
The interpreter to evaluate content that is prepended to a script Defaults to /bin/sh.
execute_with=
Command for elevating privileges, such as doas(1) and sudo(8).
SINGLE USE OPTIONS
The following are effective only for the subsequent label:
begin=
Execute a script using the ‘local_interpreter’ before the label is executed on the remote lost.
end=
Execute a script using the ‘local_interpreter’ after the label is executed on the remote host.
SEE ALSO
miniquark(1), rinstall(1), rsub(1), ssh_config(5), re_format(7)