Новости

Ansible для управления VPS: автоматизация рутины без головной боли

Управление даже 3–5 VPS вручную превращается в рутину: обновления, установка пакетов, настройка firewall, деплой кода. Ошибка в одной команде — и сервер падает. Мы используем Ansible на 40+ проектах белорусских компаний и видим: после перехода время на администрирование падает в 5–10 раз, а ошибки почти исчезают.

Ansible — инструмент без агентов, работает по SSH, описывает инфраструктуру как код. Ниже — минимальный рабочий сетап, который мы ставим первым делом. Всё проверено в 2026 году на Ubuntu/Debian VPS.

Установка и первый inventory

На локальной машине (Mac/Linux/Windows с WSL):

pip3 install ansible

Или через пакетный менеджер: sudo apt install ansible

Создайте папку проекта: mkdir ~/ansible-vps && cd ~/ansible-vps

Файл inventory.ini:

[all]

vps1 ansible_host=your.ip.1 ansible_user=youruser ansible_port=2222 vps2 ansible_host=your.ip.2 ansible_user=youruser ansible_port=2222

[webservers] vps1

[databases] vps2

Проверьте связь: ansible all -m ping

Если OK — готово. Добавьте ansible_ssh_private_key_file в inventory, если используете ключи.

Первые playbooks: обновления и базовая безопасность

Создайте файл update.yml:

  • name: Обновить все VPS hosts: all become: yes tasks:
    • name: Обновить список пакетов apt: update_cache: yes
    • name: Обновить все пакеты apt: upgrade: dist
    • name: Удалить ненужные пакеты apt: autoremove: yes

Запуск: ansible-playbook update.yml

Теперь playbook для базовой безопасности (security.yml):

  • name: Настроить базовую защиту hosts: all become: yes vars: ssh_port: 2222 tasks:
    • name: Изменить SSH-порт и отключить пароль lineinfile: path: /etc/ssh/sshd_config regexp: ‘^#?Port ‘ line: ‘Port {{ ssh_port }}’ notify: Restart SSH
    • name: Отключить парольную аутентификацию lineinfile: path: /etc/ssh/sshd_config regexp: ‘^#?PasswordAuthentication ‘ line: ‘PasswordAuthentication no’ notify: Restart SSH
    • name: Включить UFW и разрешить SSH ufw: rule: allow port: ‘{{ ssh_port }}’ proto: tcp
    • name: Включить UFW ufw: state: enabled
    handlers:
    • name: Restart SSH service: name: ssh state: restarted

Запуск: ansible-playbook security.yml

Один playbook — и все серверы в одинаковом безопасном состоянии.

Роли и продакшен: деплой и мониторинг

Создайте структуру ролей: ansible-galaxy init roles/common ansible-galaxy init roles/docker

В roles/common/tasks/main.yml добавьте установку Docker, Netdata, Fail2Ban.

Пример простого деплоя:

  • name: Деплой приложения hosts: webservers become: yes tasks:
    • name: Pull latest Docker image docker_image: name: yourimage:latest source: pull
    • name: Deploy container docker_container: name: app image: yourimage:latest restart_policy: unless-stopped ports:
      • «80:80»

Для нескольких серверов используйте группы и vars_files. Добавьте vault для секретов: ansible-vault create group_vars/all/vault.yml

Мы так автоматизируем: еженедельные обновления, деплой по git push, добавление новых серверов одной строкой в inventory. Ошибки сводятся к минимуму — всё в git, всё повторяемо.

Выводы

Ansible превращает управление VPS из хаоса в код. Начните с inventory и двух playbook — за 1–2 часа вы автоматизируете обновления и безопасность. Для белорусских проектов с 3+ серверами это must-have: экономит часы каждую неделю и защищает от человеческих ошибок. Мы используем Ansible на всех инфраструктурах в 2026 году — и не планируем возвращаться к ручному ssh. Создайте первый playbook сегодня — завтра рутина исчезнет.