копировать файлы при создании экземпляра GCP из python - PullRequest
0 голосов
/ 11 ноября 2019

Я использую googleapiclient в python для запуска экземпляров ВМ. В рамках этого я использую средство для запуска сценариев запуска для установки docker и других пакетов python.

Теперь я хотел бы сделать одну вещь - в идеале, скопировать файлы в этот экземпляр на этапе создания экземпляра черезкод Python.

Какой может быть способ достичь этого? В идеале было бы полезно определить, что экземпляр загружен, а затем скопировать эти файлы.

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Прежде всего, я бы предложил использовать такой инструмент, как Terraform или Google Deployment Manager, для создания облачной инфраструктуры вместо написания собственного кода Python и самостоятельной обработки всех крайних случаев.

По какой-то причине вы можетеНе используйте вышеуказанный инструмент, и только программа на Python является для вас опцией, которую вы можете сделать следующим образом: 1. Создайте корзину GCS, используя python api, и установите соответствующую политику корзины для защиты данных. 2. Создайте учетную запись службы, которая имеет разрешение на чтение вышеупомянутой корзины GCS. 3. Запустите экземпляр VM, используя Python API, и запустите скрипт запуска для установки пакетов и запуска Docker-контейнера. Прикрепите указанную выше учетную запись службы, которая имеет разрешение на чтение файлов из вышеуказанной корзины GCS3. В вашем док-контейнере есть скрипт запуска, который может запустить команду `` gsutil`, чтобы получить файлы из корзины GCS и поместить их в нужное место.

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

Опять же, если вы сможете использовать такие инструменты, как Terraform, это упростит задачу.

1 голос
/ 11 ноября 2019

Если я правильно вас слышу, вы хотите, чтобы файлы присутствовали в контейнере, который выполняется Docker на вашей виртуальной машине Compute Engine. Ваш сценарий запуска для Compute Engine устанавливает docker.

Я не рекомендую копировать эти файлы в контейнер, а вместо этого сделать их доступными в локальной файловой системе, доступной для Compute Engine. Сконфигурируйте запуск докера, чтобы затем монтировать каталог из Compute Engine в контейнер докера. Внутри док-контейнера теперь у вас будет доступ к нужным файлам.

Что касается в первую очередь переноса файлов в среду Compute Engine, у нас есть несколько вариантов. Основная история, однако, будет описывать, откуда файлы начинаются с самого начала.

Один из распространенных подходов - хранить файлы, которые вы хотите скопировать в виртуальную машину, в ведре / папке Google Cloud Storage (GCS). Оттуда ваш сценарий запуска может использовать GCS API или команду gsutil для копирования файлов из корзины GCS в локальную файловую систему.

Еще одна мысль, и опять же, это зависит от природы файлов .. заключается в том, что вы можете создать диск GCP, который просто «содержит» файлы. Теперь, когда вы создаете новый экземпляр Compute Engine, этот экземпляр можно определить для монтирования диска, который является общим для чтения только для всех экземпляров виртуальной машины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...