# Make expensive lookups to NetBox once for later reference by any host. - when: lookup("env", "NETBOX_API") != "" block: - name: Lookup networks and prefixes set_fact: vlans: '{{ query("netbox.netbox.nb_lookup", "vlans", api_filter="group=new-net", raw_data=true) | sort(attribute="vid") }}' prefixes: '{{ query("netbox.netbox.nb_lookup", "prefixes", raw_data=true) | sort(attribute="prefix") | sort(attribute="family.value") }}' - when: 'cluster is defined and not is_virtual' block: - name: Get my cluster and all nodes in it set_fact: cluster: '{{ query("netbox.netbox.nb_lookup", "clusters", raw_data=true, api_filter="name="+cluster) | first }}' nodes: '{{ groups["cluster_"+cluster] | map("extract", hostvars) | rejectattr("is_virtual") }}' - name: Get cluster services set_fact: cluster_services: '{{ (cluster_services|default([])) + query("netbox.netbox.nb_lookup", "services", raw_data=true, api_filter="id="+item) }}' loop: '{{ cluster.custom_fields.services | map(attribute="id") | map("string") }}' - name: Fetch passwords set_fact: password: '{{ lookup("passwordstore", ("vm/" if is_virtual else "host/")~inventory_hostname, returnall=true, missing="empty") | from_yaml }}'