Netplan ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ

Ubuntu ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π°Ρ опСрационная систСма, Π΄Π°Π²Π½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» с Ubuntu server Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ свой Desktop со ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ вСрсии Π½Π΅ Π±Ρ‹Π»ΠΎ смысла. И Π²ΠΎΡ‚ Π½Π΅ Π΄Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ столкнутся со свСТСньким Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ Ubuntu server 18.04, ΠΌΠΎΠ΅ΠΌΡƒ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΡŽ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°, ΠΊΠΎΠ³Π΄Π° я понял Ρ‡Ρ‚ΠΎ я бСсконСчно отстал ΠΎΡ‚ ΠΆΠΈΠ·Π½ΠΈ ΠΈ Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠ΅Ρ‚ΡŒ Ρ‚.ΠΊ старая добрая систСма настройки сСтСвых интСрфСйсов ΠΏΠΎ срСдствам рСдактирования Ρ„Π°ΠΉΠ»Π° /etc/network/interfaces ΠΊΠ°Π½ΡƒΠ»Π° Π² Π»Π΅ΠΏΡ‚Ρƒ. А Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π΅ΠΉ Π½Π° смСну? Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ уТасноС ΠΈ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ понятноС, встрСчайтС Β«NetplanΒ».

ΠŸΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒΡΡ чСстно, сначала я Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π² Ρ‡Π΅ΠΌ Π΄Π΅Π»ΠΎ ΠΈ »Π·Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ, вСдь всС Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊ ΡƒΠ΄ΠΎΠ±Π½ΠΎ", Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ понял Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ свой ΡˆΠ°Ρ€ΠΌ. И Ρ‚Π°ΠΊ Ρ…Π²Π°Ρ‚ΠΈΡ‚ Π»ΠΈΡ€ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Netplan это новая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для настройки сСти Π² Ubuntu, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ΅Ρ€Π΅ Β«Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… дистрибутивах я Π½Π΅ встрСчал ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎΒ». БущСствСнной ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Netplan являСтся Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ конфигурация ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π½Π° языкС YAML, Π΄Π° Π΄Π° Π²Ρ‹ Π½Π΅ ΠΎΡΠ»Ρ‹ΡˆΠ°Π»ΠΈΡΡŒ YAML, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΠ΄Ρ‚ΠΈ Π² Π½ΠΎΠ³Ρƒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ (ΠΈ ΠΊΠ°ΠΊ Π±Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ расхваливали Π΅Π³ΠΎ я всС-Ρ‚Π°ΠΊΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽ Π΅Π³ΠΎ уТасным языком). Основной минус этого языка Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ чувствитСлСн ΠΊ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΆΠ΅ рассмотрим ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π€Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ находятся ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ /etc/netplan/имяфайла.yaml, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ + 2 ΠΏΡ€ΠΎΠ±Π΅Π»Π°.

1) Бтандартная шапка выглядит Ρ‚Π°ΠΊ:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0f0:
      dhcp4:no

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сСйчас сдСлали:

  • network: β€” это Π±Π»ΠΎΠΊ Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
  • renderer: networkd β€” здСсь ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ сСтСвой ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, это Π»ΠΈΠ±ΠΎ networkd Π»ΠΈΠ±ΠΎ NetworkManager
  • version: 2 β€” Ρ‚ΡƒΡ‚ ΠΊΠ°ΠΊ я понял вСрсия YAML.
  • ethernets: β€” этот Π±Π»ΠΎΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ethernet ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».
  • enps0f0: β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ сСтСвой Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π±ΡƒΠ΄Π΅ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.
  • dhcp4:no β€” ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ DHCP v4, для 6 v6 dhcp6 соотвСтствСнно

2) ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ip адрСса:

    enp3s0f0:
      dhcp4:no
      macaddress: bb:11:13:ab:ff:32
      addresses: [10.10.10.2/24, 10.10.10.3/24]
      gateway4: 10.10.10.1
      nameservers:
        addresses: 8.8.8.8

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π·Π°Π΄Π°Π»ΠΈ ΠΌΠ°ΠΊ, ipv4, шлюз ΠΈ dns сСрвСр. Π—Π°ΠΌΠ΅Ρ‚ Ρ‚Π΅ Ρ‡Ρ‚ΠΎ Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ip адрСса Ρ‚ΠΎ ΠΌΡ‹ пишСм ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ с ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ послС.

3)А Ρ‡Ρ‚ΠΎ Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ bonding?

  bonds:
    bond0:
      dhcp4: no
      interfaces: [enp3s0f0, enp3s0f1]
      parameters: 
        mode: 802.3ad
        mii-monitor-interval: 1

  • bonds: β€” Π±Π»ΠΎΠΊ ΠΏΠΎΡΡΠ½ΡΡŽΡ‰ΠΈΠΉ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ bonding.
  • bond0: β€” ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ имя интСрфСйса.
  • interfaces: β€” Π½Π°Π±ΠΎΡ€ интСрфСйсов собираСмых Π² bond-Π΄ΠΈΠ½Π³, »ΠΊΠ°ΠΊ ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² нСсколько описываСм ΠΈΡ… Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках".
  • parameters: β€” описываСм Π±Π»ΠΎΠΊ настройки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
  • mode: β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠΎΠ΄ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ bonding.
  • mii-monitor-interval: β€” Π·Π°Π΄Π°Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° 1 сСк.

Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ bond-Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°ΠΊ addresses,gateway4,routes ΠΈΡ‚Π΄.

ΠœΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для нашСй сСти, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒ vlan ΠΈ настройку ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΠΎΠΉ.

vlans: 
    vlan10:
      id: 10
      link: bond0
      dhcp4: no
      addresses: [10.10.10.2/24]
      gateway: 10.10.10.1
      routes:
        - to: 10.10.10.2/24
          via: 10.10.10.1
          on-link: true

  • vlans: β€” объявляСм Π±Π»ΠΎΠΊ настройки vlan.
  • vlan10: β€” ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ имя vlan интСрфСйса.
  • id: β€” Ρ‚Π΅Π³ нашСго vlan.
  • link: β€” интСрфСйс Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ vlan Π±ΡƒΠ΄Π΅Ρ‚ доступСн.
  • routes: β€” объявляСм Π±Π»ΠΎΠΊ описания ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ².
  • β€” to: β€” Π·Π°Π΄Π°Π΅ΠΌ адрСс/ΠΏΠΎΠ΄ΡΠ΅Ρ‚ΡŒ Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚.
  • via: β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ шлюз Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ доступна наша ΠΏΠΎΠ΄ΡΠ΅Ρ‚ΡŒ.
  • on-link: β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ всСгда ΠΏΡ€ΠΈ поднятии Π»ΠΈΠ½ΠΊΠ°.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ ΠΊΠ°ΠΊ я Ρ€Π°ΡΡΡ‚Π°Π²Π»ΡΡŽ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π² языкС YAML это ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ.

Π’ΠΎΡ‚ ΠΌΡ‹ описали сСтСвыС интСрфСйсы, создали bonding, ΠΈ Π΄Π°ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ vlan-Ρ‹. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ наш ΠΊΠΎΠ½Ρ„ΠΈΠ³, ΠΊΠΎΠΌΠ°Π½Π΄Π° netplan apply ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ наш ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ Π΅Π³ΠΎ Π² случаС успСха.Π”Π°Π»Π΅Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π±ΡƒΠ΄Π΅Ρ‚ сам ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы.

Π‘ΠΎΠ±Ρ€Π°Π² всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°, Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0f0:
      dhcp4: no
    ensp3s0f1:
      dhcp4: no
  bonds:
    bond0:
      dhcp4: no
      interfaces: [enp3s0f0, enp3s0f1]
      parameters: 
        mode: 802.3ad
        mii-monitor-interval: 1
  vlan10:
      id: 10
      link: bond0
      dhcp4: no
      addresses: [10.10.10.2/24]
      routes:
        - to: 10.10.10.2/24
          via: 10.10.10.1
          on-link: true
  vlan20:
    id: 20
    link: bond0
    dhcp4: no
    addresses: [10.10.11.2/24]
    gateway: 10.10.11.1
    nameserver:
      addresses: [8.8.8.8]
    

Π’ΠΎΡ‚ наша ΡΠ΅Ρ‚ΡŒ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ эксплуатации, всС оказалось Π½Π΅ Ρ‚Π°ΠΊ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ ΠΊΠ°ΠΊ показалось Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΈ ΠΊΠΎΠ΄ получился ΠΎΡ‡Π΅Π½ΡŒ красивый ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ. P.C спасибо Ρ‡Ρ‚ΠΎ ΠΏΠΎ netplan Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ°Π½ΡƒΠ°Π» ΠΏΠΎ ссылкС https://netplan.io/.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com