Установка Ansible на Ubuntu Server 22.04.1
Введение
В статье описана установка Ansible на Ubuntu, минимальная настройка для начала работы и создание вашего первого плейбука. Вы узнаете, как подготовить управляющую машину, прописать целевые хосты в инвентаре и написать простой сценарий автоматизации для проверки связи и создания тестового файла.
Подготовка системы
Тут всё как всегда: обновляем список пакетов и ставим апдейты
sudo apt update && sudo apt upgrade -y
Устанавливаем Ansible
Если вы в первый раз устанавливаете Ansible, рекомендую ставить сразу полный пакет. например через pipx
sudo apt install pipx sudo apt install software-properties-common -y
Если устанавливали через pipx, то нужно добавить PATH под local/bin
export PATH=$PATH:~/.local/bin source ~/.bashrc
Или через apt с добавлением репозитория ansible
sudo apt-add-repository --yes --update ppa:ansible/ansible sudo apt install ansible -y
Стандартная проверка установленного пакета версией
ansible --version
/etc/ansible/config.cfg — конфигурационный файл /home/user/.ansible/plugins/modules — модули ansible
Настройка SSH для Ansible
Принцип работы asible заключается в том, что у него нет агентов. Все подключения к хостам проходят по SSH. И тут нужно обезопаситься.
Нам нужно сейчас сгенерировать ключи на удаленной машине, к которй будет подключаться ansible.
ssh-keygen -t rsa -b 4096 -C email@domain.ru
По пути на все вопросы нажимаем Enter. По завершению ключи будут лежать тут: ~/.ssh в виде файлов id_rsa и id_rsa.pub.
Установка ключей хостов на Ansible
Теперь, для доступа ansible к хостам, нужно установить сгенерированные ключи на сервере ansible. Быстрее всего это можно сделать при помощи команды ssh-copy-id:
ssh-copy-id ubuntu@192.168.0.101
Теперь подключение к хосту через ssh будет выполняться без запроса пароля.
Можно руками вставить содержимое ключа id_rsa.pub можно в файл ~/.ssh/authorized_keys на сервере. Но лучше так не делать.
Для явного указания пути к ключу (если используется нестандартный), можно настроить ansible.cfg или передавать флаг --private-key при запуске.
Настройка Ansible
Можно сразу создать структуру проекта ansible командой:
ansible-galaxy init /home/user/ansible-project
ansible-project/ # Корневая директория вашего проекта ├── playbook.yml # -- Ваш главный плейбук (может называться site.yml, main.yml и т.д.) ├── inventory/ # Каталог с файлами inventory (списками хостов) │ ├── production # Файл с хостами для production-окружения │ └── staging # Файл с хостами для staging-окружения ├── group_vars/ # Переменные для групп хостов │ └── all.yml # Переменные для группы [all] ├── host_vars/ # Переменные для конкретных хостов │ └── web-server-01.yml ├── roles/ # -- КАТАЛОГ С РОЛЯМИ (здесь хранится основная логика) │ ├── common/ # Роль 'common' │ │ ├── tasks/ │ │ │ └── main.yml │ │ ├── handlers/ │ │ │ └── main.yml │ │ ├── templates/ │ │ ├── files/ │ │ └── defaults/ │ │ └── main.yml │ └── webserver/ # Роль 'webserver' │ ├── tasks/ │ │ └── main.yml │ └── ... другие директории роли └── ansible.cfg # Конфигурационный файл для данного проекта
Или, для простототы и наглядности создадим что-то попроще.
mkdir ~/my-ansible-playbooks cd ~/my-ansible-playbooks
Создадим host.ini. Это будет наш Inventory. Inventory — это список хостов, с которыми наш Ansible будет работать. Обычно используется формат *.YAML (но это может быть и INI).
По умолчанию ansible ищет хостов в этом файле: /etc/ansible/hosts.
nano hosts.ini
[servers] 192.168.0.101 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa
Для проверки отправим ping
ansible all -i hosts.ini -m ping
На что получим pong в ответ. Теперь создадим нашь первый playbook
nano first-playbook.yml
- name: First Test
hosts: all
become: false
tasks:
- name: new file test.txt
ansible.builtin.copy:
content: |
File content
dest: "~/test.txt"
mode: '0644'
Этот playbook обращается ко всем хостам из inventory hosts.ini и создаёт файл test.txt с содержимом внутри: "File content"
Для запуска playbook нужно выполнить команду ниже. Можно указывать полные пути до файлов hosts.ini или playbook.
ansible-playbook -i hosts.ini first-playbook.yml
Как видим, файл test.txt был успешно создан на хост машине с теми параметрами, которые мы задавали выше в плейбуке.
Заключение
Ansible — это мощный инструмент автоматизации для управления конфигурацией, развертывания приложений и оркестрации инфраструктуры. Его ключевые преимущества: простота использования на основе YAML-синтаксиса, идемпотентность и агентлесс-архитектура, что делает его идеальным для DevOps.
С помощью плейбуков можно не только настраивать серверы, но и автоматизировать обновления, управлять пользователями, развертывать сложные кластеры, создавать резервные копии и даже останавливать службы по расписанию. Это универсальный инструмент для эффективного и надежного управления IT-инфраструктурой любого масштаба.