В 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 в виртуальной машине, чтобы запустить службу.