Главная/Разработка/Ansible
Установка Ansible и плейбук для настройки нового VPS
Установка Ansible нужна, чтобы настройку нового сервера описать файлом и повторять её одной командой на любом количестве машин. Ansible работает без агента: он ставится только на вашем компьютере и подключается к серверам по SSH, а сервер должен иметь Python и пользователя, под которым можно войти.
Ответ за 30 секунд
Ansible окупается со второго сервера: плейбук из десятка задач создаёт пользователя, ключ, файрвол и закрывает вход по паролю. Отключайте вход root и пароль только после того, как проверили вход нового пользователя по ключу, иначе сервер закроется от вас самих.
Почасовая оплата: создайте чистый сервер, прогоните плейбук и удалите, если что-то пошло не так.
Ansible, cloud-init или ручная настройка нового VPSбез агентана сервере ничего ставить не надо
22порт SSH, по которому идёт работа
--checkпроверка плейбука без изменений
01 · 1 мин
Что такое Ansible и зачем он для нового VPS#
Ansible это программа, которая читает ваш файл с описанием настроек и приводит сервер к этому состоянию. Сами серверы при этом создаёт кто-то другой: вы в панели, по API или Terraform. Главное свойство: идемпотентность, то есть повторный запуск не меняет то, что уже в порядке, и безопасен.
| Термин | Что это |
|---|---|
| Инвентарь | Файл со списком серверов и способом входа |
| Плейбук | Файл YAML со списком задач, которые нужно выполнить |
| Модуль | Готовое действие: поставить пакет, создать пользователя, правило файрвола |
| Обработчик (handler) | Действие после изменений, например перезапуск SSH |
Docker есть в маркетплейсе Таймвеб Клауд и ставится вместе с сервером в один клик (53 784 установки на 14 октября 2026). Плейбук нужен для остального: пользователи, ключи, файрвол, обновления, нужная версия пакетов.
02 · 1 мин
Установка Ansible на Ubuntu, macOS и Windows#
Ansible ставится на управляющую машину, то есть на ваш компьютер. Подойдёт любая UNIX-подобная система: Ubuntu, Debian, macOS. Windows без подсистемы WSL как управляющая машина не поддерживается, поэтому установите Ubuntu внутри WSL.
sudo apt update && sudo apt install ansible
# или через pipx, как рекомендует документация:
pipx install --include-deps ansible
ansible --version
Пакет ansible тянет за собой набор готовых коллекций, а минимальный ansible-core содержит только встроенные модули. Для плейбука ниже нужны модули из коллекций ansible.posix и community.general: с ansible-core их ставят вручную, ansible-galaxy collection install ansible.posix community.general. На самом сервере Ansible не нужен, но Python на нём должен быть.
03 · 1 мин
Плейбук Ansible для нового сервера: пользователь, ключ, ufw и SSH#
Инвентарь на один новый сервер. Первый прогон идёт под root, потому что другого пользователя ещё нет:
[new]
203.0.113.10 ansible_user=root
---
- name: Подготовка нового сервера
hosts: new
become: true
vars:
admin_user: deploy
admin_key: "{{ lookup('file', '~/.ssh/id_ed25519.pub') }}"
tasks:
- name: Обновить пакеты
ansible.builtin.apt:
update_cache: true
upgrade: dist
- name: Поставить базовые пакеты
ansible.builtin.apt:
name: [ufw, fail2ban, unattended-upgrades, curl, git]
state: present
- name: Создать пользователя
ansible.builtin.user:
name: "{{ admin_user }}"
groups: sudo
append: true
shell: /bin/bash
- name: Положить ключ
ansible.posix.authorized_key:
user: "{{ admin_user }}"
key: "{{ admin_key }}"
- name: Разрешить sudo без пароля
ansible.builtin.copy:
dest: "/etc/sudoers.d/{{ admin_user }}"
content: "{{ admin_user }} ALL=(ALL) NOPASSWD:ALL\n"
mode: "0440"
validate: /usr/sbin/visudo -cf %s
- name: Открыть SSH, HTTP и HTTPS
community.general.ufw:
rule: allow
port: "{{ item }}"
proto: tcp
loop: ["22", "80", "443"]
- name: Включить файрвол
community.general.ufw:
state: enabled
policy: deny
- name: Запретить вход root и вход по паролю
ansible.builtin.copy:
dest: /etc/ssh/sshd_config.d/10-hardening.conf
content: |
PermitRootLogin no
PasswordAuthentication no
mode: "0644"
notify: Перезапустить ssh
handlers:
- name: Перезапустить ssh
ansible.builtin.service:
name: ssh
state: restarted
- Запустите:
ansible-playbook -i inventory.ini bootstrap.yml. Порт 22 плейбук оставляет открытым, а 80 и 443 готовят сервер под Nginx или Caddy. - Проверьте вход новым пользователем в соседнем окне:
ssh deploy@203.0.113.10. - Смените инвентарь на
ansible_user=deployи запустите ещё раз с ключом--check --diff: все задачи должны показать ok, а не changed.
Настройки SSH лежат в отдельном файле каталога sshd_config.d не случайно: в нём первое найденное значение побеждает, а облачные образы нередко приносят свой файл с разрешённым паролем. Каталог читают Ubuntu 22.04 и новее и Debian 12.
04 · 1 мин
Ошибки Ansible при первом запуске: доступ, Python и sudo#
| Сообщение | Причина | Что сделать |
|---|---|---|
| UNREACHABLE: Permission denied (publickey) | Неверный пользователь или ключ, у сервера нет вашего публичного ключа | Проверьте ssh root@IP руками и укажите ключ через ansible_ssh_private_key_file |
| Нужен вход по паролю | Ключа ещё нет, на сервер вход по паролю из письма | Поставьте пакет sshpass и добавьте --ask-pass |
| Missing sudo password | У пользователя нет права sudo без пароля | Добавьте --ask-become-pass или файл в sudoers.d, как в плейбуке |
| couldn't resolve module community.general.ufw | Установлен минимальный ansible-core без коллекций | Выполните ansible-galaxy collection install community.general |
| Не найден Python на сервере | Минимальный образ без python3 | Поставьте его модулем raw: ansible new -m raw -a "apt install -y python3" |
Не закрывайте SSH, пока не проверили ключ
Плейбук отключает пароль и вход root. Оставьте открытым сеанс под root до тех пор, пока второе окно не вошло под deploy по ключу. Если ключ не подошёл, исправить это можно только из открытого сеанса или консоли сервера.
Инструмент · 1 мин
Ansible, cloud-init или ручная настройка нового VPS#
В Таймвеб Клауд сервером управляют через API, CLI и Terraform, а образы поддерживают cloud-init, то есть скрипт первой загрузки. Он удобен для самых первых шагов, например добавить ключ. Всё, что нужно повторять и проверять потом, удобнее держать в плейбуке.
Чем настраивать новый сервер: руками, cloud-init или Ansible
Два ответа, и подсказка предложит способ
06 · 1 мин
Вопросы об установке Ansible#
Нужно ли ставить Ansible на сервер?
Нет. Ansible работает без агента: его ставят только на вашем компьютере, а на сервере нужны SSH и Python. Сервер можно настроить сразу после создания.
Как установить Ansible на Windows?
Включите подсистему WSL, поставьте в ней Ubuntu и установите Ansible как на обычной Ubuntu. Windows без WSL как управляющая машина не поддерживается.
Чем Ansible отличается от Terraform?
Terraform создаёт сами серверы, диски и домены, а Ansible настраивает то, что внутри: пакеты, пользователей, файрвол. Их часто используют вместе: сначала сервер создаётся, затем настраивается.
Как проверить плейбук Ansible, не меняя сервер?
Запустите ansible-playbook с ключами --check --diff: Ansible покажет, что изменил бы, и не тронет сервер. На самом первом прогоне часть задач, зависящих от созданного пользователя, в этом режиме упадёт.
Почему этому можно верить
Как мы проверяли
Источники цифр на этой странице: VPS и VDS серверы Таймвеб Клауд, timeweb.cloud/services/vds-vps, проверено 14 октября 2026; Маркетплейс приложений Таймвеб Клауд, timeweb.cloud/marketplace, проверено 14 октября 2026; Документация Ansible: установка, docs.ansible.com/ansible/latest/installation_guide/intro_installation.html, проверено 15 октября 2026.
Запустите свой сервер за пару минут
Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.
- NVMe-диски и гарантированная доля процессора
- Root-доступ и любой софт, от Docker до игровых серверов
- Маркетплейс: 91 приложение в один клик
- Бесплатный перенос проекта силами специалистов