--- # Self identify and load config - this allows the playbook to run on either # localhost or a remote host - name: store MAC address for eth0 set_fact: my_macaddr: "{{ hostvars[inventory_hostname].ansible_eth0.macaddress }}" when: "inventory_hostname == 'localhost' and 'ansible_eth0' in hostvars[inventory_hostname]" tags: - raspi - sw - sshd - motd # Raspberry Pi Zero W has no eth0, so fall back to wlan0 - name: store MAC address for wlan0 set_fact: my_macaddr: "{{ hostvars[inventory_hostname].ansible_wlan0.macaddress }}" when: "inventory_hostname == 'localhost' and my_macaddr is not defined" tags: - raspi - sw - sshd - motd # for model A, we cannot proceed because there is no mac address - name: load raspberry pi configuration (local mode) include_vars: file: "../../../host_vars/{{ macaddrs[my_macaddr] }}" name: myconfig when: inventory_hostname_short == 'localhost' tags: - raspi - sw - sshd - motd - name: load raspberry pi configuration (remote mode) set_fact: myconfig: "{{ hostvars[inventory_hostname_short] }}" when: "inventory_hostname_short != 'localhost'" tags: - raspi - sw - sshd - motd - debug: msg: "loaded configuration for {{ myconfig.hostname }}" - assert: that: "{{ myconfig|length > 0 }}"