Назад | Перейти на главную страницу

«Не удалось запустить выполнение пользовательских / финальных сценариев облака». : Ошибка обращения к экземпляру вычислений Google при запуске пользовательских / финальных сценариев облака

Вопрос

Как я могу подключиться к экземпляру Google, если у меня нет ключей SSH и пользовательские / финальные скрипты Google не запускаются?

Контекст проблемы

Вычислительный экземпляр Google под управлением Ubuntu 16.04 LTS.

Я изменил его базовую версию python, чтобы установить пакет python, который был очень привередлив с инструментами настройки python.

Моя теория заключается в том, что это изменение нарушило запуск облачных скриптов Google, и это был единственный способ, которым я раньше подключался к экземпляру.

Подробности проблемы

Мы можем проверить, что сервер включен, так как он обслуживает плохие сети nginx: http://35.201.199.224/

У меня есть журнал сервера, которым я могу поделиться здесь, если кто-нибудь захочет помочь мне прочитать его здесь: https://pastebin.com/DF5wsLhH

Я считаю, что наиболее важной является этот фрагмент

Mar 21 17:21:50 instance-1 systemd[1]: Started Google Compute Engine Network Daemon.
Mar 21 17:21:51 instance-1 google_network_daemon[1340]: Traceback (most recent call last):
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/bin/google_network_daemon", line 9, in <module>
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     load_entry_point('google-compute-engine==2.8.4', 'console_scripts', 'google_network_daemon')()
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     return get_distribution(dist).load_entry_point(group, name)
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     return ep.load()
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     return self.resolve()
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     module = __import__(self.module_name, fromlist=['__name__'], level=0)
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/google_compute_engine/networking/network_daemon.py", line 26, in <module>
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     from google_compute_engine import config_manager
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/google_compute_engine/config_manager.py", line 23, in <module>
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     from google_compute_engine.compat import parser
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/google_compute_engine/compat.py", line 23, in <module>
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     import distro
Mar 21 17:21:51 instance-1 google_network_daemon[1340]: ModuleNotFoundError: No module named 'distro'

Я думаю, он не может найти этот модуль, так как ищет не ту версию Python.

Вывод

Я понимаю, что мне было непростительно лениться подключаться только с помощью GoogleКнопка Connect By SSH'но я наивно предполагал, что лучшие коммерческие разработчики в западном мире будут держать все под контролем.

Возможно, вам придется сделать следующее:

  1. выключите эту ВМ (не удаляя диск!)
  2. создать новую виртуальную машину
  3. смонтировать этот диск в режиме чтения / записи
  4. восстановить установку Python, чтобы разрешить запуск скриптов для включения сеанса SSH

Если эта виртуальная машина обслуживает живой трафик, который вы не можете потерять, примите во внимание следующее:

  1. создать моментальный снимок с постоянного диска этой виртуальной машины
  2. создать новый экземпляр виртуальной машины GCE из снимка
  3. исправьте его, чтобы он работал и мог обслуживать запросы
  4. перенаправить трафик на этот обслуживающий экземпляр
  5. отремонтировать оригинальный диск

Кроме того, рассмотрите возможность использования контейнеров для запуска определенных версий зависимостей, требующих различных базовых инструментов (таких как Python), которые в противном случае могут конфликтовать с системными инструментами или внешними процессами (такими как сценарии SSH до / после и т. Д.)