Установка Workstation на Ubuntu 22.04/24.04 | DevOps окружение | AdminWiki

Установка Workstation на Ubuntu: Полное руководство для DevOps

18 декабря 2025 10 мин. чтения #devops #docker #kubernetes #linux #ubuntu #workstation #настройка #разработка #установка
Содержание статьи

Представь, что это твой первый день на позиции DevOps инженера. Тебе выдали ноутбук с чистой Ubuntu, и теперь нужно превратить его в мощную рабочую станцию, на которой можно развернуть локальный кластер Kubernetes, писать код, тестировать конфигурации и автоматизировать процессы. Давай разберем, как это сделать правильно.

В этой статье я покажу не просто установку программ, а создание целостной экосистемы для эффективной работы. Мы пройдем от базовой настройки системы до профессиональных инструментов мониторинга и оркестрации.

Подготовка Ubuntu к установке Workstation

Перед тем как начать установку основных инструментов, нужно подготовить систему. Это как подготовка строительной площадки перед возведением здания — фундамент должен быть прочным.

Обновление системы и установка базовых утилит

Первым делом обновим пакеты и установим инструменты, которые понадобятся на каждом шагу:

bash
# Обновляем список пакетов и систему
sudo apt update && sudo apt upgrade -y

# Устанавливаем базовые утилиты
sudo apt install -y \
  curl \
  wget \
  git \
  vim \
  htop \
  net-tools \
  build-essential \
  software-properties-common \
  apt-transport-https \
  ca-certificates \
  gnupg \
  lsb-release

# Проверяем версию Ubuntu
lsb_release -a
Совет ментора: Всегда начинай с обновления системы. Это не только безопасность, но и совместимость пакетов. Команда lsb_release -a покажет точную версию Ubuntu — запомни её, она понадобится при установке некоторых инструментов.

Установка Docker и Docker Compose

Docker — это основа современной DevOps культуры. Он позволяет создавать изолированные среды для приложений. Установим его официальным способом:

Добавление Docker репозитория

bash
# Добавляем GPG ключ Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Добавляем репозиторий Docker
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Обновляем пакеты и устанавливаем Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Добавляем текущего пользователя в группу docker (чтобы не использовать sudo)
sudo usermod -aG docker $USER
newgrp docker

# Проверяем установку
docker --version
docker compose version
Важно: После добавления пользователя в группу docker нужно перезапустить сессию или выполнить newgrp docker. Без этого придется использовать sudo для каждой docker команды.

Тестовый запуск Docker

bash
# Запускаем тестовый контейнер
docker run hello-world

# Проверяем работу Docker Compose на примере
echo 'version: "3"
services:
  nginx:
    image: nginx:alpine
    ports:
      - "8080:80"' > docker-compose-test.yml

docker compose -f docker-compose-test.yml up -d

# Проверяем, что контейнер работает
docker ps
curl localhost:8080

Установка Kubernetes инструментов

Для работы с Kubernetes на рабочей станции нам понадобятся kubectl, minikube или kind. Давай установим всё необходимое.

Установка kubectl

bash
# Скачиваем последнюю версию kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

# Делаем файл исполняемым и перемещаем в PATH
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# Проверяем установку
kubectl version --client

Установка Minikube для локального кластера

bash
# Скачиваем и устанавливаем Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# Запускаем Minikube с драйвером Docker (самый простой вариант)
minikube start --driver=docker

# Проверяем статус
minikube status
kubectl get nodes

# Включаем дополнения (по желанию)
minikube addons enable dashboard
minikube addons enable metrics-server

Установка IDE и инструментов разработки

Хороший инструмент — половина успеха. Выбор IDE зависит от предпочтений, но я рекомендую VS Code как наиболее универсальный вариант.

Установка Visual Studio Code

bash
# Добавляем репозиторий VS Code
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg

# Добавляем репозиторий
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'

# Устанавливаем VS Code
sudo apt update
sudo apt install -y code

# Устанавливаем полезные расширения для DevOps
code --install-extension ms-azuretools.vscode-docker
code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools
code --install-extension hashicorp.terraform
code --install-extension redhat.vscode-yaml
code --install-extension eamodio.gitlens

Установка инструментов для работы с инфраструктурой

Для современного DevOps нужны инструменты Infrastructure as Code:

bash
# Установка Terraform
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform

# Установка Ansible
sudo apt install -y ansible

# Установка Packer
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt update && sudo apt install packer

Мониторинг и отладка

Без мониторинга мы работаем вслепую. Установим инструменты для наблюдения за системой и приложениями.

Установка Prometheus и Grafana для локального использования

bash
# Создаем директорию для конфигов мониторинга
mkdir -p ~/monitoring && cd ~/monitoring

# Создаем docker-compose файл для стека мониторинга
cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    ports:
      - "9090:9090"
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    ports:
      - "3000:3000"
    restart: unless-stopped

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    ports:
      - "9100:9100"
    restart: unless-stopped

volumes:
  prometheus_data:
  grafana_data:
EOF

# Создаем конфиг Prometheus
cat > prometheus.yml << 'EOF'
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node-exporter'
    static_configs:
      - targets: ['node-exporter:9100']
EOF

# Запускаем стек мониторинга
docker compose up -d
Что мы получили: Теперь у тебя работает локальный Prometheus на порту 9090 (метрики), Grafana на порту 3000 (дашборды, логин: admin/admin) и node-exporter на порту 9100 (метрики хоста). Это полноценная система мониторинга на твоей рабочей станции.

Настройка окружения и автоматизация

Настроим окружение так, чтобы работать было удобно и эффективно.

Настройка Bash и создание алиасов

bash
# Добавляем полезные алиасы в ~/.bashrc
echo '
# Docker алиасы
alias d="docker"
alias dc="docker compose"
alias dcp="docker compose ps"
alias dcu="docker compose up -d"
alias dcd="docker compose down"
alias dcl="docker compose logs -f"

# Kubernetes алиасы
alias k="kubectl"
alias kgp="kubectl get pods"
alias kgn="kubectl get nodes"
alias kgs="kubectl get services"
alias kd="kubectl describe"

# Системные алиасы
alias ll="ls -la"
alias hg="history | grep"
alias ports="netstat -tulpn | grep LISTEN"

# Функция для быстрого перехода в директории проектов
proj() {
  cd ~/projects/$1
}

# Автодополнение для kubectl
source <(kubectl completion bash)
complete -F __start_kubectl k
' >> ~/.bashrc

# Применяем изменения
source ~/.bashrc

Создание структуры рабочих директорий

bash
# Создаем структуру для проектов
mkdir -p ~/projects/{
  kubernetes,
  docker,
  terraform,
  ansible,
  scripts,
  monitoring,
  tmp
}

# Создаем директорию для конфигов
mkdir -p ~/.config/{
  kubectl,
  terraform,
  docker
}

# Копируем конфиг kubectl если есть кластер
if [ -f ~/.kube/config ]; then
  cp ~/.kube/config ~/.config/kubectl/
fi

Сравнение инструментов мониторинга

Инструмент Назначение Сложность Рекомендация для Workstation
Prometheus + Grafana Метрики и дашборды Средняя ✅ Отлично подходит
Elastic Stack Логи и поиск Высокая ⚠️ Только для специфичных задач
Loki + Grafana Логи Низкая ✅ Хорошая альтернатива Elastic
Jaeger Трейсинг Средняя ⚠️ Только для микросервисов

Проверка работоспособности Workstation

После установки всех компонентов проверим, что всё работает корректно:

bash
#!/bin/bash

echo "=== Проверка установленных инструментов ==="

# Проверяем Docker
echo -n "Docker: "
docker --version 2>/dev/null && echo "✅" || echo "❌"

# Проверяем Docker Compose
echo -n "Docker Compose: "
docker compose version 2>/dev/null && echo "✅" || echo "❌"

# Проверяем kubectl
echo -n "kubectl: "
kubectl version --client 2>/dev/null && echo "✅" || echo "❌"

# Проверяем Minikube
echo -n "Minikube: "
minikube version 2>/dev/null && echo "✅" || echo "❌"

# Проверяем Terraform
echo -n "Terraform: "
terraform version 2>/dev/null && echo "✅" || echo "❌"

# Проверяем Ansible
echo -n "Ansible: "
ansible --version 2>/dev/null && echo "✅" || echo "❌"

# Проверяем VS Code
echo -n "VS Code: "
code --version 2>/dev/null && echo "✅" || echo "❌"

# Проверяем запущенные сервисы
echo "\n=== Запущенные сервисы на портах ==="
ss -tulpn | grep -E ':(9090|3000|9100|8080)' | while read line; do
  echo "✅ $line"
done

echo "\n=== Проверка завершена ==="

Часто задаваемые вопросы (FAQ)

Какой дистрибутив Ubuntu лучше выбрать для Workstation?

Для рабочей станции я рекомендую Ubuntu LTS (Long Term Support) версии — 22.04 или 24.04. Они стабильны, хорошо документированы и имеют длительную поддержку. Избегай не-LTS версий для production-подобных окружений.

Нужно ли устанавливать все перечисленные инструменты?

Нет, это полный стек. Начни с Docker, kubectl и IDE. Остальные инструменты устанавливай по мере необходимости. Мониторинг, например, нужен не всем, а только тем, кто работает с production-подобными средами.

Как освободить место после работы с Docker?

Используй команды очистки: docker system prune -a удалит неиспользуемые образы, контейнеры и volumes. docker volume prune удалит неиспользуемые volumes. Будь осторожен — эти команды удаляют данные безвозвратно.

Можно ли использовать Podman вместо Docker?

Да, Podman — хорошая альтернатива Docker, особенно если важна безопасность (работает без демона root). Но учти, что не все инструменты (особенно старые) могут с ним корректно работать. Docker пока остается стандартом де-факто.

Как перенести настройки Workstation на другой компьютер?

Создай скрипт установки (как в этой статье) и сохрани его в Git. Конфиги IDE, bash-алиасы и dot-файлы тоже храни в репозитории. Используй Ansible для автоматической настройки новых машин.

Итог: что мы получили

После выполнения всех шагов у тебя готова полноценная DevOps Workstation на Ubuntu с:

  • Контейнеризацией (Docker) и оркестрацией (Kubernetes/Minikube)
  • Инструментами Infrastructure as Code (Terraform, Ansible)
  • Мощной IDE с расширениями для DevOps
  • Локальным стеком мониторинга (Prometheus + Grafana)
  • Удобным окружением с алиасами и структурированными директориями

Такая рабочая станция позволит тебе разрабатывать, тестировать и отлаживать сложные системы локально, перед их развертыванием в production. Помни: хороший инструмент не заменяет знания, но делает их применение эффективнее.

Поделиться:
Сохранить гайд? В закладки браузера