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

сценарий запуска не запускается при первой загрузке

В startup-script добавленный к экземпляру в GCP, похоже, не запускается при первой загрузке (но работает при последующих загрузках)

Я использую https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/centos-7-v20160921 базовое изображение, но та же проблема возникла и в немного более старой версии образа centos-7.

Это происходит независимо от того, использую ли я API для создания экземпляра или веб-консоль.

Согласно документам (https://cloud.google.com/compute/docs/startupscript) добавление метаданных с ключом startup-script и значение скрипта должно вызывать запуск скрипта на каждый загрузки.

(Есть раздел о добавлении скрипта в работающий экземпляр, и в нем упоминается, что для запуска скрипта требуется перезагрузка, но это (по-видимому) не должно применяться к новым экземплярам.)

Можно принудительно запустить скрипт с помощью sudo google_metadata_script_runner --script-type startup (https://cloud.google.com/compute/docs/startupscript#rerunthescript), что означает, что сценарий загружен, но просто не запущен, поэтому я не уверен, что происходит.

Я что-то делаю не так или нашел ошибку в GCP? :)

Это не ошибка, она все еще существует, и это непросто.

Скрипты запуска запускаются все-таки init.d скрипты.

Итак, если вы инициализируете /etc/environment файл, например, и попробуйте использовать его в init.d скрипт, при первой загрузке, /etc/environment не будет, когда ваш скрипт будет запущен.

На второй загрузке проблем больше нет, /etc/environment уже существует :-)

Это действительно сработало для меня без проблем с использованием образа Centos 7. Я создал виртуальную машину из консоли и добавил этот небольшой скрипт

#! /bin/bash
yum update
yum install -y httpd
cat <<EOF > /var/www/html/index.html
<html><body><h1>Hello World</h1>
<p>This page was created from a simple startup script!</p>
</body></html>
EOF

После создания виртуальной машины я смог убедиться, что Apache был установлен в последовательная консоль.

…
Feb  3 20:36:17 instance-3 startup-script: INFO startup-script: ---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
Feb  3 20:36:17 instance-3 startup-script: INFO startup-script: --> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package: httpd-2.4.6-45.el7.centos.x86_64
Feb  3 20:36:17 instance-3 startup-script: INFO startup-script: --> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-45.el7.centos.x86_64
….
Feb  3 20:36:20 instance-3 startup-script: INFO startup-script: Installed:
Feb  3 20:36:20 instance-3 startup-script: INFO startup-script:   httpd.x86_64 0:2.4.6-45.el7.centos
Feb  3 20:36:20 instance-3 startup-script: INFO startup-script: Dependency Installed:
Feb  3 20:36:20 instance-3 startup-script: INFO startup-script:   apr.x86_64 0:1.4.8-3.el7                     apr-util.x86_64 0:1.5.2-6.el7
Feb  3 20:36:20 instance-3 startup-script: INFO startup-script:   httpd-tools.x86_64 0:2.4.6-45.el7.centos     mailcap.noarch 0:2.1.41-2.el7
Feb  3 20:36:20 instance-3 startup-script: INFO startup-script: Complete!

Сценарий установил Apache, но служба на виртуальной машине не была запущена. Мне просто нужно было использовать SSH в виртуальной машине, чтобы запустить службу.