Terraform Planning для удаления ресурсов при планировании изменений - PullRequest
0 голосов
/ 05 сентября 2018

В настоящее время у меня есть каталог terraform, который выглядит следующим образом:

└── aws
    ├── iam
    │   └── iam.tf
    ├── services
    │   └── services.tf
    └── vpc.tf

Бэкэнд S3, и мы используем рабочие пространства. Я использую одно и то же рабочее пространство и конфигурацию сервера для каждой конфигурации tf.

Шаги, которые я выполняю:

  1. terraform init в каталоге / aws.
  2. Выбрать рабочее пространство
  3. terraform apply
  4. vpc.tf ресурсы успешно созданы.
  5. cd ~ / aws / services
  6. terraform init и выберите одно и то же рабочее пространство

Когда я делаю terraform plan для ~/aws/services/services.tf, план показывает, что ресурсы services.tf будут созданы, но он также удалит все ресурсы, ранее созданные vpc.tf.

То же самое происходит, если я перехожу на ~/aws/iam и пытаюсь набрать terraform plan для iam.tf. План показывает, что ресурсы будут созданы, но ресурсы VPC будут удалены.

Нет созданных ресурсов или изменений, которые потребовали бы удаления / воссоздания / изменения ресурсов VPC.

Разве я не должен использовать один и тот же ключ рабочего пространства / бэкэнда для этих файлов?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Когда запускается terraform, он создает свой график зависимостей из всех файлов * .tf только в текущем каталоге. Поэтому, когда вы запускаете terraform apply в своем каталоге aws/iam, terraform не видит ваш файл vpc.tf. Однако, когда terraform проверяет файл состояния сервера s3, он видит ресурсы vpc; поскольку эти ресурсы отсутствуют в графе зависимостей, он помечает их для уничтожения. Из-за этого поведения обычной практикой является использование отдельного файла состояния бэкэнда для каждого отдельного каталога. Это отделяет компоненты от «стеков» или слоев вашей инфраструктуры.

Простая раскладка внутренних ключей должна иметь файл состояния для каждого каталога. то есть имеют различные s3 внутренние ключи aws/iam/terraform.tfstate, aws/services/terraform.tfstate и aws/vpc/terraform.tfstate. Или что-то в этом роде. Эта настройка, позволит, что вы собираетесь; чтобы иметь возможность создавать, изменять и / или удалять ресурсы службы, не затрагивая ресурсы vpc.

0 голосов
/ 06 сентября 2018

Итак, я думаю, что проблема заключалась в том, что я имел в виду один и тот же файл состояния в каждом из моих файлов * .tf. Создание разных файлов для каждого * .tf, похоже, решило проблему.

Если это не лучшая практика или если есть способ записи в один файл состояния, пожалуйста, дайте мне знать.

...