Невозможно создать экземпляр на 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'
И я могу открыть с любого другого ПК. Кроме того, чтобы сделать доступ публичным, я сделал следующее:
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-file
flag, который ожидает, что вы предоставите локальный файл. Если вместо этого вы хотите указать сценарий запуска из 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 ```