[Discuss] I Hate Ubuntu
Mike Small
smallm at sdf.org
Wed May 9 08:40:38 EDT 2018
Richard Pieri <richard.pieri at gmail.com> writes:
> On 5/8/2018 4:32 PM, A. Richard Miller wrote:
>> Here, Rich, try this:
>> http://www.ubuntugeek.com/disable-netplan-on-ubuntu-17-10.html
>>
>> Then you can save your hate for more deserving targets.
>
> I think you're missing the point. Points.
>
> First, these Ubuntu installs are for product testing. For paying
> customers. Who won't be disabling Netplan. Which means disabling Netplan
> in the test environments DOES. NOT. HAPPEN.
>
> Second, the YAML version forces dependencies on NetworkManager, systemd,
> and a(nother) YAML parser without making management of network
> interfaces any better or easier by hand and only minimally by automation
> tools like Ansible.
>
> Netplan is vendor gratuitous changes and I will continue to hate Ubuntu
> for engaging in the practice.
These descriptions from https://netplan.io are a bit funny:
"The network configuration abstraction renderer
Netplan is a utility for easily configuring..."
abstraction renderer? Pfft. What's so abstract about network interfaces?
"Netplan reads network configuration from /etc/netplan/*.yaml which are
written by administrators, installers, cloud image instantiations, or
other OS deployments."
"The most useful configuration snippet (to bring up things via dhcp) is as follows:"
network:
version: 2
renderer: NetworkManager
Okay, and how does NetworkManager know to choose dhcp from that? Is
dhcp "version 2?" Probably not, eh? This maybe is the YAML "API" version
I'm going to guess.
Well then, aside from the problem of having to learn what YAML keys are
available or mandatory, and the unpleasantness of typing such things
vs. a well devised custom text format intuitively matching ifconfig (or
whatever command we're supposed to be using for that now on Linux, ip?),
or the near certainty that YAML will be considered passé in 5 years or
so and replaced with whatever the one true persistance format of the day
is, seems like we're not configuring anything here so much as telling
the system that we're using something else to configure the
interface.
Here's what the equivalent looks like on the machine I'm using right
now. urndis0 is the network interface device name for ethernet over USB
to my phone, which gives me my internet:
$ cat /etc/hostname.urndis0
dhcp
<<<<pause output for a moment >>>>
Plus I can do the thing below here in a way I think you all
can understand without reading OpenBSD docs, but for a normal
ethernet interface this isn't necessary. (Since I wrote that
comment below I found out that Android is smart enough to remember when
you pressed the USB tethering slider and somehow slide it over when OpenBSD
is ready for it, but it's still handy to have this for when I forget.)
<<<<rest of file>>>
# Without turning on USB Tethering at exactly the right time
# during boot, urndis0 won't be up and rl0 will instead become
# the default gateway. Undo that for when I manually restart networking
# for this interface.
!route del default 10.0.0.1
!route add default 192.168.42.129
<<the end>>
Here is the very difficult parsing code for that from /etc/netstart:
# Parse the hostname.if(5) file and fill _cmds array with interface
# configuration commands.
set -o noglob
while IFS= read -- _line; do
parse_hn_line $_line
done <$_hn
... and the relevant part of the case statement (all of parse_hn_line is
short enough to fit in one screen in case you doubt the other cases) in
parse_hn_line ...
dhcp) _c[0]=
_cmds[${#_cmds[*]}]="ifconfig $_if ${_c[@]} down;dhclient $_if"
V4_DHCPCONF=true
;;
'!'*) _cmd=$(print -- "${_c[@]}" | sed 's/\$if/'$_if'/g')
_cmds[${#_cmds[*]}]="${_cmd#!}"
;;
So it's not like everything that isn't xml, yaml, or json has to be some
horrendous journey into natural language parsing, like say...
https://lists.debian.org/debian-user/2018/02/msg00095.html
Now, I'm not saying I've lost enthusiasm for GNU/Linux in general, but
when you run the two systems side by side, you start to notice how the
people developing the non-GNU parts of Linux userland, or perhaps the
more influential ones, are from a quite different development culture
than the more tradional BSD one, and in a different way from how the GNU
people were/are. It reminds me more of the .NET developer culture, which
isn't a bad thing necessarily, but not always to my first preference,
what with the intimidating terminology like abstraction renderers,
provisioners, providers or what have you.
--
Mike Small
smallm at sdf.org
More information about the Discuss
mailing list