如何从其他服务器重启GCP上的VM?

时间:2020-06-23 18:15:47

标签: google-cloud-platform google-compute-engine

是否可以使用python,bash或php在Internet上重新启动GCP上的VM?

收到一些通知后,我需要重新启动。

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要做两件事:

  • 通过身份验证
  • 使用API​​与Compute Engine Google API(或嵌入API调用的客户端库)进行通信

身份验证

最简单的方法是使用gcloud sdk CLI。如果您使用个人计算机,则可以使用个人用户帐户,否则,可以使用service account with a service account key file

如果使用客户端库,则无需安装gcloud sdk,仅服务帐户密钥文件就足够了。一种好的做法是定义一个环境变量GOOGLE_APPLICATION_CREDENTIALS=/path/to/serviceAccountKeyFile.json

这是一个好习惯,因为您不对身份验证代码进行硬编码。库本身在多个位置搜索凭证,您可以在本地环境和GCP上无缝运行相同的代码。没有黑客,没有肮脏的代码,没有不同的入口点。

API调用

如果使用gcloud,则可以使用REST API

重置虚拟机
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -X POST \
  https://compute.googleapis.com/compute/v1/projects/<MyProjectId>/zones/<ComputeZone>/instances/<InstanceName>/reset

您还可以使用stop(等待90秒钟),然后重新start您的VM。相同的身份验证,URL不同。 重要的是,至少要等待90秒的最大停止宽限期才能触发启动

遗憾的是,没有Compute Engine客户端库。您只能使用发现API。不如其他现有库那么好。您有一个示例here。要重置,您必须调用此method in Python

  compute = googleapiclient.discovery.build('compute', 'v1')
  result = compute.instances().reset(project=<MyProjectId>, zone=<ComputeZone>, instance=<InstanceName>).execute()