我有一个python模板,如下所示,用于计算实例类型以及其他所需的config.yaml文件。
...
CONTROLLER_MACHINE_TYPE='n1-standard-8'
controller_template = {
'name': 'controller-it',
'type': 'it_template.py',
'properties': {
'machineType': CONTROLLER_MACHINE_TYPE,
'dockerImage': CONTROLLER_IMAGE,
'dockerEnv': {
'ADC_LISTEN_QUEUE': 'controller-subscriber'
},
'zone': ZONE,
'network': NETWORK_NAME,
'saEmail': SA_EMAIL
}
}
it_template.py内容
def GenerateConfig(context):
resources = [{
'name': context.env['name'],
'type': 'compute.v1.instanceTemplate',
'properties': {
'zone': context.properties['zone'],
'properties': {
"machineType": context.properties['machineType'],
"metadata": {
"items": [{
"key": 'gce-container-declaration',
"value": GenerateManifest(context)
}]
}, ...
我已经使用名为qa的环境部署了它。过了一段时间后,我意识到我需要更改此实例的机器类型。对于例如而不是n1-standard-8,我希望我的qa环境更新此资源的机器类型。
但是我没有看到任何提及更新任何资源属性的例子。
我们可以使用gcp Deployment Manager更新环境中资源的属性吗? 或者我需要添加一个具有其他名称和所需机器类型属性的新资源?
更新
正如@jordi Miralles所建议的,我修改了我的模板,使machineType为n1-standard-16,并尝试更新部署。
但是我得到了以下错误
cloud deployment-manager deployments update qa --config dm_config.yaml
The fingerprint of the deployment is KkD38j9KYiBTiaIW8SltbA==
Waiting for update [operation-1525444590548-56b623ef1b421-b4733efd-53174d1b]...failed.
ERROR: (gcloud.deployment-manager.deployments.update) Error in Operation [operation-1525444590548-56b623ef1b421-b4733efd-53174d1b]: errors:
- code: NO_METHOD_TO_UPDATE_FIELD
message: No method found to update field 'properties' on resource 'controller-it'
of type 'compute.v1.instanceTemplate'. The resource may need to be recreated with
the new field.
请帮忙。
答案 0 :(得分:0)
您可以更新Deployment Manager中的资源,如果要更改资源,则无需创建具有不同名称的新资源。见updating a deployment
您可以将现有部署yaml文件与要应用的更改一起使用,然后更新现有部署:
gcloud deployment-manager deployments update [EXISTING DEPLOYMENT] --config [UPDATED YAML]
请注意您的实例必须已停止。对changing machine type的所有其他影响都适用。此外,任何永久磁盘上的数据都不会丢失。
请记住在更新完成后打开实例!