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