Соединение Fabrics 2.x SSH с использованием идентификатора не работает - PullRequest
1 голос
/ 23 мая 2019

Попытка подключения к хосту, описанному в конфигурации ssh, с использованием Fabric 2 и файла идентификации.

con = Connection('my_host')
@task
def tt(c):
    con.run('uname -a')

~ / .ssh / config:

Host my_host
    HostName 123.144.76.84
    User ubuntu
    IdentityFile ~/.keys/somekey

Не удается с

paramiko.ssh_exception.AuthenticationException: аутентификация не удалась.

Пока $ ssh my_host из терминала работает.

Я пытался сделать fab -i ~/.keys/somekey tt с тем же результатом.

1 Ответ

0 голосов
/ 31 мая 2019

Fabric принимает итерируемые хосты в качестве параметров в задачах.Согласно документации:

Итерация спецификаторов соединения с хостом, подходящих для создания экземпляра Соединения.Наличие этого аргумента вызовет автоматическую параметризацию задачи при вызове из CLI, аналогично поведению --hosts.

Один из членов которого может быть:

Строка, подходящая для того, чтобы быть первым позиционным аргументом в Connection - подробности см. В ее документации, но обычно это удобные строки, такие как hostname.example.com или user @ host: port.

Что касается вашего примера, попробуйте это для fabfile.py:

host_list = ["my_host"]

@task(hosts=host_list)
def tt(c):
    c.run('uname -a')

В качестве альтернативы, вы можете вообще пропустить объявление хоста из файла fabfile.Если вы не укажете хост в fabfile.py, вы можете просто указать его как хост при вызове утилиты fab cli.Если ваш fabfile.py такой:

@task
def tt(c):
    c.run('uname -a')

Теперь вы должны запустить fab -H my_host tt, чтобы запустить его с псевдонимом tt из конфигурации клиента SSH.

Надеюсь, это поможет.

...