How-to guides
How to run a command with sudo
Use the sudo
context manager.
from usine import run, sudo
with sudo():
run('apt install foo')
How to pass environment variables
Use the env
context manager.
from usine import run, env
with env(SOMETHING='foo'):
run('echo $SOMETHING')
# 'foo'
How to integrate with minicli
Usine focuses on managing the remote actions, and thus does not include any command line tool.
It can be integrated with any tool (argparse
, click
…), here we'll cover
the integration with minicli as this
is the tool we use ourselves.
Here is a basic example:
# myscript.py
from usine import run, connect
import minicli
@minicli.cli
def mycommand(arg1, force=False):
dosomething()
if __name__ == '__main__':
with connect(hostname='myhost'):
minici.run()
And now you can run it like this:
myscript.py foo --force
If you want to expose the hostname in the command line (or any other global
variable like the configpath
), here is a more complete example:
# myscript.py
from usine import run, connect
import minicli
@minicli.cli
def mycommand(arg1, force=False):
dosomething()
@minicli.wrap
def wrapper(hostname, configpath)
with connect(hostname=hostname, configpath=configpath):
yield # This will make minicli run.
if __name__ == '__main__':
minici.run(hostname='default', configpath='config/default.yml')
And you can run it like this:
myscript.py foo --force --hostname production