Как запустить ansible playbook в kmv, созданном с помощью terraform - PullRequest
0 голосов
/ 20 июня 2020

После того, как я создал виртуальную машину с terraform, я хочу запустить ansible playbook, который устанавливает сервер лампы в виртуальной машине, созданной с помощью поставщика kvm, в том же файле .tf, но я не знаю IP-адрес новой виртуальной машины до тех пор, пока Бегу: virsh net-dhcp-leases default. Я хочу добавить в конец tf-файла такой код, который выполняет playbook в той же виртуальной машине, созданной:

provisioner “local-exec” {
 command = “ansible-playbook -u ubuntu -i ‘variable that specify the ip of created vm’ main.yml”
 }

спасибо

1 Ответ

0 голосов
/ 13 июля 2020

Самый простой способ: IP-адреса присваиваются через некоторое время после создания виртуальной машины в KVM (если dhcp), поэтому я рекомендую запускать все в сценарии оболочки.

в TF-скрипте добавить модуль вывода (получить IP-адреса )

output "ips" {
  # show IP, run 'terraform refresh' if not populated
  value = libvirt_domain.domain-ubuntu.*.network_interface.0.addresses
}

сценарий оболочки:

terraform apply
#sleep to wait for IPs(if dhcp)
sleep 30
#fetch IPs
terraform refresh | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' >> hosts
ansible-playbook -u ubuntu -i hosts
...