Fabric 2 で env を fabric みたいに何も考えずに設定して接続というのをやろうとしてたんだけど下記のように出来なさそう。
global は、バッドノウハウな匂いしかしないんだけど、他にやる方法ないのかな。
おとなしく .ssh/config を設定してそれを読み込ませるようにするのがベターなのかしら?
# -- coding:utf-8 --
from fabric import Connection
from invoke import task
env = {}
conn = None
@task
def env_vagrant(c):
global conn
env['host'] = 'localhost'
env['user'] = 'vagrant'
env['kwargs'] = {
'key_filename': '/home/vagrant/.ssh/id_rsa',
}
conn = Connection(
env['host'],
user=env['user'],
connect_kwargs=env['kwargs'])
@task
def info(c):
conn.run('pwd')
conn.run('python --version')
conn.run('pipenv --version')
conn.local('ls')