netplan: использование через командную строку (без ручного редактирования этого надоедливого файла yaml)?

Вопрос или проблема

Похоже, что netplan — это будущее, но по сравнению с этой простой командой:

ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up

это гораздо больше работы, чем редактирование этого раздражающего yaml-файла (парсер yaml кажется технологией 20-летней давности…).

Кто-то знает хороший инструмент для изменения конфигурации netplan, просто используя командную строку?

Оказывается, теперь существуют CLI-инструменты для netplan, чтобы редактировать конфигурации. Они были добавлены с https://github.com/canonical/netplan/pull/163 в сентябре 2020 года.

netplan set — это тот инструмент.

Используйте netplan get, чтобы вывести вашу конфигурацию.

К сожалению, этот инструмент очень плохо задокументирован, его возможности описаны только в man-странице – https://manpages.ubuntu.com/manpages/impish/man8/netplan-set.8.html

netplan set [key=value] записывает заданную пару ключ/значение или поддерево YAML в файл YAML в
       /etc/netplan/ и проверяет его формат.

       Вы можете указать одно значение как: "[network.]ethernets.eth0.dhcp4=[1.2.3.4/24,
       5.6.7.8/24]" или полное поддерево как: "[network.]ethernets.eth0={dhcp4: true, dhcp6: true}".

Есть более широкий набор примеров в тестах: https://github.com/canonical/netplan/blob/main/tests/test_cli_get_set.py

Ищите строки self._set.

Для вашего конкретного примера:

ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up

вы бы использовали

netplan set ethernets.eth0.addresses=[192.168.1.1/24]

Это обновит соответствующую конфигурацию в /etc/netplan (в отличие от ifconfig, который никогда не изменял конфигурацию загрузки, только runtime).

Вы бы продолжили с netplan try и netplan apply, чтобы обновить вашу работающую систему из сохраненной конфигурации.

Вы можете прочитать больше документации, какая есть, на https://netplan.io/

Команда ifconfig все еще существует в Ubuntu, но между тем, что предназначено для ifconfig и netplan, нет эквивалентности. ifconfig — это инструмент для изменения текущего состояния интерфейса в системе. netplan — это инструмент для постоянного управления конфигурацией сети на системе.

Если вы знаете, как настраивать свои сетевые интерфейсы с помощью серии команд ifconfig, вы можете добавить unit systemd или init-скрипт, чтобы запускать их при загрузке, но это будет менее хорошо интегрировано с загрузкой системы, чем использование netplan.

В настоящее время нет инструментов командной строки для редактирования конфигурации netplan.

Вы можете найти эту страницу полезной:

https://p5r.uk/blog/2010/ifconfig-ip-comparison.html

Например:

ip addr add 192.168.0.77/24 broadcast 192.168.0.255 dev eth0

По ответу Кина, я сделал элементарную документацию для netplan set.

Вы используете ., чтобы углубиться в дерево yaml.

Пример: netplan set ethernets.eth0.nameservers.addresses=[1.1.1.1]

netplan set ethernets.eth0.addresses=[192.168.1.2/24]

соответствует

network:
  version: 2
  ethernets:
    eth0:
      addresses:
      - "192.168.1.2/24"
      nameservers:
        addresses:
        - 1.1.1.1
        search: []

Чтобы установить поле как пустое, используйте ключевое слово null:

Пример: netplan set ethernets.eth0.addresses=null

Мне еще предстоит выяснить, как настроить nameservers с этим…

Ответ или решение

Netplan — это современный инструмент для управления сетевыми конфигурациями в операционных системах на базе Linux, который заменяет более традиционные методы, такие как использование ifconfig. Несмотря на мнение некоторых пользователей о том, что редактирование YAML-файлов может быть неудобным процессом, на данный момент существуют инструменты командной строки, которые значительно упрощают задачу настройки сети.

Использование netplan через командную строку

В версии Netplan, которая была обновлена в сентябре 2020 года, были добавлены команды, позволяющие настроить сетевые параметры без необходимости вручную редактировать YAML-файлы. Эти команды включают netplan set и netplan get.

Основные команды

  1. netplan get — позволяет получить текущее состояние конфигурации сети. Это полезно, чтобы убедиться, какие параметры уже установлены, и просмотреть действующие настройки перед внесением изменений.

    netplan get
  2. netplan set — непосредственно устанавливает новые значения для сетевых параметров. С его помощью можно обновить как отдельные значения, так и целые поддеревья конфигурации. Основной синтаксис команды:

    netplan set [ключ=значение]

    Например, для того чтобы задать IP-адрес и маску подсети для интерфейса eth0, вы можете использовать команду:

    netplan set ethernets.eth0.addresses=[192.168.1.1/24]

    Это добавит адрес и соответственно изменит файл конфигурации в /etc/netplan/.

Применение изменений

После внесения изменений с помощью netplan set, следующие шаги — это применение конфигурации:

  • netplan try — позволяет протестировать внесенные изменения, обеспечивая возможность отмены в случае проблем с подключением.

    netplan try
  • netplan apply — применяет изменения окончательно, обновляя текущие параметры сети.

    netplan apply

Управление DNS и другими параметрами

Чтобы задать параметры DNS, например, в вашем случае для eth0, используйте следующую команду:

netplan set ethernets.eth0.nameservers.addresses=[1.1.1.1]

Это обновит ваши имена серверов, добавив указанный адрес.

Для очистки поля, вы можете использовать ключевое слово null, например:

netplan set ethernets.eth0.addresses=null

Дополнительные ресурсы

Несмотря на то, что документация по этим командам довольно ограничена, вы можете ознакомиться с дополнительными примерами на GitHub и в документации Netplan. Это поможет вам лучше понять функциональные возможности netplan set и его применения в различных сценариях.

Вывод

Netplan предоставляет мощный и гибкий инструмент для управления сетевыми конфигурациями. Использование команд netplan set и netplan get позволяет избежать сложности ручного редактирования YAML-файлов, упрощая процесс настройки сети. Если вы привыкли к простоте ifconfig, переход к Netplan может потребовать времени на привыкание, однако он обеспечивает более устойчивое и управляемое решение для современных сетевых конфигураций.

Оцените материал
Добавить комментарий

Капча загружается...