Как заставить terraform автоматически импортировать все «уже существующие» ресурсы?

#azure #terraform #terraform-provider-azure

#azure #terraform #terraform-provider-azure

Вопрос:

При запуске terraform apply -auto-approve я получаю следующую ошибку:

 Error: A resource with the ID "/subscriptions/.../resourceGroups/RG-SCUSTFStorage" already exists - to be managed via Terraform this resource needs to be imported into the State. Please see the resource documentation for "azurerm_resource_group" for more information.
  

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

Есть ли какой-либо способ terraform import автоматически импортировать все «уже существующие» ресурсы без ввода идентификаторов ресурсов по одному за раз?

Ответ №1:

К сожалению, вы можете импортировать существующие ресурсы только один за другим с идентификаторами ресурсов вручную:

Однако команда import автоматически не генерирует конфигурацию для управления инфраструктурой. Из-за этого импорт существующей инфраструктуры в Terraform представляет собой многоступенчатый процесс.

Подробнее здесь. Я предлагаю вам использовать удаленное хранилище состояний для всех сценариев Terraform перед развертыванием. Если у вас нет файла состояния, который содержит все развернутые ресурсы, вы можете импортировать их только один за другим.

Ответ №2:

Если вы хотите импортировать ресурсы Azure, то рекомендуемым инструментом является aztfy, поскольку он изначально из Azure.

Он генерирует код terraform, кроме того, у него есть функция, с помощью которой вы можете импортировать группу ресурсов Azure, она автоматически импортирует и генерирует конфигурацию для ресурсов, которые содержит группа ресурсов. Не говоря уже о том, что инструмент предоставляет вам приятный пользовательский интерфейс на основе терминала.

Для других гиперскейлеров есть два варианта.

  • terracognita: также может генерировать модули в соответствии с их документами.
  • terraformer: разработан сотрудниками Google, но не является официальным продуктом.

Ответ №3:

В Terraform нет встроенного способа импортировать уже существующие ресурсы, однако есть несколько доступных инструментов, которые позволяют не только импортировать ресурсы, но и генерировать для них код Terraform, если он еще не существует.

Для Azure лучшим инструментом является встроенный в Azure AZtfy. Инструмент для передачи существующих ресурсов Azure под управление Terraform.

Другим инструментом, который можно использовать для импорта ресурсов Azure, является Google Cloud Terraformer, который поддерживает Azure.