Как начать работу с Ansible на машине без установленного Python

Ответ

Ansible требует Python на управляемых нодах, но на контроллере (откуда запускаются плейбуки) Python обязателен. Если на контроллере его нет, есть несколько практических путей:

1. Установка через системный пакетный менеджер (наиболее простой):

# Для Ubuntu/Debian
sudo apt update && sudo apt install -y ansible

# Для CentOS/RHEL
sudo yum install -y epel-release
sudo yum install -y ansible

Этот метод автоматически установит Python как зависимость.

2. Использование Docker-образа с Ansible (идеально для CI/CD или изолированных сред): Создаю Dockerfile:

FROM alpine:latest
RUN apk add --no-cache ansible openssh-client
WORKDIR /ansible

Или запускаю плейбук напрямую:

docker run --rm -v $(pwd):/ansible -w /ansible ansible/ansible-runner ansible-playbook site.yml

3. Установка в виртуальном окружении Python (для контроля версий): Если Python на системе есть, но нет прав на глобальную установку:

python3 -m venv ansible-venv
source ansible-venv/bin/activate
pip install ansible

Ключевой момент: Для управления целевыми хостами (нодами) без Python можно использовать модуль raw для начальной bootstrap-установки Python, а затем уже все остальные модули. Например, для Ubuntu-хоста:

- name: Bootstrap Python on target host
  raw: apt-get update && apt-get install -y python3-minimal

Ответ 18+ 🔞

А, ну это классика, ёпта! Ситуация, знакомая до боли. Запускаешь Ansible, а он тебе такое выдает, что волосы дыбом встают — Python, блядь, не найден! Сам от себя охуеешь, потому что вроде всё по инструкции делал.

Так вот, слушай сюда, главное не путать, где кто должен быть. Python обязательно нужен на той машине, откуда ты команды раздаешь, то есть на контроллере. Это святое. Если его там нет — это пиздопроебибна ситуация, и её надо решать в первую очередь. А на тех серверах, которыми ты управляешь (нодах), он тоже нужен, но его можно поставить уже с помощью самого Ansible, если очень приспичило. Хитро, да?

Ну ладно, давай по порядку, как из этой задницы вылезти.

1. Поставить через родной менеджер пакетов (самый простой путь, если не хочешь мозги парить). Это как в магазин сходить — взял с полки, заплатил, и всё готово. Система сама подтянет Python как зависимость, даже не спросит. Красота!

# Если ты на Убунте или чем-то подобном
sudo apt update && sudo apt install -y ansible

# А если на CentOS или RHEL сидишь
sudo yum install -y epel-release
sudo yum install -y ansible

Сделал это — и можно выдохнуть, ебать мои старые костыли. Основная проблема решена.

2. Запихнуть всё в Docker (для параноиков или когда на основной системе вообще ничего ставить нельзя). Представь, что у тебя гостиница для одной программы. Зашел, поработал, вышел — и ни соринки после тебя. Идеально для каких-нибудь автоматических пайплайнов или если ты, например, на макбуке, а работать надо.

Можно собрать свой образ, если ты тот ещё выёбывайло:

FROM alpine:latest
RUN apk add --no-cache ansible openssh-client
WORKDIR /ansible

А можно и не заморачиваться, взять готовый и сразу в бой:

docker run --rm -v $(pwd):/ansible -w /ansible ansible/ansible-runner ansible-playbook site.yml

Удобно, изолированно, и система чиста. Но тут надо с вольюмами и сетью не накосячить, а то будет тебе хиросима.

3. Виртуальное окружение Python (когда ты полупидор: права админские есть, но ставить глобально страшно). Это как своя отдельная квартирка для Ansible. Поставил туда — и он там сидит, никому не мешает. Если основная система сломается или версии конфликтуют — просто удалил папку и создал заново. Волшебство!

python3 -m venv ansible-venv  # Строим квартирку
source ansible-venv/bin/activate  # Заселяемся
pip install ansible  # И вешаем люстру

Главное — не забывать активировать эту виртуалку перед работой, а то будешь как дурак сидеть и думать, почему ничего не работает.

А теперь самый сок, про ноды! Вот тут часто ступор бывает. Прилетаешь на свежий, голый сервер, а там Pythonа — как говна за баней. И все модули Ansible, кроме одного убогого, на него завязаны. Подозрение ебать чувствую, что сейчас всё накроется медным тазом.

Но не всё так плохо! Есть модуль raw. Это как швейцарский нож в мире Ansible — тупой, но универсальный. Он не требует Python на целевой машине, потому что просто выполняет команды по SSH, как будто ты руками в консоли пишешь. Им-то и можно поставить Python первой же командой!

Смотри, как это выглядит в плейбуке:

- name: Bootstrap Python on target host
  raw: apt-get update && apt-get install -y python3-minimal

Запустил эту таску — и вуаля, на ноде теперь есть Python. Дальше можно уже использовать все эти умные yum, apt, copy и прочие модули, которые делают жизнь проще. Без этого первого шага — нихуя не выйдет, только сырые команды гонять, а это, простите, каменный век.

Короче, суть в чём: сначала приведи в порядок свой контроллер, поставь там Ansible с Python. А уж потом, как царь, наводи марафет на всех остальных серверах, используя raw как трамплин. Всё просто, как три копейки. Главное — начать.