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

85 lines
4.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Импортирование ресурсов в terraform позволяет привести в соответствие состояние terraform (.tfstate) к состоянию ресурса в платформе.
Необходимость такого приведения возникает в нескольких случаях:
- Ресурс был создан через портал платформы, работа продолжается через terraform провайдер,
- Ресурс был создан через terraform провайдер, однако был изменен через портал платформы,
- Ресурс был создан через terraform провайдер, однако был изменен другим пользователем через terraform провайдер,
- И так далее
Такие расхождения в состоянии ресурсов нередки, путей их решения несколько:
- Использовать импортирование ресурсов,
- Использовать общие файлы состояний ресурсов, к которым будут иметь доступ все участники, занятые в работе с платформой.
В текущем разделе рассматривается первый вариант.
## Импортирование ресурсов
Импортирование ресурсов позволяет совершить запрос к платформе, чтобы сформировать файл состояния.
Чтобы совершить импортирование ресурсов необходимо ввести сл. команду:
```bash
terraform import <resource-name>.<resource-variable> <resource-id>
```
или использовать блок
```terraform
import {
to = decort_disk.disk
id = "9"
}
```
А замтем команду
```bash
terraform apply
```
## Пример
Предположим, что у нас ресурс, описывающий диск:
```terraform
resource "decort_disk" "disk" {
account_id = 121212
disk_name = "mySuperDisk"
size_max = 100500
}
```
Если запустить команду:
```bash
terraform apply
```
То у нас будет создан новый диск.
Но, такой диск уже есть на площадке и мы хотели бы сформировать .tfstate для этого ресурса.
Поэтому, для начала, необходимо получить список дисков:
```terraform
data "decort_disk_list" "dl"{
}
output "test" {
value = data.decort_disk_list.dl
}
```
В полученных данных необходимо найти требуемый диск, получить его id - параметр disk_id. Пусть это будет - 777777
Теперь можно выполнить импортирование:
```bash
terraform import decort_disk.disk 777777
```
Команда должна успешно завершиться, появиться файл состояний, который позволит манипулировать ресурсом.
## Ошибки при импортировании
При импортировании ресурса могут возникнуть подобные ошибки:
```bash
Error: <field-name>: required field is not set
```
или
```bash
Error: Missing required argument
```
Ошибка возникает в том случае, если в описании ресурса отсутствует обязательное поле.
Например:
```terraform
resource "decort_disk" "disk" {
account_id = 121212
size_max = 100500
}
```
В приведенном выше описании отсутствует поле disk_name, поэтому, при попытке импортирования возникнет ошибка.
Для ее устранения, необходимо выполнить запрос на получение списка дисков, найти недостающее поле, после чего добавить его в описание ресурса.
После этого повторить попытку импортирования.
> При использовании импорта через команду `terraform import` задание всех необходимых параметров может сразу не потребоваться, однако при попытке обновления ресурса обязательные поля все равно должны быть заполнены.