Vas*_*lis 11 python google-compute-engine google-cloud-platform
我正在运行许多运行Python代码的Google Compute Engine实例,我想从实例中找到每个实例的名称或ID.
我发现的一个解决方案是使用以下方法获取实例的内部IP:
import socket
internal_ip = socket.gethostbyname(socket.gethostname())
Run Code Online (Sandbox Code Playgroud)
然后我列出所有实例:
from oauth2client.client import GoogleCredentials
from googleapiclient.discovery import build
credentials = GoogleCredentials.get_application_default()
self.compute = build('compute', 'v1', credentials=credentials)
result = self.compute.instances().list(project=project, zone=zone).execute()
Run Code Online (Sandbox Code Playgroud)
然后我遍历所有实例以检查内部IP是否与实例的IP匹配:
for instance in result["items"]:
if instance["networkInterfaces"][0]["networkIP"] == internal_ip:
internal_id = instance["id"]
Run Code Online (Sandbox Code Playgroud)
这有效但有点复杂,是否有更直接的方法来实现同样的事情,例如使用Google的Python客户端库或gcloud命令行工具?
San*_*esh 19
实例名称:
socket.gethostname()或者platform.node()应该返回实例的名称.您可能需要根据您的操作系统进行一些解析.
这对我在Debian和Ubuntu系统上有用:
import socket
gce_name = socket.gethostname()
Run Code Online (Sandbox Code Playgroud)
但是,在CoreOS实例上,该hostname命令提供了实例的名称和区域信息,因此您必须进行一些解析.
实例ID /名称/更多(推荐):
更好的方法是使用元数据服务器.这是获取实例信息的最简单方法,基本上适用于任何编程语言或直接CURL.这是一个使用Requests的Python示例.
import requests
metadata_server = "http://metadata/computeMetadata/v1/instance/"
metadata_flavor = {'Metadata-Flavor' : 'Google'}
gce_id = requests.get(metadata_server + 'id', headers = metadata_flavor).text
gce_name = requests.get(metadata_server + 'hostname', headers = metadata_flavor).text
gce_machine_type = requests.get(metadata_server + 'machine-type', headers = metadata_flavor).text
Run Code Online (Sandbox Code Playgroud)
同样,你可能需要在这里做一些解析,但它真的很简单!
要获取您的实例名称,请从您的 VM 执行以下操作:
curl http://metadata.google.internal/computeMetadata/v1/instance/hostname -H Metadata-Flavor:Google
Run Code Online (Sandbox Code Playgroud)
并获取您的实例 ID:
curl http://metadata.google.internal/computeMetadata/v1/instance/id -H Metadata-Flavor:Google
Run Code Online (Sandbox Code Playgroud)
查看其他可用参数的文档:https : //cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata
| 归档时间: |
|
| 查看次数: |
3804 次 |
| 最近记录: |