使用部署管理員建立compute.v1.instanceTemplate時出現神秘的缺失欄位錯誤

使用部署管理員建立compute.v1.instanceTemplate時出現神秘的缺失欄位錯誤

我嘗試compute.v1.instanceTemplate使用部署管理器 (v2) 建立一個,但出現以下錯誤:

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}]}

我想它是在抱怨一件財產遺失了,但我怎麼也想不出那可能是哪一件。我已經看了一下實例模板資源和進階部署 例子,而我不似乎缺少任何東西。不過,我很高興被證明是錯的。

這是透過以下方式取得的完整資源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"
 }
}

這是一個更人性化的版本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我們將非常感謝成功部署的範例。

答案1

事實證明,其中一個高級部署範例確實具有compute.v1.instanceTemplate 用法範例zone資源應該指定 a而不是 a project,這確實更有意義,儘管除了該範例之外,它似乎沒有在任何地方記錄。不過,不太明智的是,實際的 instanceTemplate 參數放置在內部其他屬性對象。不確定這是從哪裡來的,但這是我最終的工作 jinja 模板(請注意,某些字段正在使用其預設值,實際上可以省略):

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

相關內容