sbercloud-terraform / terraform-provider-sbercloud

Terraform SberCloud Provider
https://registry.terraform.io/providers/sbercloud-terraform/sbercloud/latest/docs
Mozilla Public License 2.0
34 stars 21 forks source link

Parameter Error while creating RDS-postgres instance with database #285

Closed JV-777 closed 2 months ago

JV-777 commented 6 months ago

Добрый день.

При первичном создании RDS (postgres), сталкиваемся со следующей проблемой при создании БД (huaweicloud_rds_pg_database) -

Error: error creating RDS PostgreSQL database: Bad request with:......
error message: {"error_msg":"Parameter error","error_code":"DBS.200001"}

Других деталей ошибки, к сожалению, нет.

Если я повторю план, то в логе увижу, что единственный ресурс к созданию - это база данных. При повторном apply все успешно создается.

При детальном рассмотрении лога apply, видно, что все остальные ресурсы - RDS(sbercloud_rds_instance), replicas(sbercloud_rds_read_replica_instance), users (huaweicloud_rds_pg_account) уже созданы, так что не похоже, что дело в том, что, к примеру, owner не создан до создания бд.

Versions

Terraform =1.0.3
Sbercloud =1.8.1
Huaweicloud =1.58.0
BurMachine commented 5 months ago

Добрый день, пришлите пожалуйста ваш манифест

JV-777 commented 5 months ago

Добрый день. Мы используем модуль, код приведен ниже

resource "sbercloud_rds_instance" "this" {
  name                = var.name
  subnet_id           = var.subnet_id
  vpc_id              = var.vpc_id
  fixed_ip            = var.fixed_ip != "" ? var.fixed_ip : null
  public_ips          = null
  security_group_id   = var.security_group_id
  flavor              = var.flavor
  availability_zone   = var.availability_zone
  ha_replication_mode = can(regex(".ha$", var.flavor)) ? var.ha_replication_mode : null
  param_group_id      = var.param_group_id != "" ? var.param_group_id : null
  time_zone           = var.time_zone != "" ? var.time_zone : null
  charging_mode       = var.charging_mode
  auto_renew          = var.auto_renew
  tags                = length(var.tags) > 0 ? var.tags : null

  db {
    type     = var.db_type
    version  = var.db_version
    password = random_password.this.result
  }

  volume {
    type = var.disk_type_id
    size = var.disk_size
  }

  backup_strategy {
    start_time = var.backup_start_time
    keep_days  = var.backup_keep_days
  }

  timeouts {
    create = lookup(var.timeouts, "create", "45m")
    update = lookup(var.timeouts, "update", "45m")
  }

  depends_on = [
    random_password.this,
  ]
}

resource "sbercloud_rds_read_replica_instance" "this" {
  for_each = local.read_replicas

  primary_instance_id = sbercloud_rds_instance.this.id
  name                = each.value["name"]
  flavor              = lookup(each.value, "flavor", "")
  availability_zone   = each.value["availability_zone"]
  tags                = var.tags

  volume {
    type = var.disk_type_id
  }

  timeouts {
    create = lookup(var.timeouts, "create", "45m")
    delete = lookup(var.timeouts, "delete", "45m")
  }

}

resource "random_password" "users" {
  for_each         = local.users
  length           = 32
  special          = each.value["password_special"]
  override_special = each.value["password_override_special"]
  keepers          = each.value["password_serial"] > 0 ? { serial = each.value["password_serial"] } : {}
  min_lower        = each.value["min_lower"]
  min_upper        = each.value["min_upper"]
  min_numeric      = each.value["min_numeric"]
}

resource "huaweicloud_rds_pg_account" "this" {

  for_each = local.users

  instance_id = sbercloud_rds_instance.this.id
  name        = each.value["name"]
  password    = random_password.users[each.value["name"]].result
}
resource "huaweicloud_rds_pg_database" "this" {

  for_each = local.databases

  instance_id   = sbercloud_rds_instance.this.id
  name          = each.value["name"]
  owner         = each.value["owner"]
  character_set = each.value["character_set"]
  lc_collate    = each.value["lc_collate"]
  lc_ctype      = each.value["lc_ctype"]
}
BurMachine commented 2 months ago

Добрый день, при использовании провайдера cloud совместно с huaweicloud могут возникать ошибки из-за внутренних конфликтов, с которыми мы не можем помочь.