Поделиться через


Как работает экспорт Azure для Terraform

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

Интерактивный режим

По умолчанию Служба экспорта Azure для Terraform выполняется в интерактивном режиме. При запуске в интерактивном режиме доступные сочетания клавиш отображаются в нижней части экрана.

Задача Сочетания клавиш
Переходы
Выберите предыдущий элемент в списке ресурсов. ^ - или- k
Выберите следующий элемент в списке ресурсов. -или- j
Перейдите на предыдущую страницу в списке ресурсов. ← -или- h -or- Page Up
Перейдите на следующую страницу в списке ресурсов. → -или- l -или- Page Down
Перейдите к началу списка ресурсов. g -or- Home
Перейдите к концу списка ресурсов. G -или- End
Выбор ресурсов для пропуска
Пропустить ресурс (или отменить его, если помечается как "Пропустить") Удалить
Операции фильтрации
Определите фильтр по тексту в списке ресурсов. /
Очистка любого текущего фильтра Esc
Операции сохранения
Сохраните файл сопоставления списка ресурсов. Выходной файл влияет на пропуск (но не фильтрация). s
Экспорт ресурсов в состояние (если --hcl-only он не указан) и создает конфигурацию. w
Возможности для пользователя
Отображение рекомендаций для текущего ресурса. r
Отображение ошибок экспорта ресурсов (при наличии). e
Отображение справки. ?
Бросить
Закройте интерактивный режим. к

Для каждого ресурса служба "Экспорт Azure для Terraform" пытается распознать соответствующий тип ресурса Terraform. Если он находит совпадение, строка помечается следующим индикатором: 💡

Если ресурс не удается устранить, необходимо ввести адрес ресурса Terraform в следующей форме: <resource type>.<resource name> Например, azurerm_linux_virtual_machine.test относится к типу ресурсов Terraform azurerm_linux_virtual_machine , а test имя виртуальной машины, используемой в файлах конфигурации.

Чтобы просмотреть доступные типы ресурсов для выбранного ресурса, нажмите клавишу R.

В некоторых случаях существуют ресурсы Azure, у которых нет соответствующих ресурсов Terraform, например, если ресурс не поддерживает Terraform. Некоторые ресурсы также могут быть созданы в качестве побочных эффектов подготовки другого ресурса, например ресурса диска ОС, созданного при подготовке виртуальной машины. В таких случаях ресурсы можно пропустить, не назначая ничего.

После импорта всех ресурсов нажмите клавишу W , чтобы начать создание конфигурации Terraform и (если --hcl-only не выбрано) импорт в состояние Terraform.

Неинтерактивный режим

По умолчанию Служба экспорта Azure для Terraform выполняется в интерактивном режиме. Чтобы указать, что средство должно работать в неинтерактивном режиме, укажите --non-interactive флаг.

aztfexport [command] --non-interactive <scope>

Важно!

Если каталог, в котором выполняется экспорт Azure для Terraform, не пуст, необходимо добавить --overwrite флаг для использования флага --hcl-only .

Рекомендации по основным рабочим процессам

На базовом уровне любой пользователь службы "Экспорт Azure" сталкивается с решением между двумя вариантами:

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

Управление инфраструктурой

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

Если вы уверены, что хотите управлять набором ресурсов в Terraform с terraform init plan apply рабочими процессами, экспорт в состояние является важным.

Если вы еще не уверены, что хотите управлять ресурсами, рекомендуется передать --hcl-only флаг.

Существующая инфраструктура

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

Команда terraform apply приравнивается к экспорту ресурсов, во время которых их конфигурация связывается с существующим состоянием. В этом сценарии использование файла сопоставления экономит время выполнения для перечисления и сопоставления ресурсов.

Обнаружение инфраструктуры

Если вы не уверены, какие ресурсы существуют в среде, можно проверить, указав --generate-mapping-file флаг. Дополнительные сведения об этой теме см. в статье "Изучение выбора настраиваемых ресурсов и именования с помощью экспорта Azure для Terraform".

Ограничения

Экспорт Azure для Terraform — это сложное средство, которое пытается преобразовать инфраструктуру Azure в код Terraform и состояние. Его текущие известные ограничения описаны в следующих подразделах.

Свойства только для записи

Некоторые свойства в AzureRM доступны только для записи и не включаются в созданный код, создаваемый Службой экспорта Azure для Terraform. Проблема устранена путем определения свойства после экспорта в код HCL.

Ограничения между свойствами

Поставщик AzureRM может задать два свойства, конфликтующие друг с другом. Если служба "Экспорт Azure для Terraform" считывает конфликтующие свойства, оба свойства могут быть одинаковыми, несмотря на то, что пользователь настраивает только один. Дальнейшие осложнения возникают, когда в одной и той же созданной конфигурации существуют несколько ограничений между свойствами. Чтобы устранить эту проблему, необходимо знать, где существуют конфликты между свойствами в конфигурации.

Инфраструктура вне область ресурсов

При использовании экспорта Azure для Terraform для целевых область ресурсов ресурсы, необходимые для конфигурации, могут существовать вне указанного область. Одним из примеров является назначение роли. Пользователь должен определить ресурсы, которые находятся за пределами область.

Свойства только для записи

Экспорт Azure не может создавать свойства только для записи (например, пароли) в конфигурации. Необходимо знать о свойствах, доступных только для записи, и определить их в конфигурации, чтобы создать новые наборы ресурсов.

Изменение кода в соответствии со стандартами кодирования

Существует несколько необходимых операций, если пользователь хочет изменить свой код в соответствии со стандартами кодирования. Эти действия потребуются только в том случае, если пользователь планирует использовать код в средах, отличных отandbox.

Ресурсы, определяемые свойством

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

Явные зависимости

Экспорт Azure для Terraform в настоящее время может объявлять только явные зависимости. Необходимо знать сопоставление связей между ресурсами для рефакторинга кода для включения любых необходимых неявных зависимостей.

Жестко запрограммированные значения

Экспорт Azure для Terraform в настоящее время создает жестко закодированные строки. Рекомендуется рефакторинг этих значений в переменные. Кроме того, при использовании флага --full-properties для предоставления всех свойств некоторые конфиденциальные сведения (например, секреты) можно увидеть в созданной конфигурации. Используйте рекомендуемые методики для защиты видимости этого кода.

Следующие шаги