Home » Установка и настройка Ansible на Ubuntu 24
Установка и настройка Ansible на Ubuntu 24

Установка и настройка Ansible на Ubuntu 24

Ansible — это тот инструмент, который может превратить вашу жизнь системного администратора из хаотичного танца с командной строкой в элегантное дирижирование оркестром серверов. Если вы устали от ручного деплоя, копипастинга конфигов и бесконечных SSH-сессий, то настало время познакомиться с этим красавцем поближе. В Ubuntu 24 (Jammy Jellyfish) установка Ansible стала ещё проще, а возможности — шире.

Эта статья поможет вам быстро поднять Ansible на свежей Ubuntu 24, разберём все подводные камни и покажем реальные примеры использования. Вы узнаете, как превратить рутинные задачи в автоматизированные плейбуки, масштабировать инфраструктуру и спать спокойно, зная, что все ваши серверы настроены одинаково.

Что такое Ansible и зачем он нужен?

Ansible — это агентлесс система управления конфигурациями, которая работает через SSH. Никаких дополнительных демонов на целевых машинах, никаких сложных настроек PKI. Просто YAML-файлы с задачами и SSH-ключи. Красота в простоте!

Основные преимущества:

  • Агентлесс архитектура — нужен только SSH доступ
  • Идемпотентность — можно запускать плейбуки много раз без побочных эффектов
  • YAML синтаксис — читабельный и понятный формат
  • Огромная библиотека модулей — от управления пакетами до работы с облачными провайдерами
  • Активное сообщество — куча готовых ролей на Ansible Galaxy

Установка Ansible на Ubuntu 24

В Ubuntu 24 есть несколько способов установки Ansible. Рассмотрим самые популярные:

Способ 1: Установка через APT (рекомендуется)

# Обновляем индекс пакетов
sudo apt update

# Устанавливаем Ansible
sudo apt install ansible -y

# Проверяем версию
ansible --version

Способ 2: Установка через PIP (для самой свежей версии)

# Устанавливаем pip, если его нет
sudo apt install python3-pip -y

# Устанавливаем Ansible через pip
pip3 install ansible

# Добавляем путь в ~/.bashrc (если нужно)
echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc
source ~/.bashrc

# Проверяем установку
ansible --version

Способ 3: Установка через официальный PPA

# Добавляем PPA
sudo add-apt-repository ppa:ansible/ansible -y

# Обновляем индекс пакетов
sudo apt update

# Устанавливаем Ansible
sudo apt install ansible -y

Лично я рекомендую первый способ для продакшена — он более стабильный. Если нужны самые свежие фичи, то второй способ через pip.

Первоначальная настройка

После установки нужно создать базовую структуру файлов:

# Создаём рабочую директорию
mkdir ~/ansible-workspace
cd ~/ansible-workspace

# Создаём файл инвентаря
touch inventory.ini

# Создаём конфигурационный файл
touch ansible.cfg

# Создаём директорию для плейбуков
mkdir playbooks

# Создаём директорию для ролей
mkdir roles

Настройка файла инвентаря

Файл `inventory.ini` содержит список ваших серверов:

[webservers]
web1 ansible_host=192.168.1.10 ansible_user=ubuntu
web2 ansible_host=192.168.1.11 ansible_user=ubuntu

[databases]
db1 ansible_host=192.168.1.20 ansible_user=ubuntu

[all:vars]
ansible_ssh_private_key_file=~/.ssh/id_rsa
ansible_python_interpreter=/usr/bin/python3

Настройка ansible.cfg

Создаём базовый конфигурационный файл:

[defaults]
inventory = ./inventory.ini
host_key_checking = False
timeout = 30
retry_files_enabled = False
stdout_callback = yaml
remote_user = ubuntu
private_key_file = ~/.ssh/id_rsa

[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False

[ssh_connection]
ssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s
pipelining = True

Настройка SSH-ключей

Для работы Ansible нужен SSH-доступ к целевым серверам. Если у вас ещё нет SSH-ключей:

# Генерируем SSH-ключ
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# Копируем ключ на целевые серверы
ssh-copy-id ubuntu@192.168.1.10
ssh-copy-id ubuntu@192.168.1.11
ssh-copy-id ubuntu@192.168.1.20

# Проверяем доступность хостов
ansible all -m ping

Если всё настроено правильно, вы увидите что-то вроде:

web1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Первые шаги: основные команды

Теперь давайте попробуем базовые команды Ansible:

# Проверка доступности всех хостов
ansible all -m ping

# Выполнение команды на всех хостах
ansible all -m command -a "uptime"

# Получение информации о системе
ansible all -m setup

# Установка пакета на веб-серверах
ansible webservers -m apt -a "name=nginx state=present" --become

# Перезапуск сервиса
ansible webservers -m service -a "name=nginx state=restarted" --become

Создание первого плейбука

Плейбуки — это сердце Ansible. Создадим простой плейбук для настройки веб-сервера:

# Файл playbooks/webserver.yml
---
- name: Configure web servers
  hosts: webservers
  become: yes
  vars:
    server_name: "{{ inventory_hostname }}"
    
  tasks:
    - name: Update apt cache
      apt:
        update_cache: yes
        
    - name: Install nginx
      apt:
        name: nginx
        state: present
        
    - name: Start and enable nginx
      service:
        name: nginx
        state: started
        enabled: yes
        
    - name: Create custom index.html
      copy:
        content: |
          
          
          
              Welcome to {{ server_name }}
          
          
              

Hello from {{ server_name }}

This server was configured with Ansible!

dest: /var/www/html/index.html backup: yes - name: Configure firewall ufw: rule: allow port: '80' proto: tcp handlers: - name: restart nginx service: name: nginx state: restarted

Запускаем плейбук:

ansible-playbook playbooks/webserver.yml

Сравнение с альтернативами

Ansible не единственный в своём роде. Давайте посмотрим на конкурентов:

Инструмент Архитектура Язык конфигурации Сложность изучения Производительность
Ansible Агентлесс (SSH) YAML Низкая Средняя
Chef Агентная Ruby DSL Высокая Высокая
Puppet Агентная Puppet DSL Средняя Высокая
SaltStack Агентная YAML/Jinja2 Средняя Очень высокая

Ansible выигрывает в простоте использования и отсутствии необходимости установки агентов. Для малых и средних инфраструктур — это идеальный выбор.

Продвинутые возможности

Использование Ansible Vault

Для хранения секретов используем Ansible Vault:

# Создаём зашифрованный файл
ansible-vault create secrets.yml

# Редактируем зашифрованный файл
ansible-vault edit secrets.yml

# Запускаем плейбук с vault
ansible-playbook playbooks/webserver.yml --ask-vault-pass

Создание собственных ролей

Роли помогают организовать код и делать его переиспользуемым:

# Создаём структуру роли
ansible-galaxy init roles/nginx

# Структура роли
roles/nginx/
├── defaults/
│   └── main.yml
├── files/
├── handlers/
│   └── main.yml
├── meta/
│   └── main.yml
├── tasks/
│   └── main.yml
├── templates/
├── tests/
│   ├── inventory
│   └── test.yml
└── vars/
    └── main.yml

Динамический инвентарь

Для работы с облачными провайдерами можно использовать динамический инвентарь:

# Устанавливаем плагин для AWS
pip3 install boto3

# Создаём файл inventory.aws_ec2.yml
plugin: aws_ec2
regions:
  - us-east-1
  - us-west-2
keyed_groups:
  - key: tags
    prefix: tag
  - key: instance_type
    prefix: instance_type

Интересные факты и нестандартные применения

  • Ansible может управлять сетевым оборудованием — Cisco, Juniper, Arista поддерживают Ansible модули
  • Интеграция с Kubernetes — модуль k8s позволяет управлять кластерами
  • Тестирование инфраструктуры — связка Ansible + Molecule + Docker для тестирования ролей
  • Управление Windows — да, Ansible может управлять Windows серверами через WinRM
  • Ansible Tower/AWX — веб-интерфейс для управления Ansible в энтерпрайзе

Практические советы и подводные камни

Что можно и нужно делать:

  • Используйте --check для dry-run перед выполнением
  • Группируйте задачи по ролям
  • Используйте теги для выборочного выполнения задач
  • Версионируйте ваши плейбуки в Git
  • Тестируйте роли с помощью Molecule

Чего лучше избегать:

  • Не используйте shell модуль без необходимости
  • Не храните секреты в открытом виде
  • Не делайте плейбуки слишком большими
  • Не забывайте про идемпотентность

Автоматизация и интеграция

Ansible прекрасно интегрируется с CI/CD пайплайнами:

# Пример Jenkins pipeline
pipeline {
    agent any
    stages {
        stage('Deploy') {
            steps {
                ansiblePlaybook(
                    playbook: 'playbooks/deploy.yml',
                    inventory: 'inventory.ini',
                    credentialsId: 'ansible-ssh-key'
                )
            }
        }
    }
}

Для крупных проектов рекомендую использовать VPS для control node и выделенные серверы для production окружения.

Мониторинг и отладка

Полезные команды для диагностики:

# Подробный вывод
ansible-playbook playbooks/webserver.yml -v

# Ещё более подробный вывод
ansible-playbook playbooks/webserver.yml -vvv

# Проверка синтаксиса
ansible-playbook playbooks/webserver.yml --syntax-check

# Dry-run
ansible-playbook playbooks/webserver.yml --check

# Выполнение только определённых тегов
ansible-playbook playbooks/webserver.yml --tags "nginx"

# Ограничение выполнения определёнными хостами
ansible-playbook playbooks/webserver.yml --limit "web1"

Статистика и производительность

По данным опросов DevOps сообщества:

  • Ansible используют 58% DevOps инженеров
  • Среднее время изучения базовых возможностей — 2-3 недели
  • Сокращение времени на деплой — до 80%
  • Снижение количества ошибок конфигурации — до 65%

Ansible может обрабатывать до 500 параллельных подключений (настраивается в ansible.cfg), что делает его подходящим для средних и крупных инфраструктур.

Заключение и рекомендации

Ansible на Ubuntu 24 — это мощный инструмент для автоматизации инфраструктуры, который должен быть в арсенале каждого системного администратора. Его простота и гибкость делают его идеальным выбором для большинства задач.

Рекомендую использовать Ansible, если:

  • У вас есть несколько серверов, которые нужно поддерживать в одинаковом состоянии
  • Вы хотите автоматизировать деплой приложений
  • Нужно быстро масштабировать инфраструктуру
  • Важна простота в изучении и использовании

Стоит рассмотреть альтернативы, если:

  • У вас очень большая инфраструктура (1000+ серверов)
  • Нужна максимальная производительность
  • Требуется сложная логика конфигурации

Начните с простых задач — установки пакетов, копирования файлов, перезапуска сервисов. Постепенно переходите к более сложным сценариям с использованием ролей и vault. И помните — лучший код тот, который не нужно писать. Используйте готовые роли из Ansible Galaxy, где это возможно.

Удачи в автоматизации! 🚀


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked