Я предоставляю инфраструктуру AWS, используя terraform, и хочу передавать переменные, такие как aws_subnet_id
и aws_security_id
в незанятую книгу, используя vars_file
(не знаю, есть ли какой-либо другой способ). Как я могу это сделать?Как передать terraform выходы переменные в unsible как vars_files?
ответ
Используйте терраформировать выходы - https://www.terraform.io/intro/getting-started/outputs.html (не ясно, если вы используете его уже)
Затем с помощью команды, как terraform output ip
, вы можете использовать эти значения в сценариях для создания или заполнить другие файлы, такие как инвентаризации файлов или vars_file.
Другой вариант - использовать шаблоны террафорт и визуализировать ваши файлы, такие как файлы инвентаря, из самого террафа, а затем использовать его из Ansible.
Я настоятельно рекомендую этот скрипт. Он хорошо работает и поддерживается Cisco и обеспечит вам большую гибкость.
терраформировать выходы вариант, или вы можете просто использовать что-то вроде: в
Provisioner { команда "локального Exec" = "ANSIBLE_HOST_KEY_CHECKING = \" False \»анзибль-Playbook -u $ {var.ssh_user} --private-key = \ "~/.ssh/id_rsa \" --extra-vars = '{"aws_subnet_id": $ {aws_terraform_variable_here}, "aws_security_id": $ {aws_terraform_variable_here}} '-i' $ {azurerm_public_ip.pnic.ip_address}, 'ansible/deploy-with-ansible.yml'
или вы можете сделать вещь sed ... как местный про Visioner, чтобы обновить файл var.
или вы можете использовать выходы терраформирования .... ваши предпочтения ....
Это хорошо! Не знал, что он существует. – dguaraglia