![Beim Erstellen einer compute.v1.instanceTemplate mit Deployment Manager tritt ein mysteriöser Fehler beim Fehlen eines Felds auf.](https://rvso.com/image/668046/Beim%20Erstellen%20einer%20compute.v1.instanceTemplate%20mit%20Deployment%20Manager%20tritt%20ein%20mysteri%C3%B6ser%20Fehler%20beim%20Fehlen%20eines%20Felds%20auf..png)
Ich versuche, compute.v1.instanceTemplate
mit dem Deployment Manager (v2) eins zu erstellen, erhalte jedoch die folgende Fehlermeldung:
Unexpected response from resource of type compute.v1.instanceTemplate: 400 {statusMessage=Bad Request, errors=[{message=Invalid value for field 'resource.properties': ''. Instance Templates must provide instance properties., domain=global, reason=invalid}]}
Ich nehme an, es beschwert sich über eine fehlende Eigenschaft, aber ich kann beim besten Willen nicht herausfinden, welche das sein könnte. Ich habe mir dieInstanzvorlagenRessource und dieErweiterte Bereitstellung Beispiele, und ich nichterscheinenetwas zu übersehen. Ich würde mich aber freuen, wenn mir das Gegenteil bewiesen würde.
Hier ist die vollständige Ressource, die mit erworben wurde gcloud deployment-manager deployments describe --log-http name
:
{
"id": "redacted",
"insertTime": "2015-10-03T05:13:33.325-07:00",
"updateTime": "2015-10-03T05:42:50.152-07:00",
"name": "tpl-redacted",
"type": "compute.v1.instanceTemplate",
"update": {
"manifest": "https://www.googleapis.com/deploymentmanager/v2/projects/project-redacted/global/deployments/redacted/manifests/manifest-redacted",
"error": {
"errors": [
{
"code": "RESOURCE_ERROR",
"location": "redacted/tpl-redacted",
"message": "Unexpected response from resource of type compute.v1.instanceTemplate: 400 {statusMessage=Bad Request, errors=[{message=Invalid value for field 'resource.properties': ''. Instance Templates must provide instance properties., domain=global, reason=invalid}]}"
}
]
},
"state": "FAILED",
"intent": "CREATE_OR_ACQUIRE",
"properties": "canIpForward: true\ndisks:\n- autoDelete: true\n boot: true\n deviceName: boot\n initializeParams:\n diskSizeGb: 10\n diskType: pd-standard\n sourceImage: https://www.googleapis.com/compute/v1/projects/project-redacted/global/images/redacted-image\n mode: READ_WRITE\n type: PERSISTENT\nmachineType: https://www.googleapis.com/compute/v1/projects/project-redacted/zones/asia-east1-c/machineTypes/g1-small\nnetworkInterfaces:\n- accessConfigs: []\n network: $(ref.nw-redacted.selfLink)\nscheduling:\n automaticRestart: true\n onHostMaintenance: MIGRATE\nserviceAccounts:\n- scopes:\n - storage-ro\ntags:\n items:\n - redacted\nzone: asia-east1-c\n",
"finalProperties": "canIpForward: true\ndisks:\n- autoDelete: true\n boot: true\n deviceName: boot\n initializeParams:\n diskSizeGb: 10\n diskType: pd-standard\n sourceImage: https://www.googleapis.com/compute/v1/projects/project-redacted/global/images/redacted-image\n mode: READ_WRITE\n type: PERSISTENT\nmachineType: https://www.googleapis.com/compute/v1/projects/project-redacted/zones/asia-east1-c/machineTypes/g1-small\nnetworkInterfaces:\n- accessConfigs: []\n network: https://www.googleapis.com/compute/v1/projects/project-redacted/global/networks/nw-redacted\nscheduling:\n automaticRestart: true\n onHostMaintenance: MIGRATE\nserviceAccounts:\n- scopes:\n - storage-ro\ntags:\n items:\n - redacted\nzone: asia-east1-c\n"
}
}
Und hier ist eine benutzerfreundlichere Version von finalProperties
:
canIpForward: true
disks:
- autoDelete: true
boot: true
deviceName: boot
initializeParams:
diskSizeGb: 10
diskType: pd-standard
sourceImage: https://www.googleapis.com/compute/v1/projects/project-redacted/global/images/redacted-image
mode: READ_WRITE
type: PERSISTENT
machineType: https://www.googleapis.com/compute/v1/projects/project-redacted/zones/asia-east1-c/machineTypes/g1-small
networkInterfaces:
- accessConfigs: []
network: https://www.googleapis.com/compute/v1/projects/project-redacted/global/networks/nw-redacted
scheduling:
automaticRestart: true
onHostMaintenance: MIGRATE
serviceAccounts:
- scopes:
- storage-ro
tags:
items:
- redacted
zone: asia-east1-c
compute.v1.instanceTemplate
Irgendwelche Ideen? Alternativ wären Beispiele erfolgreicher Bereitstellungen sehr willkommen.
Antwort1
Es stellte sich heraus, dass eines der erweiterten Bereitstellungsbeispiele tatsächlich eineBeispiel für die Verwendung von compute.v1.instanceTemplate. Statt eines zone
sollte die Ressource project
stattdessen ein angeben, was tatsächlich sinnvoller ist, obwohl es nirgends außer in diesem einen Beispiel dokumentiert zu sein scheint. Weniger sinnvoll ist jedoch, dass die eigentlichen Parameter der Instanzvorlage innerhalb vonein andererEigenschaftenobjekt. Ich bin nicht sicher, woher das kommt, aber hier ist meine endgültige funktionierende Jinja-Vorlage (beachten Sie, dass einige Felder ihre Standardwerte verwenden und eigentlich weggelassen werden könnten):
resources:
- name: {{ env["name"] }}
type: compute.v1.instanceTemplate
properties:
project: {{ env["project"] }}
properties:
machineType: {{ properties["machineType"] }}
canIpForward: true
scheduling:
automaticRestart: true
onHostMaintenance: MIGRATE
preemptible: false
tags:
items:
- redacted
disks:
- deviceName: boot
boot: true
autoDelete: true
mode: READ_WRITE
type: PERSISTENT
initializeParams:
diskSizeGb: 10
diskType: pd-standard
sourceImage: https://www.googleapis.com/compute/v1/projects/{{ env["project"] }}/global/images/redacted
networkInterfaces:
- network: $(ref.{{ properties["network"] }}.selfLink)
serviceAccounts:
- email: default
scopes:
- https://www.googleapis.com/auth/devstorage.read_only