#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.