Сценарии Fabric для автоматического развертывания веб-приложений больше не работают в версии Jelastic 4.9

Я разработал несколько скриптов Fabric, которые автоматизируют развертывание моих веб-приложений в средах Jelastic. Эти сценарии работали отлично каждый раз, до сегодняшнего дня. Эта проблема просто сбивает меня с толку, поскольку в моих сценариях ничего не изменилось, и моя среда не изменилась со времени последнего успешного выполнения; единственное примечательное изменение заключается в том, что мой провайдер Jelastic (ServNet Mexico) теперь использует версию 4.9 платформы Jelastic.

Моя местная среда:

  • Windows 10
  • Python 2.7
  • Fabric 1.13.1 (самая последняя версия, после того, как я обновил ее сегодня, чтобы увидеть, изменится ли она)
  • Paramiko 2.1.1 (как установлено PIP как зависимость от Fabric)

У меня точно такая же проблема на двух других машинах, как с MacOS Sierra, так и с эквивалентными настройками Python и Fabric, но с более старыми версиями пакета Fabric (и его зависимостей), которые работали просто отлично несколько дней назад.

За пределами Fabric доступ по SSH через PuTTY (в Windows) и терминале (MacOS) работает нормально. Одна вещь, которая недавно изменилась, заключается в том, что в начале удаленного сеанса отображается баннер аутентификации (который предупреждает об опасностях доступа SSH, как показано ниже). Я сомневаюсь, что это как-то связано с моей проблемой.

Как рекомендовано на этой странице устранения неполадок в документации Fabric, я включил флаг --show=debug для команды fab, а также ведение журнала для Paramiko. Вывод в моем командном окне выглядит следующим образом (я опускаю некоторые строки, которые можно считать конфиденциальными и конфиденциальными, которые, насколько я могу судить, не предоставляют соответствующей информации для рассматриваемой проблемы):

Command line prompt>fab --show=debug my_task
Using fabfile '<path_to_fabric_script>'
Commands to run: my_task
Parallel tasks now using pool size of 0
<sensitive information omitted>
Parallel tasks now using pool size of 10
<sensitive information omitted>
[<jelastic_node>] run: /bin/bash -l -c "cd /var/lib/jelastic/backup && rm -f <file_to_delete>"
DEBUG:paramiko.transport:starting thread (client mode): 0x3cd61d0L
DEBUG:paramiko.transport:Local version/idstring: SSH-2.0-paramiko_2.1.1
DEBUG:paramiko.transport:Remote version/idstring: SSH-2.0-JSSHProxy
INFO:paramiko.transport:Connected (version 2.0, client JSSHProxy)
DEBUG:paramiko.transport:kex algos:[u'ecdh-sha2-nistp256', u'ecdh-sha2-nistp384', u'ecdh-sha2-nistp521', u'diffie-hellman-group14-sha1', u'diffie-hellman-group1-sha1'] server key:[u'ssh-rsa'] client encrypt:[u'aes128-ctr', u'aes192-ctr', u'aes256-ctr', u'aes128-gcm@openssh.com', u'arcfour256', u'arcfour128'] server encrypt:[u'aes128-ctr', u'aes192-ctr', u'aes256-ctr', u'aes128-gcm@openssh.com', u'arcfour256', u'arcfour128'] client mac:[u'hmac-sha1', u'hmac-sha1-96'] server mac:[u'hmac-sha1', u'hmac-sha1-96'] client compress:[u'none'] server compress:[u'none'] client lang:[u''] server lang:[u''] kex follows?False
DEBUG:paramiko.transport:Kex agreed: diffie-hellman-group1-sha1
DEBUG:paramiko.transport:Cipher agreed: aes128-ctr
DEBUG:paramiko.transport:MAC agreed: hmac-sha1-96
DEBUG:paramiko.transport:Compression agreed: none
DEBUG:paramiko.transport:kex engine KexGroup1 specified hash_algo <built-in function openssl_sha1>
DEBUG:paramiko.transport:Switch to new keys ...
DEBUG:paramiko.transport:Adding ssh-rsa host key for [gate.jl.serv.net.mx]:3022: <key>
DEBUG:paramiko.transport:Trying SSH agent key <key>
DEBUG:paramiko.transport:userauth is OK
INFO:paramiko.transport:Auth banner:
  Welcome to Jelastic shell

  This shell will assist you in managing Jelastic applications.

    ============================== ATTENTION ==============================
   Shell access is rather powerful and you can accidentally damage your application.
   So please pay special attention to the actions you perform here.
    ============================== ATTENTION ==============================



INFO:paramiko.transport:Authentication (publickey) successful!
DEBUG:paramiko.transport:[chan 0] Max packet in: 32768 bytes
DEBUG:paramiko.transport:[chan 0] Max packet out: 32768 bytes
DEBUG:paramiko.transport:Secsh channel 0 opened.
DEBUG:paramiko.transport:[chan 0] Sesch channel 0 request ok

И задача Fabric просто зависает в этот момент. Никаких дальнейших выводов, никаких сообщений об успехе или неудаче любого рода, никаких тайм-аутов, никаких указаний на то, что может происходить. Кроме того, сами команды задачи Fabric также не запускаются, так как на узле Jelastic, на который нацелена задача Fabric, не создается ожидаемый эффект (самая простая задача, которую я имею, состоит в том, чтобы просто удалить некоторые файлы резервных копий с помощью команды rm; другие задачи Я разработал более сложные, и они не будут работать.)

Я склонен думать, что эта проблема связана либо с новой (4.9) версией Jelastic, либо с ее конкретным развертыванием в инфраструктуре моего провайдера Jelastic. К сожалению, мой поставщик не помог, когда я попросил их помочь в этом вопросе.

Буду признателен за любые подсказки относительно того, что может происходить.

3 ответа

Это может быть проблема с paramico lib, вы можете проверить проблему здесь.

Вы можете попробовать подключиться с опцией --keepalive=5..10

Такое поведение вызвано неправильной обработкой приветственного баннера ssh. Но у нас есть обходной путь: отредактируйте /etc/ssh/sshd_config и прокомментируйте следующую строку:

Banner /etc/jmotd

затем перезапустите демон sshd:

service sshd restart

Если вы столкнетесь с какими-либо трудностями, не стесняйтесь обращаться к нам по адресу support@jelastic.com.

С уважением, Команда поддержки Jelastic

Другие вопросы по тегам