Otto is an automation toolkit for UNIX-like computers. Its designed to be fast, efficient with thousands of servers, and have no runtime requirements on targets.
The Otto server is the central location for all your scripts and hosts.
The docker image for Otto is preferred. Load the image using
docker load then use:
docker run -p 8080:8080 -v <data dir>:/otto_data -e OTTO_UID=$(id -u) -e OTTO_GID=$(id -g) --name otto otto
Navigating to the web interface, use the default credentials of
admin to log in. You'll want to
change that password right away, so head to the Options tab.
The Otto client is the agent that runs on the target host. It accepts and execute scripts. It should run as root, and works well with SystemD.
Client binaries are provided on the server at
otto_client.conf configuration file is required to launch the otto client
||Yes||The PSK configured for this host on the server|
||Yes||The path to a file where the Otto client should log|
||No||The default UID if not specified by the script|
||No||The default GID if not specified by the script|
||No||The value of $PATH when scripts are executed|
A script is configured on the otto server and is executed on the otto client. Scripts can be in any executable format as long as the executable itself requires only the first and only parameter being the path to the script.
python <python file>
Environment variables allow you to customize the results of the script on a per host basis.
Envrionment variables can be configured at multiple levels:
Global envrionment variables are configured in the options page on the Otto server. They're included in all scripts.
Scripts can also include their own envrionment variables. These overwrite global variables.
Hosts can include their own variables. These overwrite script variables.
Lastly, there are a number of implicit variables that are automatically included:
||The absolute URL to the otto server, configured in the options page|
||The version of the otto software|
||The configured address of the host this script is executing on|
||The configured port of the host this script is executing on|
||The configured PSK of the host this script is executing on|