Это история про автоматизацию Proxmox через Terraform — про то, как отказ от кликанья по мастерам превратил трёхчасовую рутину в пятнадцать минут кода. Тот же результат. В десять раз быстрее. Ноль человеческих ошибок. И зря я не сделал это на пару лет раньше.
Третья VM за неделю
Это была третья виртуалка, которую я поднимал за ту неделю. Три часа кликанья по мастеру Proxmox — сторедж сюда, сеть туда, ISO, шаблон, размер диска, и так каждый раз один и тот же танец.
А дальше самое ненавистное: копировать IP-адреса из общей таблицы, которую никто не обновлял уже два месяца. Настраивать сеть руками. Сверяться с предыдущей виртуалкой и молиться, чтобы эта совпала.
Не совпадала. Никогда. Ни одна собранная руками VM не выходила одинаковой. Каждая — снежинка, уникальная ровно в тех местах, о которых я узнаю только когда что-то отвалится в два часа ночи, и я буду дифать конфиги, пытаясь вспомнить, где именно промахнулся пальцем три недели назад.
Момент, когда меня переклинило
Где-то на втором часу этой третьей виртуалки я перестал кликать. Открыл терминал. Начал писать Terraform.
Не потому что был план. А потому что не мог больше делать это руками ещё один раз. Есть особый сорт усталости — когда повторяешь задачу, про которую точно знаешь, что её должна делать машина. Вот в эту стену я и упёрся.
Через две недели весь ручной процесс исчез.
Стек, который заменил кликанье
Заменой был не один инструмент, а три — каждый делает то, в чём реально хорош:
- Terraform напрямую общается с Proxmox API: провижинит и настраивает сеть. Это тот слой, который убил мастера. Ты описываешь VM — Terraform её создаёт.
- Ansible автоматически делает всё после провижининга: конфигурацию и security hardening. Больше не надо заходить по SSH и что-то докручивать руками.
- Python отвечает за управление шаблонами и оркестрацию — тот клей, что связывает жизненный цикл шаблонов и все шероховатые края.
Ничего экзотического. В этом и суть. Скучный, хорошо задокументированный infrastructure-as-code — а скучное это ровно то, что должно держать машины, на которых крутится всё остальное.
Как это работает теперь
Повседневность стала почти будничной:
- Описываешь параметры VM в YAML-файле — CPU, память, диск, сеть, всё.
- Запускаешь
terraform planи читаешь ровно то, что будет создано. Никаких сюрпризов, никакого «ну давай посмотрим, что выйдет». terraform apply.- Дальше подхватывает Ansible. Руки убраны.
Описал, что хочешь. Получил то, что описал. Вот и весь цикл.
Что реально изменилось
Главная цифра — та самая, ради которой всё это и захотелось написать: три часа превратились в пятнадцать минут на VM. Но сэкономленное время — самое неинтересное здесь.
- Все VM идентичны. Никаких снежинок. Когда всё собрано из одного кода, «на той машине работает, на этой нет» перестаёт быть классом проблем.
- Управление IP автоматизировано. Таблица мертва. Адресами занимается код, а не тот, кто вспомнил обновить общий файл.
- Всё живёт в Git. Новый инженер клонирует репозиторий и в первый же день понимает, как всё устроено. Никакого tribal knowledge. Никакой документации, протухшей полгода назад. Никакой археологии по старым тредам в Slack.
Вот последнее — тихая, но главная победа. Ручная инфраструктура не просто медленная, она ловушка знаний. Тот, кто её собрал, — единственный, кто знает, почему она такая; и как только он уходит, ты реверс-инженеришь собственные системы.
О чём никто не предупреждает
Штука с ручной работой вот в чём: ты не замечаешь, сколько жизни она сжирает, пока не перестанешь её делать. Пока ты внутри, три часа кликанья ощущаются как «ну это просто работа». И только с другой стороны — глядя, как terraform apply завершается за то время, что раньше уходило на настройку сети одной машины, — оглядываешься и не понимаешь, зачем терпел это так долго.
Отсюда честное правило, к которому я пришёл: если ты поднимаешь что-то руками больше двух раз — это не про тщательность. Это про терпение к проблеме, которая твоего терпения не заслуживает.
А что ты до сих пор собираешь руками из того, что мог бы делать Terraform?