IaC

Если вы не слышали о IaC - Infrastructure as Code, у меня для вас плохие новости. Очень плохие. Ладно, не напрягайтесь, сейчас всё расскажу.

Как было раньше: выдали вам пачку физических машин - на каждой из них вы запустили KVM/VMWare/WTF, подняли на них флот виртуалочек, настроили сеть, выкатили своё приложение. Нужна дев-среда? Давайте всё в той же последовательности теми же руками. И во второй раз может получиться чуть-чуть не то же самое.
Парадигма IaC предполагает, что конфигурация всей инфраструктуры описывается в текстовых файлах. Речь как про физические устройства, так и про виртуальные машины, контейнеры и прочее.
Далее эти текстовые файлы обрабатываются неким инструментарием, который настраивает инфраструктуру на основе этой информации. Это может быть Terraform, Ansible, SaltStack.
Как результат - вы всегда быстро и с минимальным участием человека получаете предсказуемый результат.
Например, вы декларативно записываете в yml-, txt-, tf-, wtf-файле, что на таких-то хостах нужно установить KVM, Open vSwitch, настроить IP-адреса и туннели. Далее поднять набор ВМ с убунтой, выдать им адреса, на них установить nginx, загрузить ваш сайт в указанный каталог и настроить nginx. И поставить всё это дело за свежезапущенный балансер.
И получить всё это становится возможным всего одним запуском terrform, если желаемое состояние описано в конфигурационном файле.
Данные в самом файле могут быть в форматах yml, json, это может быть набор объектов вашего любимого ЯП или что угодно иное, что может быть принято инструментом.
Строго говоря, даже если вы в bash-скрипт напихаете весь набор операций - это уже будет IaC. Просто пользоваться этим не очень удобно.
На схеме ниже изображена упрощённая процедура того, как изменения появляются на сети в парадигме IaC.
https://dteslya.engineer/images/2020-10-netdevops-pipeline.png

https://dteslya.engineer/network_automaiton_101/

То есть настройка инфраструктуры выглядит аналогично релизу новой версии приложения в DevOps - те же гиты, апрувы, CI/CD и прочая.
Что же до сетей?
Прежде в хорошей ситуации у нас для них был HLD (High Level Design), который руками превращался в LLD (Low Level Design) для каждой железки, готовился конфиг (скорее всего, руками) и заливался на железо (надо полагать, тоже руками). В плохой - инженер сразу на железке настраивал сервисы так, как ему казалось правильным.
Систему автоматизации сети мы будем рассматривать также в разрезе IaC. Давайте уже прекратим строить из себя особенных, потому лишь что у наших хостов проприетарная ОС. Сеть - такая же часть инфраструктуры, как физические машины, виртуалки, контейнеры. Ну да, прихлопнуть свитч с нерабочим чипом и пересоздать новый нельзя - но это просто добавляет красок в нашу работу.
https://fs.linkmeup.ru/images/adsm/4/its_different.jpg
Обновление конфигурации на сети и обновление прочей инфраструктуры после этого - тот же процесс деплоя.
В общем это именно то, о чём мы тут толкуем с самого 0-го выпуска. Дизайн описан в формализованном HLD, а конкретные данные берутся из нашего SoT - Netbox. Из них генерится конфигурация и складывается в репозиторий, где прогоняются авто-тесты (в аппаратной или виртуальной лабе или что-то а-ля Batfish), кто-то смотрит глазами и подтверждает изменения, далее они по всем правилам CD выезжают в прод.

IaC - и ничегошеньки не настраиваем руками.

https://fs.linkmeup.ru/images/adsm/4/tobusy.png