juju-exec

Summary

Run commands in a unit’s hook context.

Usage

juju-exec [options] [-u] [<unit-name>] <commands>

Options

--force-remote-unit  (= false)
    run the commands for a specific relation context, bypassing the remote unit check
--no-context  (= false)
    do not run the command in a unit context
--operator  (= false)
    run the commands on the operator instead of the workload. Only supported on k8s workload charms
-r, --relation (= "")
    run the commands for a specific relation context on a unit
--remote-app (= "")
    run the commands for a specific remote application in a relation context on a unit
--remote-unit (= "")
    run the commands for a specific remote unit in a relation context on a unit
-u (= "-")
    explicit unit-name, all other arguments are commands. if -u is passed an empty string, unit-name is inferred from state

Details

Run the specified commands in the hook context for the unit.

<unit-name> can be either the unit tag, i.e. unit-ubuntu-0, or the unit id, i.e., ubuntu/0.

<unit-name> can be specified by the -u argument. If -u is passed, unit-name cannot be passed as a positional argument.

If --no-context is specified, the <unit-name> positional argument or -u argument is not needed.

If the there’s one and only one unit on this host, <unit-name> is automatically inferred and the positional argument is not needed. If -u is passed an empty string, this behaviour is also observed.

Examples

juju-exec app/0 hostname -f
juju-exec --no-context -- hostname -f
juju-exec "hostname -f"
juju-exec -u "" -- hostname -f
juju-exec -u app/0 "hostname -f"
juju-exec -u app/0 -- hostname -f

The commands are executed with /bin/bash -s, and the output returned.