|
From: | Michel Albert |
Subject: | [Fab-user] How do I combine "local" with "remote" tasks in fabric 2? |
Date: | Mon, 1 Apr 2019 11:55:11 +0200 |
Hi,
Consider the following fabric-1 task. For illustration I kept it really short:
This task needs to run a local and remote command. I am now trying to port this to fabric-2, and I can't figure out how I can implement this. If I define the "hosts" variable in the task, then the first line will be executed on the remote host as well, which I don't want. A naive aproach which won't work:
@task(hosts=PROD)
def sample(ctx):
version = ctx.run('python setup.py --version').strip() # <- this won't work
ctx.run('mkdir -p /snapshots/%s' % version)
At first I thought I would split the task into two, one for just local commands and one for remote tasks, but then I am forced to pass in the context, which will in turn cause it again to be run remotely:
@task
def get_version(ctx):
version = ctx.run('python setup.py --version').strip()
return version
@task(hosts=PROD)
def sample(ctx):
version = get_version(ctx) # <- this won't work
ctx.run('mkdir -p /snapshots/%s' % version)
How can I accomplish something like this? And where is it noted in the docs? In the current example on the "Upgrading from 1.x" page does not have a single task mixing local with remote commands in any way.
Regards,
Mich
[Prev in Thread] | Current Thread | [Next in Thread] |