You might be surprised to see ifupdown creating a staging area for interfaces in /etc/network/interfaces.config.d. The interface definitions there following the Debian interfaces file format are then carried into the sourced /etc/network/interfaces.d/ directory. It even creates a dpkg diversion on the /etc/network/interfaces file to prevent changes on updates.
I venture to guess this approach is necessary to override existing configurations providing the connectivity. It's a delicate matter changing interfaces while connected to then reset networking without staging configurations.
Anyway this can get confusing for new users. Understanding how it works helps. Here's an issue post that explains the process a bit.
WARNING: Do not run the net/ifupdown PB or you'll bork the setup. Use the service/ifupdown playbook instead like so:
debops -l <server> --tags "role::ifupdown" service/ifupdownThis is required on the first run which sets up interfaces by phasing out what was already configured before by the debian installer or an administrator. It uses other roles to setup a few things required to get the interfaces setup up properly. After the initial setup minor interface modifications can be made rapidly to facilitate incremental testing like so:
debops service/ifupdown -t "role::ifupdown"The DebOps ifupdown role makes a few opinionated presumptions. According to @drybjed, when you have more than one network interface it presumes you'll be creating bridges to them to network virtual machines or containers. For performance and visibility (host to guest) we use macvlan in bridge mode and have machines tapping into it. Overriding the ifupdown__interfaces variable did not cut it. The bridges were created anyway.
Thanks to @drybjed marking the interfaces as absent did the trick:
---
# DHCP reservations on labnet: 10.1.1.{10..$vms_count}
ifupdown__interfaces:
- iface: 'eno1'
comment: 'Motherboard 1Gbps NIC: Lab Primary'
auto: True
type: 'ether'
inet: 'dhcp'
# Rather opinionated DebOps creates these bridges automatically
# Without removing them the networking gets borked: thanks @drybjed
- iface: 'br0'
state: 'absent'
- iface: 'br1'
state: 'absent'