Ansible для сервера на Ubuntu 24.04: пошаговая установка
Ansible превращает настройку серверов из ручной рутины в код: один раз описали желаемое состояние — и применяете его к любому числу машин командой. Установка Ansible для сервера на Ubuntu 24.04 имеет одну особенность: свежая система не даёт поставить пакеты Python привычным способом и выдаёт ошибку externally-managed-environment. Разберём установку по шагам с учётом этого нюанса, соберём инвентарь и запустим первый плейбук.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Ansible и особенность Ubuntu 24.04
Ansible — инструмент управления конфигурацией без агентов. Он подключается к серверам по обычному SSH и приводит их к описанному состоянию: «пакет установлен», «сервис запущен», «порт открыт». Ничего ставить на управляемые серверы не нужно, вся логика живёт на управляющей машине, а команды выполняются на местах через Python, который в современных системах уже есть.
Особенность Ubuntu 24.04, о которую спотыкаются при установке, — это защита системного Python. В свежих релизах попытка поставить пакет через pip install в систему завершается ошибкой externally-managed-environment. Так дистрибутив защищает свой Python от конфликтов с пакетами, которыми управляет apt. Это не поломка, а осознанное поведение, и у него есть несколько корректных обходов, которые мы и рассмотрим.
Ansible ставится на управляющую машину, а не на каждый сервер. Идеальная роль для неё — небольшой VPS, всегда онлайн и с быстрым каналом до ваших серверов. Ресурсов нужно немного: одно ядро и 1 ГБ памяти, ведь вся нагрузка ложится на управляемые узлы. У MAATRIX такой сервер оплачивается из России картой, по СБП, криптой или токеном MAAT, а root и чистый IP вы получаете сразу.
Шаг 1. Подготовка управляющей машины
Работаем на Ubuntu 24.04. Обновите систему и убедитесь, что с управляющей машины настроен вход по SSH-ключу на целевые серверы — именно через этот механизм Ansible и работает:
apt update && apt upgrade -y
Если ключа ещё нет, создайте пару командой ssh-keygen -t ed25519 и разложите открытую часть на управляемые серверы. Без беспарольного или защищённого агентом доступа по ключу удобной автоматизации не получится: Ansible будет спотыкаться на запросе пароля при каждом подключении. Проверьте, что вручную вы заходите на целевой сервер по ключу без ввода пароля, — это фундамент, на котором стоит всё остальное.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSШаг 2. Способ первый — установка из репозитория
Самый простой и предсказуемый путь на Ubuntu 24.04 — поставить Ansible из репозитория дистрибутива через apt. Так вы обходите проблему externally-managed вовсе, потому что apt управляет и системным Python, и пакетом Ansible согласованно:
apt install -y ansible
ansible --version
Плюс этого способа — простота и отсутствие конфликтов. Минус — версия может быть чуть старше самой свежей. Для большинства задач это несущественно: базовые модули стабильны и меняются редко. Если вам не нужны самые новые возможности, остановитесь на этом варианте — он надёжен и не требует ухищрений.
Шаг 3. Способ второй — свежая версия через pipx
Когда нужна актуальная версия Ansible, правильный на Ubuntu 24.04 инструмент — pipx. Он ставит Python-приложения в изолированные окружения, не трогая системный Python, и потому не вызывает ошибку externally-managed. Именно так теперь рекомендуется ставить приложения на Python в свежих Ubuntu:
apt install -y pipx
pipx ensurepath
pipx install --include-deps ansible
После pipx ensurepath перезайдите в сессию, чтобы обновился PATH, и проверьте ansible --version. Такой Ansible живёт в собственном окружении, обновляется командой pipx и не конфликтует с системными пакетами. Не пытайтесь обойти защиту флагом принудительной установки в систему — это ломает механизм, который дистрибутив выстроил намеренно, и однажды приведёт к конфликтам пакетов. pipx решает задачу чисто.
Шаг 4. Инвентарь серверов
Ansible нужно знать, какими серверами он управляет. Список называется инвентарём. В простом виде это текстовый файл, где серверы сгруппированы по ролям, а общие параметры доступа заданы для группы разом:
[web]
web1 ansible_host=203.0.113.10
web2 ansible_host=203.0.113.11
[web:vars]
ansible_user=root
ansible_ssh_private_key_file=~/.ssh/id_ed25519
Группы удобны тем, что команду можно адресовать сразу всем серверам роли. Проверьте, что Ansible видит серверы и достукивается до них по своему протоколу:
ansible web -i inventory.ini -m ping
Ответ SUCCESS от каждого сервера означает, что связь по SSH настроена и Ansible готов к работе. Если вместо этого приходит UNREACHABLE — дело в SSH-доступе, ключе или адресе, и чинить нужно именно подключение.
Шаг 5. Первый плейбук
Плейбук описывает желаемое состояние в формате YAML. Соберём пример: обновить кеш пакетов, установить Nginx и убедиться, что сервис запущен и включён в автозапуск:
- hosts: web
become: yes
tasks:
- name: Установить Nginx
apt:
name: nginx
state: present
update_cache: yes
- name: Запустить и включить Nginx
service:
name: nginx
state: started
enabled: yes
Каждая задача описывает конечное состояние, а не команды: become: yes повышает права через sudo. Примените плейбук командой ansible-playbook -i inventory.ini site.yml. Ansible покажет для каждого сервера, что изменилось, а что уже было в нужном состоянии. Запустите плейбук второй раз — почти всё покажет ok, ничего не меняя. Это идемпотентность: повторный прогон безопасен, и плейбук можно применять регулярно без страха что-то сломать.
Шаг 6. Организация и дальнейшие шаги
Когда основы освоены, наведите порядок. Секреты — пароли и токены — не храните в открытом виде: для них есть Ansible Vault, шифрующий чувствительные файлы. Повторяющуюся логику выносите в роли, которые переиспользуются на разных серверах. Весь код держите в Git: тогда история изменений инфраструктуры видна, а откат к рабочей версии делается одной командой. Файл ansible.cfg в папке проекта задаёт умолчания, чтобы не указывать инвентарь и пользователя в каждой команде.
По мере роста парка серверов такая структура из инвентаря, ролей, зашифрованных секретов и версионирования превращает управление в спокойный инженерный процесс. А стабильный управляющий VPS на Ubuntu 24.04, всегда доступный и с быстрым каналом до ваших серверов, делает запуск плейбуков делом нескольких секунд. Нарастить его ресурсы, если парк серьёзно вырастет, можно в любой момент — хотя управляющему узлу редко требуется много.
Отдельно стоит завести привычку тестировать плейбуки перед боевым применением. Режим проверки, когда Ansible показывает планируемые изменения, ничего не трогая, спасает от случайного прогона по не тем серверам. Прогоняйте через него любой значимый плейбук, особенно на машинах с данными: несколько секунд проверки экономят часы на устранении последствий неаккуратного запуска.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Почему на Ubuntu 24.04 pip install Ansible выдаёт ошибку?
Это externally-managed-environment — защита системного Python. Ставьте Ansible через apt или свежую версию через pipx, не обходя защиту силой.
apt или pipx для установки?
apt проще и без конфликтов, но версия чуть старше. pipx ставит актуальную версию в изолированное окружение, не трогая системный Python. Оба варианта корректны.
Нужно ли ставить Ansible на управляемые серверы?
Нет. Ansible ставится только на управляющую машину и работает по SSH. Агенты на управляемых узлах не нужны.
Что делать при ответе UNREACHABLE?
Проблема в SSH-доступе. Проверьте вход по ключу вручную и сверьте пользователя, ключ и адрес в инвентаре.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.