Циклическая зависимость между Packer и Terraform для нестандартного VPC

В моем рабочем процессе развертывания сначала создается ami с помощью Packer, а затем выполняется развертывание с помощью Terraform.

У меня есть класс EC2, который был создан до 2013 года, поэтому VPC по умолчанию не настроен.

Когда я запускаю packer build packer.json, инструмент жалуется, что

    amazon-ebs: Adding tag: "Name": "Packer Builder"
==> amazon-ebs: Error launching source instance: VPCResourceNotSpecified: The specified instance type can only be used in a VPC. A subnet ID or network interface ID is required to carry out the request.
==> amazon-ebs:     status code: 400, request id: 35ca5736-f808-4bb9-9a34-3dca24b59259

Я планировал создать VPC с Terraform. Итак, вопрос в том, каков порядок исполнения? Сначала запустите Terraform, затем Packer. Или запустить в обратном порядке? Или мы разделяем конфигурацию сети (VPC), используем Terraform для ее развертывания один раз, затем Packer, а затем терраформируем остальные серверы?

Обновление: если я использую стратегию: запустите сетевой модуль (в основном статические элементы), затем Packer, а затем запустите модуль «Часто меняющиеся элементы», как мне поделиться состоянием между Terraform и Packer? Это означает, что после создания нового VPC, как я могу сообщить Packer об этом новом vpc_id? Нужно ли мне изменять каждый файл Packer?


person janetsmith    schedule 31.03.2018    source источник


Ответы (1)


Общий совет - разделить конфигурацию терраформы на части разумного размера.

Для небольшой настройки разумно разделить ее на в основном статические (VPC, подсеть, маршруты и т. Д.). Часто меняющиеся вещи (EC2, SG и т. д.). Это также решит ваш цикл зависимости.

person Rickard von Essen    schedule 31.03.2018
comment
Спасибо, что ответили на мой вопрос. Как в общих ресурсах TF и ​​Packer указано, что я создал новый VPC? - person janetsmith; 02.04.2018
comment
Не уверен, что понимаю, у Пакера нет штата? - person Rickard von Essen; 02.04.2018
comment
Например, после создания новой подсети vpc & с Terraform я получил новые vpc_id и subnet_id. Как передать эту информацию в json-файл Packer? - person janetsmith; 04.04.2018
comment
См. Аргументы var и var-file команды build. packer.io/docs/commands/build.html - person Rickard von Essen; 04.04.2018