EC2で169.254.169.254にアクセスしようとしたらできなくて焦った

EC2でUbuntu 19.04を動かしている話。
curl http://169.254.169.254/latest/meta-data/public-ipv4 を叩いて自動割り当てされたパブリックIPv4アドレスを取得しようとしたら no route to host
で、起動後に急いで journalctl -xef でログを眺めると connmand とか言うのが動いていて、dockerのvethにリンクローカルアドレスを勝手に設定していた。
どうやら ConnMan とかいうやつらしい。

Ubuntu、 ConnMannetplanNetworkManager が同時に動いていてキモい。
Canonicalの開発陣はバカしかいないのか?

ConnManを昇天させるために、sysytemd-networkdに乗り換える。

/etc/systemd/network/eth.network

[Match]
Name=en*

[Network]
DHCP=ipv4

を作成して、

sudo systemctl enable systemd-networkd

でsystemd-networkdを有効化しておく。

sudo apt remove lxcfs lxd netplan.io network-manager

で一旦余計なものを消してから、

sudo apt remove connman

を行う。
このとき、なぜかsshが切れるので、1分くらい待ってからEC2のコントロールパネルで再起動をかける。

 ❯ ip route
default via 10.0.8.1 dev ens5 proto dhcp src 10.0.8.126 metric 1024 
10.0.8.0/24 dev ens5 proto kernel scope link src 10.0.8.126 
10.0.8.1 dev ens5 proto dhcp scope link src 10.0.8.126 metric 1024 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1

 ❯ curl http://169.254.169.254/latest/meta-data/public-ipv4
3.112.XXX.XXX

めでたしめでたし