img

Делаем домашнюю DevOps-лабораторию на ноутбуке без затрат

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

icon strelka icons icons

узнай больше на курсе

DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Подробнее о курсе
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Подробнее о курсе
Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Подробнее о курсе

Сначала что такое DevOps? (простыми словами)

Прежде чем начать, давайте разберёмся, что такое DevOps.

Представьте, что вы строите дом. Есть архитекторы (разработчики), которые проектируют дом, и строители (операторы), которые его строят. В традиционных компаниях эти две команды почти не взаимодействуют. Архитекторы передают чертежи и говорят: «А нука постройте это», что часто приводит к проблемам, когда планы сталкиваются с реальностью.

DevOps - это как если бы архитекторы и строители сотрудничали на всём протяжении проекта. Лучшая коммуникация ведёт к прекрасным домам (кстати, что думаете про каркасники?), построенным быстрее и с меньшим количеством проблем.

Инструменты DevOps - это такие хитрые штуки, которые помогают обеим командам работать согласованно:

  • Docker: думайте о нём как о контейнере для вашего кода. Он упаковывает всё, что нужно приложению, чтобы оно работало одинаково везде
  • Kubernetes: ох любимый кубер - это такой диспетчер контейнеров, следящий за их состоянием и взаимодействием. Мы кстати делали вебанир про кубер недавно, зацените тут.
  • Ansible: хитрый помощник, автоматизирующий повторяющиеся задачи на многих машинах
  • Terraform: волшебная балалайка, которая может построить всю ИТ-инфраструктуру по одной команде

Зачем создавать лабораторию на своём ноутбуке?

А вот зачем:

  • Нулевая стоимость - никаких неожиданных счетов в конце месяца
  • Работа офлайн - можно практиковаться в самолёте, метро, у бабушки на даче, или при нестабильном интернете (а сейчас такое часто, не так ли?)
  • Нет проблем с безопасностью - можно экспериментировать без страха быть взломанным
  • Глубокое обучение - если что-то ломается, вы сами это чините, что классно
  • Полный контроль - можно безопасно экспериментировать, ломать и исправлять.  Главное чтобы ноут не загорелся, но не переживайте!
Комикс мем:

Надевай маски, перчатки, и шапочку из фольги - мы начинаем!

Что понадобится:

  • Ноутбук с минимум 8 ГБ ОЗУ (лучше 16 ГБ)
  • Около 20 ГБ свободного дискового пространства
  • ОС: Windows, macOS или Linux
  • Админский доступ к комплюктеру
  • Включённая виртуализация в BIOS/UEFI
  • Несколько часов свободного времени

Шаг 1: Установка Docker - ваша среда контейнеров

Docker - это основа нашей лаборатории. Он создаёт идеальные пакеты программного обеспечения, которые одинаково работают на любом компьютере.

Для Windows:

  1. Включите виртуализацию (специфично для Windows):
    • Перезагрузите компьютер и войдите в BIOS/UEFI (обычно F2, F10, Del или Esc при загрузке)
    • Найдите настройки виртуализации (обычно в разделе CPU, Advanced или Security)
    • Включите Intel VT-x, AMD-V, SVM или Virtualization Technology
    • Сохраните изменения и выйдите
  2. Установите Docker Desktop:
    • Скачайте Docker Desktop с официального сайта Docker
    • Запустите установщик и следуйте инструкциям
    • При запросе включите WSL 2 (подсистема Windows для Linux)
    • Перезагрузите компьютер
    • Откройте Docker Desktop из меню «Пуск»
    • Дождитесь окончания анимации иконки кита - Docker готов

Для macOS:

  1. Скачайте Docker Desktop для Mac с сайта Docker
  2. Откройте .dmg и перетащите Docker в папку «Программы»
  3. Откройте Docker и введите пароль при запросе
  4. Дождитесь окончания анимации иконки кита в строке меню

Для 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:

  1. Проверьте, включён ли Hyper-V:

    systeminfo | findstr "Hyper-V"

    Если включён, вы можете:

    • Использовать Hyper-V как провайдер Vagrant
    • Или отключить Hyper-V (может потребоваться перезагрузка)

     

  2. Установите VirtualBox и Vagrant:
    • Скачайте и установите VirtualBox (ссылки найдите в интернете, это легко)
    • Скачайте и установите Vagrant (ладно, тут ссылочкой поделимся: https://developer.hashicorp.com/vagrant)

Для macOS и Linux:

  • Скачайте и установите VirtualBox
  • Скачайте и установите Vagrant

Проверка установки:

vboxmanage --version
vagrant --version

(Необязательно) Создание пользовательского образа Ubuntu из ISO:

  1. Скачайте Ubuntu 20.04 ISO с сайта ubuntu.com
  2. Установите Ubuntu в VirtualBox:

    Новая → имя: ubuntu-devops → Тип: Linux → Версия: Ubuntu (64-bit)

    Выделите 2048 МБ ОЗУ, 20 ГБ HDD (VDI), подключите ISO как оптический диск

  3. Упакуйте 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
  1. Перезагрузите компьютер
  2. Установите Ubuntu из Microsoft Store
  3. Откройте 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

  1. VirtualBox не устанавливается или не запускается: отключите Hyper-V:

    Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

    Перезагрузите ПК

  2. Проблемы с установкой WSL2: обновите Windows до последней версии и установите обновление ядра с сайта Microsoft
  3. Ошибки Docker Desktop: проверьте включена ли виртуализация в BIOS. Команда:

    systeminfo | findstr "Hyper-V Requirements"

    всё должно быть «Yes»

  4. Ошибка Vagrant SSH: возможна проблема с путём к SSH. Попробуйте:

    vagrant ssh -- -v

    или

    ssh -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1 -p 2222
  5. Медленная работа: уменьшите объём ОЗУ для ВМ:

    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

Пока!

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Подробнее о курсе
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Подробнее о курсе
Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Подробнее о курсе
Онлайн-курс по кибербезопасности
Полный курс по кибербезопасности от Мерион Нетворкс - учим с нуля специалистов по информационной безопасности. Пора стать безопасником!
Подробнее о курсе
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API
Подробнее о курсе
Этичный хакинг
Научись работать с Kali Linux, изучи самые распространенные уязвимости, разверни виртуальную лабораторию для пентестинга
Подробнее о курсе
Еще по теме:
img
Git Flow - это специальная система ветвления для Git. Она помогает команде лучше контролировать и добавлять различные версии проекта. В статье рассказываем, как ее использовать.
img
Мы рассмотрим несколько простых способов, с помощью которых вы можете управлять и отслеживать логи для своих контейнеров.
img
Узнайте, как использовать Git Hooks для автоматизации задач в рабочем процессе: от проверки коммитов до автоматического тестирования, и как настроить хуки для совместной работы в команде.
img
Откройте для себя, как канареечное развертывание может минимизировать риски при обновлении ПО. Узнайте, как постепенно внедрять новые функции и обеспечивать стабильность продукта с помощью этого метода.
img
Откройте для себя GitOps — революционный подход к управлению инфраструктурой через Git. Узнайте, как этот метод упрощает развертывание приложений и повышает надежность с помощью автоматизации и масштабируемости.
Промокод SUMMERSALE2025
40%
50%
65%
До конца акции: 30 дней 24 : 59 : 59