Google Deployment Manager-数据库创建失败

时间:2019-07-17 09:42:00

标签: google-cloud-platform google-cloud-sql google-deployment-manager

我正在尝试使用Google Deployment Manager创建一个CloudSQL实例和两个数据库。我无法在两个数据库都成功创建的情况下进行可靠的首次部署。取而代之的是,每次我运行它时,一个(或两个!)都失败,状态为“ FAILED_PRECONDITION”,错误消息为“ Bad Request”,并且没有关于哪个先决条件失败或如何解决的进一步说明。 。有没有其他人以前遇到过这个问题,或者对我如何找到问题有任何线索?

{{ SQL_NAME }}等属性都定义在我的jinja模板的顶部,但是为了清楚起见,我省略了它们。

resources:
- name: {{ SQL_NAME }}
  type: sqladmin.v1beta4.instance
  properties:
    backendType: SECOND_GEN
    instanceType: CLOUD_SQL_INSTANCE
    region: {{ properties["region"] }}
    databaseVersion: {{ properties["dbType"] }}
    settings:
      tier: db-n1-standard-1
      dataDiskSizeGb: 10
      dataDiskType: PD_SSD
      storageAutoResize: true
      replicationType: SYNCHRONOUS
      locationPreference:
        zone: {{ properties['zone']}}
      ipConfiguration:
        privateNetwork: {{ properties["network"] }}

- name: {{ DB_NAME }}
  type: sqladmin.v1beta4.database
  properties:
    name: db1
    instance: $(ref.{{ SQL_NAME }}.name)
    charset: utf8
    collation: utf8_general_ci
  metadata:
    dependsOn:
    - {{ SQL_NAME }}

- name: {{ DB2_NAME }}
  type: sqladmin.v1beta4.database
  properties:
    name: db2
    instance: $(ref.{{ SQL_NAME }}.name)
    charset: utf8
  metadata:
    dependsOn:
    - {{ SQL_NAME }}

- name: {{ USER_NAME }}
  type: sqladmin.v1beta4.user
  properties:
    name: dbroot
    host:  "%"
    instance: $(ref.{{ SQL_NAME }}.name)
    password: {{ properties['password'] }}
  metadata:
    dependsOn:
    - {{ SQL_NAME }}

2 个答案:

答案 0 :(得分:0)

因此,我找到了答案。事实证明,与我遇到此问题时相比,Google对错误消息的帮助甚至更少。似乎是什么(我仍然没有具体证据表明这是前提,但以下似乎可以解决这个问题)是,您不能在同一CloudSQL上同时创建两个数据库实例,Deployment Manager尝试这样做,因为它们都仅依赖于CloudSQL实例本身。我通过在每个连续资源上添加依赖项来解决了这个问题:

- name: {{ DB_NAME }}
  type: sqladmin.v1beta4.database
  properties:
    name: db1
    instance: $(ref.{{ SQL_NAME }}.name)
    charset: utf8
    collation: utf8_general_ci
  metadata:
    dependsOn:
    - {{ SQL_NAME }}

- name: {{ DB2_NAME }}
  type: sqladmin.v1beta4.database
  properties:
    name: db2
    instance: $(ref.{{ SQL_NAME }}.name)
    charset: utf8
  metadata:
    dependsOn:
    - {{ SQL_NAME }}
    - {{ DB_NAME }}

- name: {{ USER_NAME }}
  type: sqladmin.v1beta4.user
  properties:
    name: dbroot
    host:  "%"
    instance: $(ref.{{ SQL_NAME }}.name)
    password: {{ properties['password'] }}
  metadata:
    dependsOn:
    - {{ SQL_NAME }}
    - {{ DB2_NAME }}

答案 1 :(得分:0)

顺便说一句,我的同事今天才发现,从右行开始,将backendType显式设置为SECOND_GEN并将databaseVersion显式设置为MYSQL_5_6也会产生400错误。您可以在控制台中使用此组合。这是最近的API中断。只是抬起头来。