resource "local_file" "ansible_inventory" { filename = "${path.module}/inventory.ini" file_permission = "0644" content = <<-EOT [all:vars] ansible_ssh_extra_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' private_ip_caddy='${gridscale_server.server_caddy.network[1].auto_assigned_ip}' private_ip_monitoring='${gridscale_server.server_monitoring.network[1].auto_assigned_ip}' [caddy] ${var.caddy_hostname} ansible_host=${gridscale_ipv4.public_ipv4.ip} ansible_user=root [monitoring] ${var.monitoring_hostname} ansible_host=${gridscale_ipv4.public_ipv4_monitoring.ip} ansible_user=root EOT } resource "null_resource" "ansible_provisioner" { depends_on = [ local_file.ansible_inventory, gridscale_server.server_caddy, gridscale_server.server_monitoring ] provisioner "local-exec" { # Added 60 seconds delay for the servers to boot up command = "sleep 60 && uv run ansible-playbook -i ${local_file.ansible_inventory.filename} playbook.yml" } }