Управление даже 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
- 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 сегодня — завтра рутина исчезнет.



