Я использую упаковщик с возможным помощником для создания ami и terraform для настройки инфраструктуры с помощью этого ami в качестве источника - несколько похожа на эту статью: http://www.paulstack.co.uk/blog/2016/01/02/building-an-elasticsearch-cluster-in-aws-with-packer-and-terraform
Когда команда packer build pack.json
завершается успешно, я получаю вывод ami id в этом формате:
eu-central-1: ami-12345678
В моих переменных terraform variables.tf
Мне нужно указать источник ami id, region и т.д. Проблема здесь в том, что я не хочу указывать их вручную или несколько раз. Для региона (который я знаю заранее) легко, так как я могу использовать переменные среды в обеих ситуациях, но как насчет выхода ami? Есть ли встроенный способ связать эти продукты или какой-то не такой хакерский подход, чтобы сделать это?
EDIT: Хакерный подход для всех, кто может быть заинтересован. В этом решении я grep
в области aws и ami из вывода пакета и использую регулярное выражение в perl для записи результата в файл terraform.tfvars
:
vars=$(pwd)"/terraform.tfvars"
packer build pack.json | \
tee /dev/tty | \
grep -E -o '\w{2}-\w+-\w{1}: ami-\w+' | \
perl -ne '@parts = split /[:,\s]+/, $_; print "aws_amis." . $parts[0] ." = \"" . $parts[1] . "\"\n"' > ${vars}