我正在使用以下命令启动实例:
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如何检测此实例何时已完成其安装脚本?我希望能够将这个启动命令放在一个更大的配置脚本中,然后根据成功完成的安装脚本向服务器发出命令。
发布于 2014-08-06 02:29:16
我不知道有什么方法可以在gcutil addinstance中完成所有这些工作。
我建议:
gcutil addinstance添加实例,确保在通过诸如gcutil pushgcutil ssh <instance-name> </path-to-script/script-to-run>之类的命令将脚本continue--wait_until_running标志确保实例正在运行。通过这种方式,您可以编写脚本,使其在完成之前一直阻塞,并且ssh命令在远程机器上的脚本执行完成之前不会返回。
发布于 2014-08-06 04:43:14
有许多方法:给自己发一封电子邮件,上传到云存储,发送一条jabber消息,...
一种简单、可观察的方法是在install.sh脚本的末尾添加一个logger条目(我还调整了开头的对称性)。类似于:
#!/bin/bash
/usr/bin/logger "== Startup script START =="
#
# Your code goes here
#
/usr/bin/logger "== Startup script END =="然后,您可以检查脚本是否以两种方式启动或结束:
从您的
gcutil getserialportoutput instance-name.发布于 2014-08-06 11:35:20
实现这一目标的方法真的很多。我喜欢的一种方式是使用与实例关联的元数据服务器。让启动脚本在脚本完成时将一段元数据设置为“已完成”。您可以使用挂起的GET查询metadata server,该GET仅在元数据更新时返回。只需在脚本中使用gcutil setmetadata作为最后一个命令即可。
我喜欢这种方法,因为挂起的GET只给你一个命令来运行,而不是在循环中运行一个轮询,而且除了计算引擎之外,它不涉及任何服务。
https://stackoverflow.com/questions/25131955
复制相似问题