Compute Engine 上的一次性脚本
One time script on Compute Engine
我希望在 VM 实例化期间 运行 一次脚本。每次启动虚拟机时计算引擎模板中的启动脚本运行s。比如说我必须在 linux 主机上安装 gnome 桌面,我不想将其包含在启动脚本中。相反,我正在寻找一旦创建主机就 运行s 的东西。当然,我希望这个自动化。可以这样做吗?
编辑:我正在尝试在 Linux OS 中实现此目的。
如文档 [1] 所述,如果我们在计算引擎实例上创建启动脚本,则实例“每次”启动时都会执行自动化任务。
到运行一次启动脚本,最基本的方法是使用文件系统上的一个文件来标记脚本何时被运行或者你可以使用实例用于存储状态的元数据。
例如通过:
INSTANCE_STATE=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/state -H "Metadata-Flavor: Google")
然后在 运行 脚本等
之后设置 state = PROVISIONED
但是最好让您的脚本专门检查它要执行的操作是否已经完成并进行了相应处理。
- 另一个选项,在您的启动脚本中,您可以让它从主机实例的末尾删除启动脚本元数据
[1] https://cloud.google.com/compute/docs/startupscript
[2]https://cloud.google.com/compute/docs/storing-retrieving-metadata
我希望在 VM 实例化期间 运行 一次脚本。每次启动虚拟机时计算引擎模板中的启动脚本运行s。比如说我必须在 linux 主机上安装 gnome 桌面,我不想将其包含在启动脚本中。相反,我正在寻找一旦创建主机就 运行s 的东西。当然,我希望这个自动化。可以这样做吗?
编辑:我正在尝试在 Linux OS 中实现此目的。
如文档 [1] 所述,如果我们在计算引擎实例上创建启动脚本,则实例“每次”启动时都会执行自动化任务。
到运行一次启动脚本,最基本的方法是使用文件系统上的一个文件来标记脚本何时被运行或者你可以使用实例用于存储状态的元数据。
例如通过: INSTANCE_STATE=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/state -H "Metadata-Flavor: Google")
然后在 运行 脚本等
之后设置 state = PROVISIONED但是最好让您的脚本专门检查它要执行的操作是否已经完成并进行了相应处理。
- 另一个选项,在您的启动脚本中,您可以让它从主机实例的末尾删除启动脚本元数据
[1] https://cloud.google.com/compute/docs/startupscript
[2]https://cloud.google.com/compute/docs/storing-retrieving-metadata