Якщо потрібно швидко й безпечно оновити мережеві налаштування на десятках хостів, комбо Netplan + Ansible — саме те. Я покажу, як акуратно підготувати Jinja2-шаблон, протестувати на стейджингу, викотити поетапно і мати чіткий план відкату, щоб ваше SSH підключення не обірвалося в найгірший момент 🛡️
Що будемо робити (огляд)
Ми створимо шаблон Netplan, заведемо змінні для різних ролей/сегментів, налаштуємо playbook з поетапним розгортанням (serial), dry-run, валідацією (netplan generate) та відкатом. Усе це — класична автоматизація задач для стабільного середовища сервер Linux з акуратними мережеві налаштування.
Основний How-to: від шаблону до безпечного застосування
1) Підготуйте інвентар та змінні
2) Створіть Jinja2-шаблон Netplan
Шаблон рендерить змінні у валідний YAML. Так простіше підтримувати кілька профілів.
3) Playbook з валідацією і відкатом
Поетапний rollout, бекапи, перевірка SSH після застосування. Якщо зв'язок ризикує, виконується rollback.
4) Пробний прогін і поетапний деплой
Альтернативні способи
- NetworkManager через Ansible: модуль
community.general.nmcliдля систем із NM-рендерером. Зручно, якщо потрібні профілі Wi‑Fi/VLAN/Bridge, а не статичні Netplan-файли. - Ролі та Molecule-тестування: винесіть завдання в роль, перевіряйте під LXD/Docker (наприклад, гарна практика для стейджу перед продом 🧪).
- Валідація маршрутизації: після
netplan applyперевіряйте наявність шлюзу/маршрутів командоюip routeу тасці й падайте з помилкою, якщо щось не так.
GUI-спосіб (точкова перевірка)
Для візуальної перевірки одного вузла можна швидко накатити Cockpit і глянути інтерфейси. Це не масовий метод, але іноді корисний.
Пам'ятайте: для масових змін краще Ansible. Cockpit — тільки для разової діагностики або термінових правок на одному сервер Linux.
FAQ
Чому після застосування зникає доступ по SSH?
Найчастіше — через неправильний шлюз або помилку в YAML. Використовуйте поетапний serial: 1, валідацію netplan generate, і плейбук з блоком rescue для відкату. Також перевіряйте, що ви міняєте інтерфейс, яким здійснюється SSH підключення.
NetworkManager чи systemd-networkd?
Вибір визначає renderer. На серверних Ubuntu зазвичай networkd. На десктопах і деяких хмарах — NetworkManager. Узгодьте це у змінній netplan_renderer і тримайте окремі профілі.
Як перевірити YAML перед деплоєм?
Локально: yamllint. На хості через Ansible: netplan generate у тасці. Якщо є індетнація або синтаксис зламані — команда впаде до застосування змін.
Що з IPv6 або кількома адресами?
Додавайте до addresses кілька CIDR, а для IPv6 використовуйте gateway6 та DNSv6. Наприклад: addresses: [10.10.1.10/24, 2001:db8::10/64].
У мене різні назви інтерфейсів на хостах. Як бути?
Зберіть факти ansible_facts і згенеруйте ethernets динамічно (наприклад, для інтерфейсу, що має адресу з потрібної підмережі). Або заведіть мапу хост->інтерфейс у host_vars.
Чи можна робити "netplan try" для авто-відкату?
netplan try очікує підтвердження в TTY. У безінтерактивному середовищі краще покладатися на поетапний деплой + rescue блок відкату й зовнішні бекапи. Якщо дуже треба — можна викручуватись через псевдо-TTY, але це крихкий підхід.
Як перевірити, що маршрут за замовчуванням залишився?
Додайте таск після netplan apply з перевіркою ip route | grep -q 'default via'. Якщо немає — запускати rollback.
Порада від Kernelka
Спочатку зробіть лабораторію: LXD/Multipass/VM із кількома віртуальними NIC. Готуйте профілі під різні підмережі, тримайте позасмуговий канал доступу (IPMI/iDRAC/Console), а rollout крутите невеликими порціями. Тримайте пінг до кожного хоста в окремій вкладці tmux — це дає впевненість під час змін 🚀
Підсумок
- Готуйте Jinja2-шаблон Netplan і централізуйте змінні.
- Робіть бекапи і валідовуйте
netplan generateперед застосуванням. - Деплойте поетапно (
serial), перевіряйте SSH та маршрути. - Передбачайте rollback через rescue і архіви з /etc/netplan.
- На стейджі тестуйте роль під Molecule; у прод — маленькими хвилями.
Так ви отримаєте керовані та передбачувані мережеві налаштування на кожному сервері без зайвого ризику і простої.

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.