ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Ubuntu Server 18.04でNetwork Managerを使う

Ubuntu Server 18.04ではネットワーク周りの機能としてNetplan.ioが使われています(正確にいうと、Ubuntu 17.10から利用されるようになりました)。それに依存して主にネットワーク系はsystemd-networkdが、名前解決関連はsystemd-resolvedが行なっています。

ただし、Ubuntu DesktopフレーバーではNetplan.ioが使われているものの、引き続きNetwork Managerがネットワーク、名前解決周りを担当しています。Ubuntu Desktopではこういった設定のみかかれており、ネットワーク設定などは既存のNetwork Manager GUICLI、TUIなどを使って設定することができます。

Netplan.ioを使ったネットワーク設定の方法はサンプルが公開されているものの、設定はYAML形式で書く必要があります。 こちらもご覧ください。

ytooyama.hatenadiary.jp blog.ubuntu.com

割と最近のツールはYAML形式のファイルをよく使うことがあり、YAML形式に慣れている人であれば問題ないかもしれませんが、慣れていない人にはとっつきにくさを感じると思います。

このとっつきにくさの1番の理由が「スペースの数」だと思います。YAML形式の記述方法はスペースで設定の親、子の関係を表します。大抵は偶数(最小で2つ)のスペースを入力していきます。例えばこんな感じです。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
     addresses:
       - 10.100.1.30/24
     gateway4: 10.100.1.1

YAML形式で記述されたファイルを使う場合は、基本的にはスペースの数が正しくないと設定を適用することができません。 これがいわゆる「YAMLの壁」です。慣れてしまえば大したことはないですが、慣れるまでが大変です。

で、今回は「そんなの嫌だ!Network Managerを使ってやる!」という話です。

Ubuntu Server 18.04でNetwork Managerを使うには

前述のように、Ubuntu Desktop 18.04ではNetwork Managerを使っていますので、Ubuntu Server 18.04でも同じように設定すれば良い感じです。次のように設定すると「Netplan.ioをNetwork Manager rendererで利用する」設定を行えます。

% sudo vi /etc/netplan/50-cloud-init.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
(以上の三行だけ書く)

% sudo apt install network-manager && sudo reboot
(Network Managerを入れて再起動する)

% sudo nmtui
(IPアドレスの設定をCLIとかTUIツールとかで実施)

以上です。簡単ですね。

ただ、アプリケーションによってはNetwork Managerだと困るものがあります。身近なところだとOpenStackとか。 そういうものは頑張ってNetplan.io+systemd-networkdで頑張りましょう。というか、次のOpenStackはUbuntu 18.04LTSでやることになるだろうから、どうするのかな。ネットワーク周り。

おまけ: 少しでもNetplan.io+systemd-networkdをラクに設定する

Ubuntu Server 18.04ではインストーラーが刷新され、Live Server Installerが提供されています。このインストーラーはデフォルトでIPアドレスの設定をインストール時にできるので、あらかじめ固定IPアドレスを設定してしまえばYAMLをいじる必要がなくなるのでいいんじゃないかなと思います。定義すればYAMLファイルの雛形ができるので、IPアドレスをちょっと書き換えたりとかもラクになるはずです。

f:id:ytooyama:20180720002151p:plain

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。