オプションのマウントターゲットからnetplanスクリプトをロードする

オプションのマウントターゲットからnetplanスクリプトをロードする

私はアルファベット順に後続のファイルの構成をオーバーライドするnetplanの機能を利用しようとしていますが、そのファイルが別のマウントポイントから来ると、すべてが失敗します。

/etc/netplan/01-primary.yamlいくつかのインターフェイスを含む仮想マシンを作成し、/etc/netplan/02-local.yaml(デフォルトでは「dhcpを使用」)などのファイルを使用して合理的なデフォルトを設定しました。その部分は素晴らしい作品です。しかし、私が達成したいことは任意に選択できるドライブマウント。

そのために、/etc/fstab次の内容を含むマウントポイントを追加しました。

/dev/vdb /mnt/config ext4 defaults,nofail,x-systemd.device-timeout=10,x-systemd.before=systemd-networkd.service 0 0

次に、/etc/netplanそのポイントを指すシンボリックリンクを新しい設定ファイルに追加しますln -s /mnt/config/netplan/11-primary.yaml /etc/netplan/11-primary.yaml

最初の問題は、ドライブが存在せずマウントされていない場合、起動時にNetplanビルド全体が失敗し、インターフェイスがないことです。エラーレポートnetplanへの不足しているシンボリックリンクについて)。私は単に/mnt/config。実行しnetplan generatenetplan apply起動すると、すべてのインターフェイスが正しく設定されます。

私はさまざまなx-systemd.before目標を試してみましたが、そのうちの何も動作しませんでした。正しく機能させる方法はありますか?マウントを構成せずに仮想マシンを起動できるように、マウント構成はオプションでなければなりません。

答え1

私は今日この問題に苦しんでおり、これまでに2つの主な解決策を決定しました。

  1. cronを使用して実行しますnetplan applyが、@reboot方法があるようです。警告が多すぎます。それに付いています。
  2. インストール後に実行するsystemdデバイスを作成しますnetplan apply

私はシステム単位のファイルであるオプション2を選択しました。

[Unit]
Description=Execute netplan apply after mount
After=multi-user.target mnt.mount

[Service]
Type=oneshot
ExecStart=/bin/sh -c "netplan apply"

[Install]
WantedBy=multi-user.target

以下に保存し/etc/systemd/system/network-after-mount.serviceて続行してくださいsystemctl enable network-after-mount。テストのために再起動してください。

/mnt/私たちの場合、追加のnetplan設定ファイルを含む内部USBスティックが以下にインストールされています。ドライブが別のパスにマウントされると、結果のシステムインストールデバイスの名前が異なるように指定されます。インストール単位を一覧表示できます。

systemctl list-units --type=mount

そしてどちらが正しい目標かを決定します。

関連情報