Олег застрял. Не-не, не в том смысле, что вы подумали. Он изучала концепции DevOps в течение нескольких недель, смотрел видео и читал статьи. Но когда пришло время практиковаться, каждый учебник указывал на Яндекс облако, AWS или другие облака. «Зарегистрируйтесь на бесплатный тариф» - говорили они. Но Олег знал, что у этих тарифов есть ограничения, и слышал ужасающие истории о людях, случайно набравших огромные счета, забыв выключить ресурсы. «Должен быть лучший способ» - подумал он. И был прав!

Делаем домашнюю DevOps-лабораторию на ноутбуке без затрат
Сначала что такое DevOps? (простыми словами)
Прежде чем начать, давайте разберёмся, что такое DevOps.
Представьте, что вы строите дом. Есть архитекторы (разработчики), которые проектируют дом, и строители (операторы), которые его строят. В традиционных компаниях эти две команды почти не взаимодействуют. Архитекторы передают чертежи и говорят: «А нука постройте это», что часто приводит к проблемам, когда планы сталкиваются с реальностью.
DevOps - это как если бы архитекторы и строители сотрудничали на всём протяжении проекта. Лучшая коммуникация ведёт к прекрасным домам (кстати, что думаете про каркасники?), построенным быстрее и с меньшим количеством проблем.
Инструменты DevOps - это такие хитрые штуки, которые помогают обеим командам работать согласованно:
- Docker: думайте о нём как о контейнере для вашего кода. Он упаковывает всё, что нужно приложению, чтобы оно работало одинаково везде
- Kubernetes: ох любимый кубер - это такой диспетчер контейнеров, следящий за их состоянием и взаимодействием. Мы кстати делали вебанир про кубер недавно, зацените тут.
- Ansible: хитрый помощник, автоматизирующий повторяющиеся задачи на многих машинах
- Terraform: волшебная балалайка, которая может построить всю ИТ-инфраструктуру по одной команде
Зачем создавать лабораторию на своём ноутбуке?
А вот зачем:
- Нулевая стоимость - никаких неожиданных счетов в конце месяца
- Работа офлайн - можно практиковаться в самолёте, метро, у бабушки на даче, или при нестабильном интернете (а сейчас такое часто, не так ли?)
- Нет проблем с безопасностью - можно экспериментировать без страха быть взломанным
- Глубокое обучение - если что-то ломается, вы сами это чините, что классно
- Полный контроль - можно безопасно экспериментировать, ломать и исправлять. Главное чтобы ноут не загорелся, но не переживайте!

Надевай маски, перчатки, и шапочку из фольги - мы начинаем!
Что понадобится:
- Ноутбук с минимум 8 ГБ ОЗУ (лучше 16 ГБ)
- Около 20 ГБ свободного дискового пространства
- ОС: Windows, macOS или Linux
- Админский доступ к комплюктеру
- Включённая виртуализация в BIOS/UEFI
- Несколько часов свободного времени
Шаг 1: Установка Docker - ваша среда контейнеров
Docker - это основа нашей лаборатории. Он создаёт идеальные пакеты программного обеспечения, которые одинаково работают на любом компьютере.
Для Windows:
- Включите виртуализацию (специфично для Windows):
- Перезагрузите компьютер и войдите в BIOS/UEFI (обычно F2, F10, Del или Esc при загрузке)
- Найдите настройки виртуализации (обычно в разделе CPU, Advanced или Security)
- Включите Intel VT-x, AMD-V, SVM или Virtualization Technology
- Сохраните изменения и выйдите
- Установите Docker Desktop:
- Скачайте Docker Desktop с официального сайта Docker
- Запустите установщик и следуйте инструкциям
- При запросе включите WSL 2 (подсистема Windows для Linux)
- Перезагрузите компьютер
- Откройте Docker Desktop из меню «Пуск»
- Дождитесь окончания анимации иконки кита - Docker готов
Для macOS:
- Скачайте Docker Desktop для Mac с сайта Docker
- Откройте .dmg и перетащите Docker в папку «Программы»
- Откройте Docker и введите пароль при запросе
- Дождитесь окончания анимации иконки кита в строке меню
Для Linux (ух):
# Обновите список пакетов
sudo apt-get update
# Установите зависимости
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# Добавьте GPG-ключ Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Добавьте репозиторий Docker
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Обновите базу пакетов
sudo apt-get update
# Установите Docker
sudo apt-get install docker-ce
# Запустите и включите Docker
sudo systemctl start docker
sudo systemctl enable docker
# Добавьте пользователя в группу docker
sudo usermod -aG docker $USER
# Выйдите и войдите в систему заново, чтобы применить изменения
Проверим Docker
Откройте терминал или командную строку и введите:
docker run hello-world
Если вы увидите сообщение “Hello from Docker!”, поздравляем - Docker работает!
Шаг 2: Установка Kubernetes (кукарекис, как говорим мы в команде)
Теперь настроим инструмент для управления несколькими контейнерами. У нас есть два варианта:
Вариант 1: Minikube - дружелюбный Kubernetes
Minikube создаёт простой кластер Kubernetes внутри виртуальной машины на вашем ноуте.
Для Windows:
- Скачайте установщик Minikube с GitHub
- Запустите .exe-файл
- Откройте командную строку от имени администратора
Запустите кластер:
minikube start --driver=docker
Для macOS:
brew install minikube
minikube start --driver=docker
Или скачайте напрямую с GitHub.
Для Linux:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
minikube start --driver=docker
Проверка Minikube:
minikube status
minikube dashboard
Вариант 2: Kind (Kubernetes IN Docker) - полегче
Kind запускает кластеры Kubernetes внутри контейнеров Docker, что делает его особенно лёгким.
Для всех платформ:
Через пакетные менеджеры:
# Windows (через Chocolatey)
choco install kind
# macOS или Linux (через Homebrew)
brew install kind
Или вручную:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-$(uname)-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
Создание кластера:
kind create cluster --name my-local-lab
Шаг 3: Установка kubectl - удалённое управление кубером
kubectl - это инструмент для управления вашим кластером Kubernetes.
Для Windows:
- Скачайте kubectl.exe с сайта Kubernetes
- Поместите его в директорию, входящую в PATH
Или установите через Chocolatey:
choco install kubernetes-cli
Для macOS:
brew install kubectl
Или:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
Для Linux:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl
Проверка kubectl:
kubectl get pods --all-namespaces
Шаг 4: Установка Vagrant - ваш менеджер виртуалок
Vagrant позволяет легко создавать и управлять виртуальными машинами - идеально для мультисерверных конфигураций.
Для Windows:
Проверьте, включён ли Hyper-V:
systeminfo | findstr "Hyper-V"
Если включён, вы можете:
- Использовать Hyper-V как провайдер Vagrant
- Или отключить Hyper-V (может потребоваться перезагрузка)
- Установите VirtualBox и Vagrant:
- Скачайте и установите VirtualBox (ссылки найдите в интернете, это легко)
- Скачайте и установите Vagrant (ладно, тут ссылочкой поделимся: https://developer.hashicorp.com/vagrant)
Для macOS и Linux:
- Скачайте и установите VirtualBox
- Скачайте и установите Vagrant
Проверка установки:
vboxmanage --version
vagrant --version
(Необязательно) Создание пользовательского образа Ubuntu из ISO:
- Скачайте Ubuntu 20.04 ISO с сайта ubuntu.com
Установите Ubuntu в VirtualBox:
Новая → имя: ubuntu-devops → Тип: Linux → Версия: Ubuntu (64-bit)
Выделите 2048 МБ ОЗУ, 20 ГБ HDD (VDI), подключите ISO как оптический диск
Упакуйте VM в Vagrant box:
VBoxManage list vms vagrant package --base "ubuntu-devops" --output ubuntu2004.box vagrant box add ubuntu2004 ubuntu2004.box
Быстрый старт с готовым образом (рекомендуется)
Если есть интернет, используйте официальный образ:
mkdir my-vagrant-lab
cd my-vagrant-lab
vagrant init ubuntu/focal64
vagrant up
Подключение:
vagrant ssh
Создание первого Vagrant-окружения (все платформы)
Создайте Vagrantfile со следующим содержимым:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
# Приватная сеть между ВМ
config.vm.network "private_network", type: "dhcp"
# Проброс порта 8080 на 80
config.vm.network "forwarded_port", guest: 80, host: 8080
# Provisioning через shell
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y nginx
echo "Hello from Vagrant!" > /var/www/html/index.html
SHELL
end
Запуск:
vagrant up
Откройте http://localhost:8080 для просмотра веб-сервера
Шаг 5: Установка Ansible - для автоматизации, конечно же!
Ansible помогает автоматизировать задачи на множестве серверов.
Для Windows:
Ansible не работает нативно в Windows, но вы можете использовать его через WSL (подсистема Windows для Linux):
Включите WSL, открыв PowerShell от имени администратора и выполнив:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- Перезагрузите компьютер
- Установите Ubuntu из Microsoft Store
Откройте Ubuntu и выполните:
sudo apt update sudo apt install software-properties-common sudo apt-add-repository --yes --update ppa:ansible/ansible sudo apt install ansible
Для Mac:
brew install ansible
Для Linux:
# Для Ubuntu/Debian
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
# Для Red Hat/CentOS
sudo yum install ansible
Проверка Ansible:
Откройте /etc/ansible в редакторе и создайте файл hosts со следующим содержанием:
[local]
localhost ansible_connection=local
Создайте файл playbook.yml со следующим содержанием:
---
- name: Test playbook
hosts: local
tasks:
- name: Print a message
debug:
msg: "Ansible is working!"
Запустите:
ansible-playbook -i hosts playbook.yml
Шаг 6: Установка Terraform - наш любимый
Наконец, установим Terraform для практики инфраструктуры как кода.
Для Windows:
- Скачайте zip-архив с сайта Terraform
- Распакуйте архив
- Переместите terraform.exe в директорию, указанную в PATH
Или установите через Chocolatey:
choco install terraform
Для Mac:
brew install terraform
Для Linux:
wget https://releases.hashicorp.com/terraform/1.0.0/terraform_1.0.0_linux_amd64.zip
unzip terraform_1.0.0_linux_amd64.zip
sudo mv terraform /usr/local/bin/
Проверка Terraform:
Создайте файл main.tf:
resource "local_file" "hello" {
content = "Hello, Terraform!"
filename = "${path.module}/hello.txt"
}
Запустите:
terraform init
terraform apply
Проверьте, создан ли файл hello.txt с сообщением “Hello, Terraform!”
Ваш первый полноценный DevOps-проект
Теперь объединим всё! Мы создадим проект, который:
- Использует Terraform для настройки локальной среды
- Создаёт виртуальные машины через Vagrant
- Настраивает их через Ansible
- Развёртывает контейнерное приложение через Docker
- Управляет контейнерами через Kubernetes
Проект: простое веб-приложение
Создайте директорию проекта. Внутри создайте файлы:
main.tf:
resource "local_file" "vagrant_file" {
content = <<-EOT
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
# Web server
config.vm.define "web" do |web|
web.vm.network "private_network", ip: "192.168.33.10"
web.vm.network "forwarded_port", guest: 80, host: 8080
end
# Database server
config.vm.define "db" do |db|
db.vm.network "private_network", ip: "192.168.33.11"
end
end
EOT
filename = "${path.module}/Vagrantfile"
}
resource "local_file" "ansible_inventory" {
content = <<-EOT
[webservers]
192.168.33.10 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/web/virtualbox/private_key
[dbservers]
192.168.33.11 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/db/virtualbox/private_key
EOT
filename = "${path.module}/inventory"
}
resource "local_file" "ansible_playbook" {
content = <<-EOT
---
- name: Configure web server
hosts: webservers
become: yes
tasks:
- name: Install Docker
apt:
name: docker.io
state: present
update_cache: yes
- name: Start Docker service
service:
name: docker
state: started
enabled: yes
- name: Run Nginx container
docker_container:
name: webapp
image: nginx
ports:
- "80:80"
restart_policy: always
- name: Configure database server
hosts: dbservers
become: yes
tasks:
- name: Install MariaDB
apt:
name: mariadb-server
state: present
update_cache: yes
- name: Start MariaDB service
service:
name: mariadb
state: started
enabled: yes
EOT
filename = "${path.module}/playbook.yml"
}
Выполните:
terraform init
terraform apply
Запустите виртуальные машины:
vagrant up
Запустите плейбук Ansible:
ansible-playbook -i inventory playbook.yml
Откройте http://localhost:8080, чтобы увидеть веб-приложение
Для очистки:
vagrant destroy -f
terraform destroy
Устранение проблем в Windows
VirtualBox не устанавливается или не запускается: отключите Hyper-V:
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
Перезагрузите ПК
- Проблемы с установкой WSL2: обновите Windows до последней версии и установите обновление ядра с сайта Microsoft
Ошибки Docker Desktop: проверьте включена ли виртуализация в BIOS. Команда:
systeminfo | findstr "Hyper-V Requirements"
всё должно быть «Yes»
Ошибка Vagrant SSH: возможна проблема с путём к SSH. Попробуйте:
vagrant ssh -- -v
или
ssh -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1 -p 2222
Медленная работа: уменьшите объём ОЗУ для ВМ:
web.vm.provider "virtualbox" do |v| v.memory = 512 end
Плюсы и минусы вашей домашней DevOps-лаборатории
Плюсы:
- Полностью бесплатно - никаких облачных расходов
- Работает офлайн - идеально для обучения в поездках
- Полный контроль - вы управляете всем
- Секурити - нет риска утечки данных
- Без ограничений по времени - в отличие от бесплатных тарифов облака (там потом платить надо)
- Лучшее понимание - изучаете принципы, а не только облачные реализации
- Безопасно ломать - можно экспериментировать без последствий
Минусы:
- Ограничения по ресурсам - всё зависит от вашего ноутбука
- Нет настоящего масштабирования - не имитирует облачные кластеры
- Отсутствие облачных сервисов - все таки они используются там, куда вы потом пойдете работать
- Производительность - запуск ВМ внутри ВМ может быть медленным
- Разряд батареи - инструменты ресурсоёмкие, всегда нужно будет зарядка
- Некоторые отличия от реальных облаков - поведение может различаться
Следующие шаги в DevOps
Теперь, когда лаборатория готова, попробуйте вот что:
- Создание CI/CD-пайплайна с Jenkins или GitLab CI (локально)
- Сборка архитектуры микросервисов с несколькими контейнерами
- Настройка мониторинга с Prometheus и Grafana
- Настройка балансировщика нагрузки с Nginx или HAProxy
- Освой DevOps с нуля на нашем курсе: четкая программа, практика с Kubernetes, Docker и CI/CD, поддержка менторов и помощь с карьерой - бесплатный вводный урок тут: https://wiki.merionet.ru/merion-academy/course/devops-inzhener-s-nulya
Пока!