Установка и первоначальная настройка Ansible на Ubuntu 24.04
Цель: быстро и правильно поставить Ansible с учётом «externally managed» (PEP 668) и сделать первый запуск.
Суть: не ставим пакеты в системный Python через pip. Используем APT (ansible-core), либо pipx (полный ansible), либо PPA.
1) Установка (выбери один из путей)
Вариант 1 — APT (поддерживаемый дистрибутивом, ставит ядро)
sudo apt update
sudo apt install ansible-core
ansible --version
Вариант 2 — pipx (изолированно, ставит «полный» ansible)
sudo apt update
sudo apt install pipx
pipx ensurepath
pipx install --include-deps ansible
ansible --version
Вариант 3 — Официальный PPA (пакетный «полный» ansible)
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
ansible --version
Почему так: PEP 668 запрещает системный
pip install ansibleбез изоляции. Если очень нужно — существуетpip install ... --break-system-packages(не рекомендуется).
2) Подготовка рабочей директории
mkdir -p ~/ansible-projects/{inventories,playbooks,roles,group_vars,host_vars}
cd ~/ansible-projects
3) Минимальный ansible.cfg
Создай ansible.cfg в корне проекта:
[defaults]
inventory = ./inventories/inventory.ini
# Проверку ключей лучше не отключать. Примем новые ключи автоматически:
host_key_checking = True
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=accept-new
pipelining = True
[privilege_escalation]
become = True
become_method = sudo
4) SSH-ключ и доступ
# Создать ключ
ssh-keygen -t ed25519 -C "ansible@yourdomain"
# Залить ключ на хост
ssh-copy-id username@server_ip
5) Мини-инвентори и первый пинг
Создай inventories/inventory.ini:
[test]
test-server ansible_host=192.168.1.100 ansible_user=username
[all:vars]
ansible_python_interpreter=/usr/bin/python3
Проверка:
ansible all -m ping # если inventory указан в ansible.cfg
# или
ansible all -i inventories/inventory.ini -m ping
Успех выглядит так:
test-server | SUCCESS => {"changed": false, "ping": "pong"}
6) Коллекции (когда нужен функционал вне ядра)
ansible-core — это движок. Нужные модули берём коллекциями:
ansible-galaxy collection install community.general
7) Обновления
-
APT (ansible-core):
sudo apt update && sudo apt upgrade -
pipx (ansible):
pipx upgrade ansible -
PPA (ansible):
sudo apt update && sudo apt upgrade
8) Куда что установилось
-
Проект:
~/ansible-projects -
Конфиг:
~/ansible-projects/ansible.cfg -
Инвентори:
~/ansible-projects/inventories/inventory.ini -
Ключи SSH:
~/.ssh/
9) Короткие проверки
ansible --version
ansible all --list-hosts
ansible all -m command -a "uname -a"
ansible all -m command -a "df -h"
Памятка по безопасности
-
Используй SSH-ключи вместо паролей.
-
Не отключай
host_key_checking; вариантaccept-newудобен и безопаснее глобальногоFalse. -
Разделяй окружения: APT для «ядра»,
pipx/venv для приложений и сценариев.

No comments to display
No comments to display