Невозможно создать экземпляр на Google Cloud Platform с URL-адресом сценария запуска

Я не могу создать экземпляр в GCP с помощью консоли gcloud:

1. Если скрипт локальный, все в порядке:

      gcloud compute instances create app \
--boot-disk-size=10GB \
--image-family ubuntu-1604-lts \
--image-project=ubuntu-os-cloud \
--machine-type=g1-small \
--restart-on-failure \
--metadata-from-file startup-script=install.sh

2. Если я использую URL-адрес сценария запуска с URI gsutil, например:

      gcloud compute instances create app \
--boot-disk-size=10GB \
--image-family ubuntu-1604-ltsm \
--image-project=ubuntu-os-cloud \
--machine-type=g1-small \
--restart-on-failure \
--metadata-from-file startup-script-url=gs://mbps54/install.sh

Потом я получил:

ОШИБКА: (gcloud.compute.instances.create) Невозможно прочитать файл [gs://mbps54/install.sh]. [Errno 2] Нет такого файла или каталога: 'gs://mbps54/install.sh' URI gsutil - gs: //mbps54/install.sh

3. Если я использую URL-адрес сценария запуска с общедоступным URL-адресом, например:

      gcloud compute instances create reddit-app \
--boot-disk-size=10GB \
--image-family ubuntu-1604-ltsm \
--image-project=ubuntu-os-cloud \
--machine-type=g1-small \
--restart-on-failure \
--metadata-from-file startup-script-url=https://storage.googleapis.com/mbps54/install.sh

Я получил:**

ОШИБКА: (gcloud.compute.instances.create) Невозможно прочитать файл [https://storage.googleapis.com/mbps54/install.sh]: [Errno 2] Нет такого файла или каталога: 'https: // storage. googleapis.com/mbps54/install.sh'

4. Вот мои настройки корзины.

И я могу открыть с любого другого ПК. Кроме того, чтобы сделать доступ публичным, я сделал следующее:

      gsutil defacl set public-read gs://mbps54
gsutil -m acl set -R -a public-read gs://mbps54

5. Этот URL-адрес корзины является общедоступным и открывается с любого ПК https://storage.googleapis.com/mbps54/install.shhttps://storage.googleapis.com/mbps54/install.sh открывается с другого ПК.

Может кто-нибудь помочь, что не так с моей конфигурацией и скриптом?

1 ответ

Вы используете --metadata-from-fileflag, который ожидает, что вы предоставите локальный файл. Если вместо этого вы хотите указать сценарий запуска из URL-адреса, вам понадобится --metadata флаг, то есть:

      --metadata startup-script-url=URL

Это упоминается на https://cloud.google.com/compute/docs/startupscript#startupscriptrunninginstances под gcloud таб.

Используя инструмент командной строки gcloud, используйте команду instance add-metadata для добавления метаданных к экземпляру. Используйте любой из доступных ключей сценария запуска:

--metadata startup-script=CONTENTS: напрямую передать содержимое сценария запуска с помощью этого ключа.

--metadata startup-script-url=URL: укажите URL-адрес облачного хранилища для файла сценария запуска с помощью этого ключа. `--metadata-from-file

startup-script=FILE: предоставить локально сохраненный файл сценария запуска.

Например:

       --metadata-from-file startup-script=PATH_TO_FILE

gcloud compute instances add-metadata EXAMPLE_INSTANCE \   --metadata
startup-script-url=gs://BUCKET/FILE ```
Другие вопросы по тегам