Google Compute Engine启动脚本:未在启动时运行

时间:2014-03-05 15:52:53

标签: startup google-compute-engine

我正在尝试在GCE启动时在CentOS实例上运行以下脚本。 我在实例名称上设置了自定义元数据“startup-script”,并将以下脚本作为值。

脚本没有在启动,重启或运行/ usr / share / google / run-startup-scripts时执行,但如果我在实例上本地创建并执行

,则会执行

我遗失了哪些明显的东西?

#! /bin/bash
# Installs apache and a custom homepage
# 1234567 123456

#Get this servers name from the metadata server and use the header to authenticate
THIS_SERVER_NAME=$(curl http://metadata/computeMetadata/v1/instance/hostname -H "X-Google-Metadata-Request: True")
#Turn off IPtables firewall that comes installed
service iptables stop
#Install apache
yum install -y httpd
#start apache
service httpd start
#create custom default homepage for this server
cat <<EOF > /var/www/html/index.html
<html><body><h1>Hello World</h1>
<p>This is Server: $THIS_SERVER_NAME</p>
</body></html>
EOF

3 个答案:

答案 0 :(得分:0)

我的个人经历面临两个问题:

1)需要交互的命令在启动时无法正常运行。例如,apt-get install会要求您确认进程(是/否)?在这种情况下,您可以关闭互动并传递&#34;是&#34;通过替换

yum install foo
apt-get install foo

yum -y --assumeyes install foo
apt-get -y --force-yes install foo

此外,如果您正在使用Debian,则在任何命令之前的以下内容将禁止交互:

sudo DEBIAN_FRONTEND=noninteractive <your command here, e.g., apt-get -y install foo>

2)另一个明显的问题是,有时你必须等待这个过程完成,这可能比你的实例出现的时间要晚得多,并且运行&#34;。

答案 1 :(得分:0)

我使用CentOS 7作为基本映像并安装了一些库,但它不起作用。切换到CentOS 6后,它运行良好(似乎CentOS 7有问题)。

答案 2 :(得分:0)

我很好奇今天的情况(原始帖子发布6年后),所以我用CentOS 6,7&8创建了三个VM,并放置了启动脚本。

我使用最初问题中的脚本而未做任何修改。

在所有三种情况下创建VM后,httpd已安装并正在运行。以下是部分serial console输出。

CentOS 6的结果:

Installed:
httpd.x86_64 0:2.2.15-69.el6.centos
...
Complete!                             
Starting httpd: [  OK  ]
exit status 0

CentOS 7的结果:

Installed:
httpd.x86_64 0:2.4.6-93.el7.centos
...
Complete!
centos7 systemd: Starting The Apache HTTP Server...
centos7 systemd: Started The Apache HTTP Server.
GCEMetadataScripts: startup-script exit status 0

CentOS 8的结果:

Installing:
httpd            x86_64 2.4.37-21.module_el8.2.0+494+1df74eae
...
systemd[1]: Starting The Apache HTTP Server...
systemd[1]: Started The Apache HTTP Server.
GCEMetadataScripts: startup-script exit status 0

无论是什么原因导致在询问此问题时脚本无法运行,现在情况并非如此。