output "vms_by_provider" { value = { for providername in local.vm_providers: providername => { for hostname, host in local.vms_with_provider: hostname => var.vms[hostname] if host.provider == providername } } } output "ansible_inventory" { value = { all = { hosts = { for hostname,host in var.vms: hostname => {} } children = merge( { for group in local.vm_groups: group => { hosts = { for hostname, host in local.vms_with_groups: hostname => {} if contains(host.groups,group) } } },{ for providername in local.vm_providers: "provider_${providername}" => { hosts = { for hostname, host in local.vms_with_provider: hostname => var.providers_hostvars[host.provider][hostname] if host.provider == providername } } } ) } } }