Как использовать импорт terraform с конфигурацией ресурса - PullRequest
0 голосов
/ 29 февраля 2020

До импорта terraform я определил:

# instance.tf

resource "aws_instance" "appserver" {

}

Затем я запустил: terraform import aws_instance.appserver <instance-id> и прошел гладко, что я могу увидеть импортированный ресурс ec2 с помощью terraform show. Однако для меня загадка состоит в том, чтобы «перенести» это существующее состояние terraform в конфигурацию terraform (instance.tf выше), чтобы я мог управлять им как инфраструктурой как кодом (или, по крайней мере, так, как я его понял). Я добавил ключи ami и instance_type и их соответствующие значения, но каждый раз, когда я выдаю terraform plan, terraform, похоже, хочет «заменить» мой существующий экземпляр.

1) Почему terraform хочет заменить этот экземпляр?

2) Как я могу "передать" состояние terraform экземпляра в конфигурацию? (возможно ли это?)

3) Ребята, бывалые ветераны, как вам удалось управлять существующей инфраструктурой aws в terraform?

1 Ответ

1 голос
/ 29 февраля 2020

Прежде всего, terraform хочет заменить ваш экземпляр, потому что terraform не выполнил ожидаемой «связи» между конфигурацией ресурса и текущим существующим экземпляром.

Официальная документация Terraform: (https://www.terraform.io/docs/import/index.html)

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

Из-за этого перед запуском импорта terraform необходимо вручную написать блок конфигурации ресурса для ресурса, которому будет сопоставлен импортируемый объект.

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

Поняв вышеизложенное, я бы использовал следующие шаги:

  1. Сначала , напишите свою конфигурацию ресурса terraform. Должно выглядеть так:

    resource "aws_instance" "example" {
         # ...instance configuration...
    }
    
  2. terraform import aws_instance.example i-abcd1234, чтобы импортировать существующую инфраструктуру в ваше состояние и присоединить ее к конфигурации ресурса, которую вы создали выше. .

Подробный источник для более: https://www.terraform.io/docs/import/usage.html

...