Главная/Разработка/Ansible

Установка Ansible и плейбук для настройки нового VPS

Установка Ansible нужна, чтобы настройку нового сервера описать файлом и повторять её одной командой на любом количестве машин. Ansible работает без агента: он ставится только на вашем компьютере и подключается к серверам по SSH, а сервер должен иметь Python и пользователя, под которым можно войти.

5 мин чтенияДанные проверены 16 октября 2026

Ответ за 30 секунд

Ansible окупается со второго сервера: плейбук из десятка задач создаёт пользователя, ключ, файрвол и закрывает вход по паролю. Отключайте вход root и пароль только после того, как проверили вход нового пользователя по ключу, иначе сервер закроется от вас самих.

Почасовая оплата: создайте чистый сервер, прогоните плейбук и удалите, если что-то пошло не так.

Ansible, cloud-init или ручная настройка нового VPS

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
  1. Запустите: ansible-playbook -i inventory.ini bootstrap.yml. Порт 22 плейбук оставляет открытым, а 80 и 443 готовят сервер под Nginx или Caddy.
  2. Проверьте вход новым пользователем в соседнем окне: ssh deploy@203.0.113.10.
  3. Смените инвентарь на 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

Два ответа, и подсказка предложит способ

Сколько серверов нужно настроить
Как часто повторяется настройка

Когда плейбуков станет много, к ним добавляют веб-интерфейсы вроде AWX или Semaphore, но начинать с них необязательно. Следующий шаг после базовой подготовки: Caddy для HTTPS и Portainer для контейнеров.

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.

SBРедакция SelfBase · обновлено 16 октября 2026

Запустите свой сервер за пару минут

Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.

  • NVMe-диски и гарантированная доля процессора
  • Root-доступ и любой софт, от Docker до игровых серверов
  • Маркетплейс: 91 приложение в один клик
  • Бесплатный перенос проекта силами специалистов
Что выбрать