You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
terraform-provider-decort/wiki/4.9.0/05.01-Импортирование-ресурс...

4.6 KiB

Импортирование ресурсов в terraform позволяет привести в соответствие состояние terraform (.tfstate) к состоянию ресурса в платформе.
Необходимость такого приведения возникает в нескольких случаях:

  • Ресурс был создан через портал платформы, работа продолжается через terraform провайдер,
  • Ресурс был создан через terraform провайдер, однако был изменен через портал платформы,
  • Ресурс был создан через terraform провайдер, однако был изменен другим пользователем через terraform провайдер,
  • И так далее

Такие расхождения в состоянии ресурсов нередки, путей их решения несколько:

  • Использовать импортирование ресурсов,
  • Использовать общие файлы состояний ресурсов, к которым будут иметь доступ все участники, занятые в работе с платформой. В текущем разделе рассматривается первый вариант.

Импортирование ресурсов

Импортирование ресурсов позволяет совершить запрос к платформе, чтобы сформировать файл состояния.
Чтобы совершить импортирование ресурсов необходимо ввести сл. команду:

terraform import <resource-name>.<resource-variable> <resource-id> 

или использовать блок

import {
  to = decort_disk.disk
  id = "9"
}

А замтем команду

terraform apply

Пример

Предположим, что у нас ресурс, описывающий диск:

resource "decort_disk" "disk" {
  account_id  = 121212
  disk_name = "mySuperDisk"
  size_max    = 100500
}

Если запустить команду:

terraform apply

То у нас будет создан новый диск.
Но, такой диск уже есть на площадке и мы хотели бы сформировать .tfstate для этого ресурса. Поэтому, для начала, необходимо получить список дисков:

data "decort_disk_list" "dl"{

}
output "test" {
  value = data.decort_disk_list.dl
}

В полученных данных необходимо найти требуемый диск, получить его id - параметр disk_id. Пусть это будет - 777777
Теперь можно выполнить импортирование:

terraform import decort_disk.disk 777777

Команда должна успешно завершиться, появиться файл состояний, который позволит манипулировать ресурсом.

Ошибки при импортировании

При импортировании ресурса могут возникнуть подобные ошибки:

Error: <field-name>: required field is not set

или

Error: Missing required argument

Ошибка возникает в том случае, если в описании ресурса отсутствует обязательное поле. Например:

resource "decort_disk" "disk" {
  account_id  = 121212
  size_max    = 100500
}

В приведенном выше описании отсутствует поле disk_name, поэтому, при попытке импортирования возникнет ошибка.
Для ее устранения, необходимо выполнить запрос на получение списка дисков, найти недостающее поле, после чего добавить его в описание ресурса. После этого повторить попытку импортирования.

При использовании импорта через команду terraform import задание всех необходимых параметров может сразу не потребоваться, однако при попытке обновления ресурса обязательные поля все равно должны быть заполнены.