Intereting Posts
Устройство Centos / dev / sdb1 не является допустимым устройством luks? Почему setuid не работает? Быстрое туннелирование ssh X в локальной защищенной сети Исправлены растровые шрифты urxvt Блокировка при приостановке с LightDM Если Linux является только kernelм, то как использовались его первые версии (без распространения)? Переменные оболочки в цикле for cron – готовая к производству альтернатива Как удалить строку с переменным поиском с помощью команды sed Удалить последний символ строки, используя строковое манипулирование в сценарии оболочки Как получить gnome-терминал на английском языке? Почему Linux настолько хорошо масштабируется для разных аппаратных платформ? tar целую вложенную папку и один файл из другой подпапки, сохраняя структуру каталогов? Cent OS 6.3 Скрытые файлы в оболочке Как переместить загрузчик с жесткого диска на USB-накопитель

Загрузка сценариев 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 в /etc/netplan которые указывают на новые файлы конфигурации, такие как ln -s /mnt/config/netplan/11-primary.yaml /etc/netplan/11-primary.yaml .

Моя первая проблема заключалась в том, что, если диск отсутствует и смонтирован, во время загрузки происходит сбой генерации всего сетевого плана, и я остаюсь без каких-либо интерфейсов (я выпустил отчет об ошибке по отсутствующим символическим ссылкам на сетевой план). Мне удалось преодолеть эту проблему, просто создав необходимую структуру каталогов с пустыми файлами в /mnt/config . Однако даже при наличии диска netplan не видит эти файлы во время загрузки. Если я запускаю netplan generate и netplan apply после загрузки, все интерфейсы настраиваются правильно.

Я пробовал много разных целей x-systemd.before но ни одна из них не работает. Есть ли способ заставить это работать правильно? Конфигурационное монтирование должно быть необязательным, чтобы виртуальная машина могла загружаться без нее.

Я боролся с этим сегодня, и я определил два основных решения для этого:

  1. Используйте cron для запуска netplan apply на @reboot но, похоже, к нему прикреплено слишком много предупреждений .
  2. Создайте netplan apply модуль для запуска netplan apply после монтирования.

Я выбираю вариант 2, и вот файл systemd:

 [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. Если вы подключите диск по другому пути, сгенерированный системный модуль монтирования будет иметь другое имя. Вы можете перечислить модули монтирования с

 systemctl list-units --type=mount 

и определить, какой из них является правильным для цели.