В этой статье на примере Ubuntu/Debian разберём:
- где устанавливать Ansible (и почему не обязательно ставить его на сервер);
- как подключиться к VPS по SSH и проверить доступ;
- как сделать inventory и выполнить первую проверку
ping; - как запускать быстрые команды (ad-hoc) без playbook;
- как написать первый playbook для обновлений и установки пакетов.
Важное: Ansible ставится на ваш компьютер, а не на VPS
Ansible работает по SSH и не требует агента на сервере. Обычно схема такая:
локальный компьютер (control node) — где установлен Ansible;
VPS (managed node) — куда Ansible подключается по SSH и выполняет задачи.
Почему так проще: не нужно ставить Ansible на каждый сервер, следить за версиями и зависимостями. На VPS достаточно SSH и Python.
Шаг 1. Проверяем SSH-доступ к VPS
Сначала убедимся, что вы можете зайти на сервер по SSH обычным способом — Ansible использует тот же механизм.
ssh admin@IP_ВАШЕГО_VPS
Если у вас нестандартный порт (например 22222):
ssh -p 22222 admin@IP_ВАШЕГО_VPS
Если SSH не подключается: Ansible тоже не подключится. Сначала чините SSH (ключи, порт, UFW), потом автоматизацию.
Шаг 2. Установка Ansible на локальном компьютере
Дальше всё делаем на своём компьютере (или на отдельной машине для управления), не на VPS.
Ubuntu/Debian (на локальной машине)
sudo apt update
sudo apt install -y ansible
Проверка версии
ansible --version
Если команда не найдена: значит Ansible не установлен на вашей машине. На VPS это обычно не лечится — ставить надо именно локально, где вы запускаете Ansible.
Шаг 3. Inventory: описываем сервер
Inventory — это список серверов, которыми вы управляете. Создадим простую структуру в отдельной папке проекта.
mkdir -p ansible-vps
cd ansible-vps
Создаём файл hosts.ini:
nano hosts.ini
Пример (замените IP и порт на свои):
[vps]
my_vps ansible_host=83.220.165.21 ansible_user=admin ansible_port=22
Если SSH по ключам: обычно ничего дополнительно указывать не нужно — Ansible возьмёт ключ из стандартного SSH-агента/каталога. Если ключ нестандартный, его можно прописать отдельно (ниже будет пример).
Шаг 4. Проверка связи: ansible ping
Первый запуск — проверим, что Ansible действительно подключается по SSH.
ansible -i hosts.ini vps -m ping
Если всё ок, увидите:
my_vps | SUCCESS => {
"changed": false,
"ping": "pong"
}
Если что-то пошло не так: типовые причины
-
UNREACHABLE / Permission denied — неверный логин/пароль/ключ SSH или не тот порт.
-
Host key verification failed — SSH не доверяет ключу сервера. Зайдите на сервер обычным SSH и подтвердите fingerprint.
-
Python is not installed — на сервере нет Python (редко, но бывает на минимальных образах). Решение — установить Python на VPS (см. ниже).
Если на VPS нет Python (редкий случай)
На Ubuntu/Debian обычно Python уже есть. Но если нет — зайдите на VPS по SSH и выполните:
sudo apt update
sudo apt install -y python3
Ad-hoc команды: быстро выполнить одну задачу
Не всегда нужен playbook. Иногда достаточно выполнить одну команду на сервере.
Пример: узнать аптайм
ansible -i hosts.ini vps -a "uptime"
Пример: проверить диск
ansible -i hosts.ini vps -a "df -h"
Пример: обновить список пакетов (нужен sudo)
ansible -i hosts.ini vps -b -a "apt update"
-b означает выполнение с повышением прав (become, аналог sudo).
Первый playbook: обновления и установка пакетов
Теперь сделаем простой playbook, который:
обновит список пакетов;
установит базовые утилиты (например,
curl,git,ufw);по желанию сделает обновление пакетов.
Создаём файл setup.yml:
nano setup.yml
Вставляем:
- name: Basic VPS setup
hosts: vps
become: true
tasks:
- name: Update apt cache
ansible.builtin.apt:
update_cache: yes
cache_valid_time: 3600
- name: Install base packages
ansible.builtin.apt:
name:
- curl
- git
- ufw
state: present
# Опционально: обновить пакеты (можно включать по ситуации)
- name: Upgrade packages
ansible.builtin.apt:
upgrade: dist
Запуск playbook:
ansible-playbook -i hosts.ini setup.yml
Совет: если боитесь обновлений, временно закомментируйте блок Upgrade packages. В бою обновления лучше делать осознанно.
Если нужен нестандартный SSH-ключ
Если у вас ключ не стандартный (не ~/.ssh/id_rsa и не ~/.ssh/id_ed25519), можно указать его в inventory:
[vps]
my_vps ansible_host=83.220.165.21 ansible_user=admin ansible_port=22 ansible_ssh_private_key_file=~/.ssh/my_key
Либо передать ключ через SSH-конфиг (часто это удобнее, чем плодить параметры в inventory).
Итоги
Поняли, что Ansible ставится на ваш компьютер, а VPS управляется по SSH.
Собрали простой inventory и проверили подключение через
ansible -m ping.Научились запускать ad-hoc команды и использовать
-bдля sudo.Написали первый playbook для обновления и установки базовых пакетов.
Вывод: Ansible — это быстрый способ перестать делать рутину руками. Даже один playbook экономит время и снижает шанс ошибиться, особенно когда серверов становится больше одного.