google-cloud-platform - Google 部署管理器 - 数据库创建失败

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

我正在尝试使用 Google 部署管理器创建一个 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 }}

最佳答案

所以,我找到了答案。事实证明,谷歌对他们的错误消息的帮助甚至比我遇到这个问题时想象的还要少。它似乎是(我仍然没有具体证据表明这是先决条件,但下面似乎解决了它)是你不能在同一个 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 }}

关于google-cloud-platform - Google 部署管理器 - 数据库创建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57072940/

相关文章:

postgresql - 使用 .pgpass 从远程服务器 dblink 到 Google Cloud SQL 实例

google-cloud-platform - 如何在使用 triggerTopic 创建云功能时设置 pubsub 消息过滤器

google-cloud-platform - 如果资源不存在,谷歌部署管理器会创建资源吗?

google-cloud-platform - 如何使用 Deployment Manager 将 IAM 策略设置为 Cloud Function

google-cloud-platform - 如何从数据流工作线程签署 gcs blob

mysql - 无法连接到 Google Cloud SQL 上的 MySQL 副本,除非将其提升为主数据库

google-app-engine - 从 App Engine 到 Cloud SQL 的流量是通过互联网还是 Google 内部网络传输的?

firebase - Firestore REST API |如何将 firestore Rest api 与 postman 一起使用

java - 使用 Google pub/sub 更新单例 HashMap

android - 解析与谷歌云