komando_parallel_hosts

The komando_parallel_hosts function is a function to execute a task on multiple hosts in parallel. It takes two arguments:

  • hosts: a table that contains the hosts to execute the task on. Each host is represented by 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.
  • 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 is false)
    • as_user: a string that contains the username to run the task as. (optional)
    • ignore_exit_code: a boolean that indicates whether to ignore the exit code of the task. If true, the script will continue even if the task returns a non-zero exit code. (default is false)
    • env: a table that contains environment variables to be set for the task. (optional)

Usage Example

local hosts = {
  {
    address = "10.20.30.41",
    user = "user1",
    private_key_file = "/path/to/private/key",
  },
  {
    address = "10.20.30.42",
    user = "user2",
    private_key_file = "/path/to/private/key",
  },
  {
    address = "10.20.30.43",
    user = "user3",
    private_key_file = "/path/to/private/key",
  }
}

local task = {
  name = "install neovim package",
  komandan.modules.apt({
    package = "neovim",
    update_cache = true
  }),
  elevate = true,
}

komandan.komando_parallel_hosts(hosts, task)

This function will execute the module on the target server and return a table with the following 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.