For fabric2 in fabfile use the following:
from fabric import task, Connection @task def staging(ctx): ctx.name = 'staging' ctx.user = 'ubuntu' ctx.host = '192.1.1.1' ctx.connect_kwargs.key_filename = os.environ['ENV_VAR_POINTS_TO_PRIVATE_KEY_PATH'] @task def do_something_remote(ctx): with Connection(ctx.host, ctx.user, connect_kwargs=ctx.connect_kwargs) as conn: conn.sudo('supervisorctl status')
and run it with:
fab staging do_something_remote
UPDATE:
For multiple hosts (one host is fine too) you can use this:
from fabric2 import task, SerialGroup @task def staging(ctx): conns = SerialGroup( 'user@10.0.0.1', 'user@10.0.0.2', connect_kwargs= { 'key_filename': os.environ['PRIVATE_KEY_TO_HOST'] }) ctx.CONNS = conns ctx.APP_SERVICE_NAME = 'google' @task def stop(ctx): for conn in ctx.CONNS: conn.sudo('supervisorctl stop ' + ctx.APP_SERVICE_NAME)
and run it with FAB or FAB2:
fab staging stop
MikeL Aug 08 2018-02-18T00: 00Z
source share