Getting Started
Installation
Pre-built binaries for Komandan are available for Linux on the GitHub Releases page.
An installation script is provided for easy installation:
curl -fsSL https://raw.githubusercontent.com/hahnavi/komandan/main/install.sh | sh
This script will download the latest Komandan release for your system and install Komandan to $HOME/.local/bin. Please make sure that $HOME/.local/bin is in your $PATH environment variable.
After the installation is complete, you can verify it by running:
komandan --version
This command should print the version of Komandan that you have installed.
Basic Usage
Once Komandan is installed, you can start using it to manage your remote servers. Here’s a basic example:
Create a Lua Script: Create a new file named
main.lua(or any other name with a.luaextension) with the following content:local host = { address = "your_server_ip", user = "your_username", private_key_file = os.getenv("HOME") .. "/.ssh/id_rsa", -- Replace with your private key path } local task = { name = "Execute a simple command", komandan.modules.cmd({ cmd = "hostname" }) } komandan.komando(host, task)Replace
"your_server_ip","your_username", and theprivate_key_filewith your server’s IP address, your username, and the path to your SSH private key, respectively.Run the Script: Execute the script using the following command:
komandan main.luaThis command will connect to the specified server, execute the
hostnamecommand, and print the output.
This is a very basic example, but it demonstrates the fundamental principles of using Komandan. You can explore the Modules and Built-in Functions sections to learn more about the available features and how to use them.
komandan.komando function
The komando function is a function to execute a task on a host. It takes two arguments:
host: a table that contains the following fields:address: the IP address or hostname of the target server.port: the SSH port to use for the connection (default is 22).user: the username to connect to the server.private_key_file: the path to the private key file for authentication.private_key_pass: the passphrase for the private key file (optional).password: the password to use for authentication if no private key is provided.known_hosts_file: the path to the known_hosts file (optional).host_key_check: a boolean that indicates whether to check the host key (default istrue).elevate: a boolean that indicates whether to run the task with elevated privileges. (default isfalse)as_user: a string that contains the username to run the task as. (optional)env: a table that contains environment variables to be set for the task. (optional)
task: a table that contains the following fields:name: a string that describes the task. It is used for logging purposes. (optional)- module: a table that contains the module to be executed and its arguments. This field is defined without a key.
elevate: a boolean that indicates whether to run the task with elevated privileges. (default isfalse)as_user: a string that contains the username to run the task as. (optional)env: a table that contains environment variables to be set for the task. (optional)ignore_exit_code: a boolean that indicates whether to ignore the exit code of the task. Iftrue, the script will continue even if the task returns a non-zero exit code. (default isfalse)
This function will execute the module on the target server and return the results:
stdout: a string that contains the standard output of the module.stderr: a string that contains the standard error output of the module.exit_code: an integer that contains the exit code of the module.