2016-11-01 16 views
2

Я предоставляю инфраструктуру AWS, используя terraform, и хочу передавать переменные, такие как aws_subnet_id и aws_security_id в незанятую книгу, используя vars_file (не знаю, есть ли какой-либо другой способ). Как я могу это сделать?Как передать terraform выходы переменные в unsible как vars_files?

ответ

0

Используйте терраформировать выходы - https://www.terraform.io/intro/getting-started/outputs.html (не ясно, если вы используете его уже)

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

Другой вариант - использовать шаблоны террафорт и визуализировать ваши файлы, такие как файлы инвентаря, из самого террафа, а затем использовать его из Ansible.

1

Я настоятельно рекомендую этот скрипт. Он хорошо работает и поддерживается Cisco и обеспечит вам большую гибкость.

https://github.com/CiscoCloud/terraform.py

+0

Это хорошо! Не знал, что он существует. – dguaraglia

1

терраформировать выходы вариант, или вы можете просто использовать что-то вроде: в

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.

или вы можете использовать выходы терраформирования .... ваши предпочтения ....

 Смежные вопросы

  • Нет связанных вопросов^_^