计算引擎是Google Cloud提供的IaaS。它是一个强大的平台,可用于创建和管理虚拟机。但是,管理计算引擎可能是一项复杂的任务。在此博客文章中,我们将向您展示如何使用Python自动化计算引擎实例的管理。
设置您的环境
确保已安装Python和PIP。
安装
mac/linux
pip install virtualenv
virtualenv <your-env>
source <your-env>/bin/activate
<your-env>/bin/pip install google-cloud-compute
Windows
pip install virtualenv
virtualenv <your-env>
<your-env>\Scripts\activate
<your-env>\Scripts\pip.exe install google-cloud-compute
验证
用于身份验证,让我们创建一个服务帐户。
-
iam&admin->服务帐户
-
单击创建服务帐户。
现在,让我们生成一个可以在本地环境中使用的JSON密钥。
现在我们已经对身份验证进行了排序,让我们看一些代码!
创建一个新的VM实例
from google.cloud import compute_v1
import os
# Using os we are storing the service account json key in the variable
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]= "key.json"
INSTANCE_NAME = 'instance-name'
MACHINE_TYPE = 'projects/project-id/zones/us-west4-b/machineTypes/e2-medium'
SUBNETWORK = 'projects/project-id/regions/us-west4/subnetworks/default'
SOURCE_IMAGE = 'projects/project-id/global/images/ubuntu-2004-focal-v20230831'
NETWORK_INTERFACE = {
'subnetwork':SUBNETWORK,
'access_configs': [
{
'name':'External NAT'
}
]
}
compute_client = compute_v1.InstancesClient()
config = {
'name' : INSTANCE_NAME,
'machine_type' : MACHINE_TYPE,
'disks': [
{
'boot': True,
'auto_delete': True,
'initialize_params': {
'source_image': SOURCE_IMAGE,
}
}
],
'network_interfaces' : [NETWORK_INTERFACE]
}
print("Creating instace.....")
operation = compute_client.insert(
project='project-id',
zone='us-west4-b',
instance_resource=config
)
operation.result()
print(f'Created VM Instance:{INSTANCE_NAME}')
导入的模块:
-
koude0
.compute_v1
:此模块为Google Cloud Compute Engine API提供客户库。 -
os
:此模块提供了对操作系统功能的访问。
这是代码的工作方式:
-
将环境变量
GOOGLE_APPLICATION_CREDENTIALS
设置为包含Google Cloud Service帐户凭据的JSON文件的路径。 -
定义以下变量:
* `INSTANCE_NAME`: The name of the instance to create.
* `MACHINE_TYPE`: The machine type of the instance to create.
* `SUBNETWORK`: The subnetwork of the instance to create.
* `SOURCE_IMAGE`: The image to use for the instance.
* `NETWORK_INTERFACE`: The network interface of the instance to create.
-
创建一个
InstancesClient
类的实例。此类提供用于管理Google计算引擎实例的方法。 -
创建一个名为
config
的字典。该字典包含用于创建实例的配置。 -
调用
InstancesClient
类的insert()
方法。此方法创建实例。 -
等待操作完成。
-
打印创建的实例的名称。
如果您不确定像MACHINE_TYPE
或SOURCE_IMAGE
这样的参数,则可以参考Google Cloud Console。
-
计算引擎 - > VM实例
-
单击创建实例。
-
根据您选择参数。
完成后,单击右上角的等效代码选项,然后选择REST
在这里您可以看到所有可用的参数,并且可以根据自己的要求选择。
列出所有VM实例
from google.cloud import compute_v1
from collections import defaultdict
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]= "key.json"
instace_client = compute_v1.InstancesClient()
request = compute_v1.AggregatedListInstancesRequest()
request.project = 'project-id'
agg_list = instace_client.aggregated_list(request=request)
all_instances = defaultdict(list)
print("Instances found:")
for zone, response in agg_list:
if response.instances:
all_instances[zone].extend(response.instances)
print(f" {zone}:")
for instance in response.instances:
print(f" - {instance.name} ({instance.machine_type}) {instance.status}")
导入的模块:
-
collections.defaultdict
:该模块提供了一个默认数据结构,这是一个词典,其中默认值设置为指定值。
这是代码的工作方式:
-
将环境变量
GOOGLE_APPLICATION_CREDENTIALS
设置为包含Google Cloud Service帐户凭据的JSON文件的路径。 -
创建一个
InstancesClient
类的实例。此类提供用于管理Google计算引擎实例的方法。 -
创建一个
AggregatedListInstancesRequest
类的实例。此类代表列出Google Compute Engine实例的请求。 -
设置项目ID的项目ID,其中包含列表的实例。
-
调用
InstancesClient
类的aggregated_list()
方法。此方法列出了指定项目中的实例。 -
创建一个名为
all_instances
的字典。该词典将用于存储找到的实例。 -
迭代
aggregated_list()
方法的响应。 -
对于响应中的每个区域,将该区域中的实例添加到
all_instances
字典中。 -
在
all_instances
字典中打印每个实例的名称,机器类型和状态。
这是输出的样子。我已经打印了实例名称,机器类型和状态,但是您可以从all_instances
字典中打印实例的每个属性。
启动和停止VM实例
from google.cloud import compute_v1
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]= "key.json"
compute_client = compute_v1.InstancesClient()
operation = compute_client.stop(
project='project-id',
zone='us-west4-b',
instance='python-instance'
)
operation.result()
print("Instace Stopped!")
这很简单。您只需要提供的是项目ID,区域和实例名称。
-
创建一个
InstancesClient
类的实例。此类提供用于管理Google计算引擎实例的方法。 -
调用
InstancesClient
类的stop()
方法。此方法停止实例。
同样适用于启动实例。而不是停止,您必须使用开始方法休息是相同的。
from google.cloud import compute_v1
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]= "key.json"
compute_client = compute_v1.InstancesClient()
operation = compute_client.start(
project='project-id',
zone='us-west4-b',
instance='python-instance'
)
operation.result()
print("Instace Started!")
删除VM实例
from google.cloud import compute_v1
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]= "key.json"
compute_client = compute_v1.InstancesClient()
operation = compute_client.delete(
project='project-id',
zone='us-west4-b',
instance='instance-name'
)
operation.result()
print("Instace deleted successfully!")
删除也具有与启动或停止相同的逻辑。
-
创建一个
InstancesClient
类的实例。此类提供用于管理Google计算引擎实例的方法。 -
调用
InstancesClient
类的delete()
方法。此方法删除实例。
此博客中提到的所有代码均可在GitHub上获得
pratikkalein / GCP-Python
Google Cloud Compute Engine上的Python操作代码
这就是关于如何使用Python管理VM实例的全部。让我知道您的想法,或者如果我错过了评论中的某些内容。
谢谢您的阅读!
与我联系: