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-dynamix/wiki/1.2.0/05.01-Импортирование-ресурс...

4.4 KiB

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

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

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

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

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

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

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

Пример

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

resource "dynamix_disk" "disk" {
  account_id  = 121212
  gid         = 3333
  disk_name = "mySuperDisk"
  size_max    = 100500
}

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

terraform apply

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

data "dynamix_disk_list" "dl"{

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

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

terraform import dynamix_disk.disk 777777

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

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

При импортировании ресурса может возникнуть сл. ошибка:

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

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

resource "dynamix_disk" "disk" {
  account_id  = 121212
  gid         = 3333
  size_max    = 100500
}

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

Общий алгоритм устранения ошибок

  1. Выполнить запрос импортирования
  2. В случае ошибки - внести недостающие поля.
  3. Повторить п.1.