Terraform postgres импорт не выполнен - PullRequest
0 голосов
/ 22 апреля 2020

Привет! Я импортирую ресурс, но он не работает. Я не уверен, в чем проблема. Может кто-нибудь указать мне, как исправить эту ошибку.

Я попытался, установив sslmode = "require", получил ту же ошибку. у меня ssl on в базе данных и force.ssl off

Terraform провайдер v0.12.20

. aws провайдер v2.58.0. postgresql v1.5.0 Ваша версия Терраформ устарел! Последняя версия

Мой модуль: locals.tf:

pgauth_dbs = var.env == "prod" ? var.prod_dbs : var.stage_dbs

variables.tf

variable "stage_dbs" {
  type    = list(string)
  default = ["host_configs", "staging", "staging_preview"]
}

Поставщик

provider "postgresql" {
  version = ">1.4.0"
  alias            = "pg1"
  host             = aws_db_instance.name.address
  port             = aws_db_instance.name.port
  username         = var.username
  password         = var.master_password
  expected_version = aws_db_instance.name.engine_version 
  sslmode          = "disable"
  connect_timeout  = 15
}

модуль:

 resource "postgresql_database" "pgauth_dbs" {
  provider = postgresql.pg1
  for_each = toset(local.pgauth_dbs)
  name     = each.value
  owner    = "postgres"
}

Root -Модуль:

  module rds {
      source = ../../../../tf_module_rds
      username          = "postgres"
      master_password   = data.aws_kms_secrets.secrets_password.plaintext["password"]
      engine_version    = "11.5"
      instance_class    = "db.m5.xlarge"
      allocated_storage = "300"
      storage_type      = "gp2"    
}

terraform import module.rds.postgresql_database.name_dbs[“host_configs”] host_configs

module.rds.postgresql_database.name_dbs[“host_configs”]: Importing from ID “host_configs”…
module.rds.postgresql_database.name_dbs[“host_configs”]: Import prepared!
Prepared postgresql_database for import
module.rds.postgresql_database.name_dbs[\“host_configs”\]: Refreshing state… [id=host_configs]

Error: could not start transaction: pq: no PostgreSQL user name specified in startup packet

1 Ответ

0 голосов
/ 23 апреля 2020

Поставщик должен указать имя пользователя экземпляра, а не переменную

provider "postgresql" {
  version = ">1.4.0"
  alias            = "pg1"
  host             = aws_db_instance.name.address
  port             = aws_db_instance.name.port
  username         = aws_db_instance.name.username
  password         = aws_db_instance.name.password
  database         = aws_db_instance.name.name
  expected_version = aws_db_instance.name.engine_version 
  sslmode          = "disable"
  connect_timeout  = 15
}
...