Садржај поста
Всем привет! Сегодня хочется поговорить про подход Infrastructure as Code. Хоть я и не DevOps и не занимаюсь инфраструктурой на постоянной основе, но не раз сталкивался с этим и сам поднимал инфраструктуру для проектов — как на bare metal, так и в облаках и Kubernetes. Часто даже при настройке небольшого набора нод одной из самых сложных вещей становится именно конфигурация. Помню, как в школе развлекался с несколькими Raspberry Pi. Тогда, чтобы настроить каждую «малинку», приходилось вручную повторять одни и те же действия: 1️⃣ Установить ОС 2️⃣ Подключиться по SSH 3️⃣ Выполнить несколько команд для настройки И так раза три... А что делать, если нужно уже не 3, а хотя бы 10 нод? Тут на помощь приходят инструменты, позволяющие описывать инфраструктуру и окружение в виде конфигурационных файлов — чаще всего это YAML. Например, для облачных решений сейчас активно используется Terraform. Он позволяет, используя API облачного провайдера, создавать и настраивать различные ресурсы: виртуальные машины, сети, DNS и т. д. Я чаще всего использую Terraform именно для создания инфраструктуры. Например, Terraform-провайдер для Яндекс Облака позволяет создать кластер Kubernetes и развернуть в нём приложения из маркетплейса ЯОблака. Когда виртуалки уже готовы, иногда в работу включается Ansible — инструмент, позволяющий устанавливать нужные пакеты, настраивать конфиги и запускать приложения. Например, во времена университета, когда я поднимал кластер Kubernetes на bare metal, я использовал Kubespray — рецепт для Ansible, позволяющий автоматизировать настройку Kubernetes. А потом, когда нужно было выдать учётки коллегам, я не настраивал каждую машину вручную — просто написал простой плейбук, который создавал пользователей и настраивал их окружение. А вы сталкивались с подходом Infrastructure as Code? Какими инструментами пользуетесь?