首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测实例何时完成安装脚本?

检测实例何时完成安装脚本?
EN

Stack Overflow用户
提问于 2014-08-05 13:50:22
回答 5查看 813关注 0票数 1

我正在使用以下命令启动实例:

代码语言:javascript
复制
gcutil addinstance \
--image=debian-7 \
--persistent_boot_disk \
--zone=us-central1-a \
--machine_type=n1-standard-1 \
--metadata_from_file=startup-script:install.sh \
instance-name

如何检测此实例何时已完成其安装脚本?我希望能够将这个启动命令放在一个更大的配置脚本中,然后根据成功完成的安装脚本向服务器发出命令。

EN

回答 5

Stack Overflow用户

发布于 2014-08-06 02:29:16

我不知道有什么方法可以在gcutil addinstance中完成所有这些工作。

我建议:

  1. 通过gcutil addinstance添加实例,确保在通过诸如gcutil push
  2. Using gcutil ssh <instance-name> </path-to-script/script-to-run>之类的命令将脚本continue
  3. Copying到实例以手动运行脚本之前,使用--wait_until_running标志确保实例正在运行。

通过这种方式,您可以编写脚本,使其在完成之前一直阻塞,并且ssh命令在远程机器上的脚本执行完成之前不会返回。

票数 1
EN

Stack Overflow用户

发布于 2014-08-06 04:43:14

有许多方法:给自己发一封电子邮件,上传到云存储,发送一条jabber消息,...

一种简单、可观察的方法是在install.sh脚本的末尾添加一个logger条目(我还调整了开头的对称性)。类似于:

代码语言:javascript
复制
#!/bin/bash

/usr/bin/logger "== Startup script START =="
#
# Your code goes here
#
/usr/bin/logger "== Startup script END   =="

然后,您可以检查脚本是否以两种方式启动或结束:

从您的

  • 中,选择“项目”>“计算”>“虚拟机实例”>您的实例>“串行控制台”>“查看输出”。通过发出gcutil getserialportoutput instance-name.

Developer's Console

票数 1
EN

Stack Overflow用户

发布于 2014-08-06 11:35:20

实现这一目标的方法真的很多。我喜欢的一种方式是使用与实例关联的元数据服务器。让启动脚本在脚本完成时将一段元数据设置为“已完成”。您可以使用挂起的GET查询metadata server,该GET仅在元数据更新时返回。只需在脚本中使用gcutil setmetadata作为最后一个命令即可。

我喜欢这种方法,因为挂起的GET只给你一个命令来运行,而不是在循环中运行一个轮询,而且除了计算引擎之外,它不涉及任何服务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25131955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档