terraform-provider-selectel icon indicating copy to clipboard operation
terraform-provider-selectel copied to clipboard

Проблема при работе с MX

Open max107 opened this issue 1 year ago • 4 comments
trafficstars

При попытке создания 2 MX для @ с конструкцией вида

resource "selectel_domains_rrset_v2" "mx_records" {
  zone_id    = selectel_domains_zone_v2.domain.id
  name       = "foobar.com."
  type       = "MX"
  ttl        = each.value.ttl
  project_id = var.project_id

  records {
    content  = "10 mx1.foobar.com."
    disabled = false
  }

  records {
    content  = "20 mx2.foobar.com."
    disabled = false
  }
}

получаем ошибку

error creating rrset: error response: this_rrset_is_already_exists. Description: this rrset is already exists.

image

Это баг в провайдере или я что-то делаю не так?)

max107 avatar Apr 16 '24 14:04 max107

После полного удаления зоны и ее пересоздания получаю следующее поведение:

plan и apply прошли успешно при условии что records были добавлены по одному, вначале mx1, потом mx2. В обоих случаях plan показал создание одного ресурса. В панели действительно видим 1 ресурс, когда ожидалось 2

image

max107 avatar Apr 16 '24 14:04 max107

Проект мертв?

max107 avatar May 08 '24 10:05 max107

@max107 В первом случае (при создании MX-записи) ошибка возникает так как такая ресурсная запись (RRSet) уже есть. Скорее всего надо было вначале импортировать RRSet.

Во втором случае (когда создается одна MX-запись) RRSet создается один, но должны быть две записи внутри. Я попробую воспроизвести ошибку и напишу о результатах

dchudik avatar May 13 '24 13:05 dchudik

@dchudik

В первом случае (при создании MX-записи) ошибка возникает так как такая ресурсная запись (RRSet) уже есть. Скорее всего надо было вначале импортировать RRSet.

Ошибка возникает если пытаться создать сразу 2 MX

Во втором случае (когда создается одна MX-запись) RRSet создается один, но должны быть две записи внутри.

Из-за ошибки в пп1 два MX в rrset невозможно создать, ругается на уже существующий

max107 avatar May 13 '24 21:05 max107

@max107 Вероятно Вы пытаетесь сделать две сущности RRSet для @ и выглядит это приблизительно так:

resource "selectel_domains_rrset_v2" "mx1_domain" {
  zone_id    = selectel_domains_zone_v2.myzone.id
  name       = "foobar.ru."
  type       = "MX"
  ttl        = 60
  project_id = var.project_id
  records {
    content  = "10 mx1.foobar.com."
    disabled = false
  }

  records {
    content  = "20 mx2.foobar.com."
    disabled = false
  }
}

resource "selectel_domains_rrset_v2" "mx2_domain" {
  zone_id    = selectel_domains_zone_v2.myzone.id
  name       = "foobar.ru."
  type       = "MX"
  ttl        = 60
  project_id = var.project_id
  records {
    content  = "30 mx3.foobar.com."
    disabled = false
  }

  records {
    content  = "40 mx4.foobar.com."
    disabled = false
  }
}

Верно Вас понял? Если нет, можете дать чуть больше информации? Насколько вижу для ttl используется конструкция each... вероятно Вы используете циклы, можете их включить тогда в пример?

В данном случае ошибка с конфликтом - ожидаемое поведение.

Если вам необходимо к зоне по одному и тому же адресу добавить несколько MX записей, то надо добавлять больше records. Пример:

resource "selectel_domains_rrset_v2" "mx1_domain" {
  zone_id    = selectel_domains_zone_v2.myzone.id
  name       = "foobar.ru."
  type       = "MX"
  ttl        = 60
  project_id = var.project_id
  records {
    content  = "10 mx1.foobar.com."
    disabled = false
  }

  records {
    content  = "20 mx2.foobar.com."
    disabled = false
  }

  records {
    content  = "30 mx3.foobar.com."
    disabled = false
  }

  records {
    content  = "40 mx4.foobar.com."
    disabled = false
  }
}

Данный пример запустился и в панели управления видно 4 записи. image

dchudik avatar May 15 '24 21:05 dchudik

Проверил с 5.1 релизнутой 6 часов назад, проблема отсутствует. Спасибо 🙏🏻

max107 avatar May 16 '24 16:05 max107