# Managed by pxe_server_setup.yml (vars pxe_nic_mac, corp_nic_mac, # pxe_nic_name, corp_nic_name, pxe_server_ip, pxe_subnet). Local edits are # replaced on the next playbook run; the previous file is kept under # /var/backups/netplan-/. # {% if corp_nic_mac %} # Two NICs, each matched by MAC and given a stable name: # pxe-lan imaging LAN, static, no gateway, no DNS. The ONLY NIC that # serves DHCP/TFTP/HTTP boot/SMB. ignore-carrier: the address # is put on (and kept) without link, so a switch that is off # or a cable pulled at boot does not leave dnsmasq, Samba and # Apache without {{ pxe_server_ip }} (networkd # ConfigureWithoutCarrier= + IgnoreCarrierLoss=). # ge-corp GE corporate network, DHCP client (SSH + webapp 9009, updates). {% else %} # The imaging NIC pinned by MAC, every other wired port a DHCP client: # pxe-lan imaging LAN, matched by MAC and given a stable name. Static, # no gateway, no DNS. The ONLY NIC that serves DHCP/TFTP/HTTP # boot/SMB. ignore-carrier: the address is put on (and kept) # without link, so a switch that is off or a cable pulled at # boot does not leave dnsmasq, Samba and Apache without # {{ pxe_server_ip }} (networkd ConfigureWithoutCarrier= + # IgnoreCarrierLoss=). # zz-en, zz-eth every other wired port: DHCP client, so the GE cable # can go into any of them, at install or later. No set-name. # networkd applies the first matching .network file in name # order: 10-netplan-pxe-lan sorts before 10-netplan-zz-*, and # {{ pxe_nic_name }} does not look like en*/eth* (the playbook # checks), so the imaging NIC never falls into these. dnsmasq # never serves them (interface= pins it to {{ pxe_nic_name }}), # and a drop-in makes them ignore offers from {{ pxe_server_ip }}. {% endif %} network: version: 2 renderer: networkd ethernets: pxe-lan: match: macaddress: "{{ pxe_nic_mac | lower }}" set-name: {{ pxe_nic_name }} dhcp4: false dhcp6: false ignore-carrier: true optional: true addresses: - {{ pxe_server_ip }}/{{ pxe_prefix }} {% if corp_nic_mac %} ge-corp: match: macaddress: "{{ corp_nic_mac | lower }}" set-name: {{ corp_nic_name }} dhcp4: true dhcp4-overrides: route-metric: {{ corp_route_metric }} {% else %} {% for id, glob in [('zz-en', 'en*'), ('zz-eth', 'eth*')] %} {{ id }}: match: name: "{{ glob }}" dhcp4: true dhcp6: false optional: true dhcp4-overrides: route-metric: {{ corp_route_metric }} {% endfor %} {% endif %}