- hosts: localhost gather_facts: no connection: local vars_files: - ../group_vars/all/ipam.yml tasks: - set_fact: content: | {% set hosts = [] %} {% for nw_name, network in ipam6.networks.items() %} {% for host, address in (network.hosts|default({})).items() %} {{- hosts.append({'name': host, 'address': address}) -}} {% endfor %} {% endfor %} # Generated from ansible data {% for h in hosts|sort(attribute='name') %} resource "linode_domain_record" "dn42-{{ h.name }}" { domain_id = linode_domain.root.id name = "{{ h.name }}.dn42" record_type = "AAAA" target = "{{ h.address|ansible.utils.ipv6('address') }}" } {% endfor %} - debug: msg: "{{ content }}" when: false - name: Generating ../../terraform/dns/dn42.tf register: tf copy: dest: ../../terraform/dns/dn42.tf content: "{{ content }}" - shell: terraform fmt ../../terraform/ipam6/ipam6.tf when: "tf.changed"