- hosts: localhost gather_facts: no connection: local vars_files: - ../group_vars/all/ipam.yml collections: - ansible.utils tasks: - name: Generate terraform/ipam6/ipam6.tf register: tf copy: dest: ../../terraform/ipam6/ipam6.tf content: | output "networks" { value = { {% for name, network in ipam6.networks.items() %} {% if not (network.range | ansible.utils.ipv6) %} Invalid network: {{ network.range }} {% endif %} {{ name }} = { {% if network.description|default("") %} description = "{{ network.description }}" {% endif %} range = "{{ network.range }}" address = "{{ network.range|ansible.utils.ipaddr("network") }}" prefix = "{{ network.range|ansible.utils.ipaddr("prefix") }}" {% set hosts = network.hosts|default({}) %} hosts = { {% for name, addr in hosts.items() %} {{ name }} = { address: "{{ addr|ansible.utils.ipaddr("address") }}" prefix: "{{ addr|ansible.utils.ipaddr("prefix") }}" } {% endfor %} } } {% endfor %} } } output "hosts" { value = { {% for name, network in ipam6.networks.items() %} {% set hosts = network.hosts|default({}) %} {% for name, addr in hosts.items() %} {{ name }} = { address: "{{ addr|ansible.utils.ipaddr("address") }}" prefix: "{{ addr|ansible.utils.ipaddr("prefix") }}" } {% endfor %} {% endfor %} } } - shell: terraform fmt ../../terraform/ipam6/ipam6.tf when: "tf.changed"