Введение
Ручная настройка серверов и управление ими может быть утомительным и чреватым ошибками процессом, особенно в средах с несколькими серверами или повторяющимися задачами конфигурации. Ansible — мощный инструмент автоматизации ИТ с открытым исходным кодом — упрощает этот процесс, позволяя легко автоматизировать подготовку серверов, их конфигурацию и управление ими. В этом руководстве «24. Автоматизация настройки Ubuntu Server с помощью Ansible: практическое руководство» мы расскажем об основах использования Ansible для автоматизации настройки и конфигурации Ubuntu Server. В итоге вы научитесь писать и запускать плейбуки Ansible, чтобы упростить типовые серверные задачи, повысить эффективность и обеспечить согласованность всей инфраструктуры.
Предыдущие статьи:
01. Введение в Ubuntu Server – SysOSX: AI & Cloud
02. Как настроить первый сервер Ubuntu: руководство для начинающих – SysOSX: AI & Cloud
03. Освоение командной строки Linux для Ubuntu Server – SysOSX: AI & Cloud
04. Управление пользователями и правами в Ubuntu Server: подробное руководство – SysOSX: AI & Cloud
05. Основы сетей для Ubuntu Server: подробное руководство – SysOSX: AI & Cloud
06. Установка и управление ПО в Ubuntu Server: полное руководство – SysOSX: AI & Cloud
07.Исправление и обновление Ubuntu Server: подробное руководство – SysOSX: AI & Cloud
08. Защита сервера Ubuntu: практические шаги по усилению безопасности – SysOSX: AI & Cloud
09. Аудит и ведение журналов сервера Ubuntu
10. Инструменты мониторинга системы для Ubuntu Server: подробное руководство – SysOSX: AI & Cloud
12. Аудит и соответствие требованиям для Ubuntu Server: рекомендации – SysOSX: AI & Cloud
13. Настройка сервера Ubuntu для хостинга и веб-приложений: полное руководство – SysOSX: AI & Cloud
14. Размещение нескольких сайтов на одном сервере Ubuntu: полезные советы – SysOSX: AI & Cloud
15. Управление хранилищем и дисками в Ubuntu Server: простое руководство – SysOSX: AI & Cloud
16. Настройка служб общего доступа к файлам в Ubuntu Server: полное руководство – SysOSX: AI & Cloud
17. Настройка безопасного сервера баз данных в Ubuntu: MySQL и MariaDB – SysOSX: AI & Cloud
18. Как настроить и использовать LVM в Ubuntu Server: подробное руководство – SysOSX: AI & Cloud
19. Введение в виртуализацию с KVM: руководство для начинающих по Ubuntu Server – SysOSX: AI & Cloud
21. Начало работы с LXD: простая установка контейнеров + шпаргалка – SysOSX: AI & Cloud
22. Начало работы с Podman в Ubuntu Server: полное руководство – SysOSX: AI & Cloud
23. Развёртывание Ubuntu Server в облаке: пошаговое руководство – SysOSX: AI & Cloud
Содержание
Зачем использовать Ansible для автоматизации серверов?
Ansible широко используется для автоматизации серверов благодаря простоте и мощности. Вот почему это лучший выбор:
- Безагентность: Ansible не требует установки агентского ПО на целевых серверах. Для связи используется SSH.
- Декларативный синтаксис: плейбуки Ansible используют YAML — понятный человеку синтаксис, облегчающий определение желаемых состояний.
- Повторно используемые конфигурации: напишите плейбуки один раз и используйте их на нескольких серверах.
- Идемпотентность: Ansible гарантирует выполнение задач только при необходимости, избегая избыточных операций.
- Расширяемость: Ansible поддерживает широкий набор модулей для таких задач, как установка пакетов, управление файлами и настройка служб.
Предварительные требования
Прежде чем приступать к автоматизации настройки Ubuntu Server с помощью Ansible, убедитесь, что у вас есть следующее:
- Управляющий узел: машина (локальная система или выделенный сервер), на которой установлен Ansible.
- Целевые серверы: серверы Ubuntu (локальные или облачные), которые вы хотите настроить.
- SSH-доступ: убедитесь, что между управляющим узлом и целевыми серверами настроен беспарольный SSH-доступ.
Шаг 1. Установка Ansible
1.1 Установка Ansible на управляющем узле
На управляющем узле (например, на локальной машине с Ubuntu) установите Ansible:
sudo apt update
sudo apt install ansible -y
1.2 Проверка установки
Проверьте установленную версию Ansible, чтобы убедиться в корректной установке:
ansible --version
Пример вывода:
ansible 2.10.8
config file = None
configured module search path = ['/home/uadmin/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 3.10.12 (main, Feb 4 2025, 14:57:36) [GCC 11.4.0]
Шаг 2. Настройка SSH-доступа
Ansible взаимодействует с целевыми серверами по SSH. Необходимо настроить беспарольный SSH-доступ с управляющего узла к целевым серверам.
2.1 Создание пары SSH-ключей
Если у вас ещё нет пары SSH-ключей, создайте её:
ssh-keygen -t rsa -b 2048
2.2 Копирование SSH-ключа на целевые серверы
Используйте следующую команду, чтобы скопировать открытый ключ на целевой сервер:
ssh-copy-id ubuntu@<target-server-ip>
Проверьте SSH-доступ, чтобы убедиться, что он работает без пароля:
ssh ubuntu@<target-server-ip>
Шаг 3. Определение инвентаря
Ansible использует файл инвентаря чтобы определить целевые серверы для управления.
3.1 Создание файла инвентаря
Создайте файл с именем inventory в рабочем каталоге:
nano inventory
Добавьте IP-адреса или имена хостов целевых серверов. Например:
[ubuntu_servers]
192.168.50.42
192.168.50.145
Сохраните файл и выйдите (Ctrl+O а затем Ctrl+X).
3.2 Проверка связи
Используйте ping модуль, чтобы проверить связь с целевыми серверами:
ansible -i inventory ubuntu_servers -m ping
Пример вывода:
192.168.50.145 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
192.168.50.42 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Шаг 4. Написание первого плейбука Ansible
Плейбуки Ansible — это YAML-файлы, определяющие задачи, которые вы хотите автоматизировать. Создадим плейбук для автоматизации настройки сервера Ubuntu.
4.1 Создание файла плейбука
Создайте файл с именем setup.yml:
nano setup.yml
4.2 Определение плейбука
Добавьте в плейбук следующее содержимое:
---
- name: Configure Ubuntu Server
hosts: ubuntu_servers
become: true
tasks:
- name: Update and upgrade apt packages
apt:
update_cache: yes
upgrade: dist
- name: Install common packages
apt:
name:
- curl
- wget
- git
- build-essential
state: present
- name: Enable UFW and allow SSH
ufw:
rule: allow
name: OpenSSH
state: enabled
- name: Create a new user
user:
name: devuser
password: "{{ 'password123' | password_hash('sha512') }}"
state: present
groups: sudo
Пояснение задач
- Обновление пакетов: гарантирует наличие на сервере последних обновлений и исправлений безопасности.
- Установка распространённых пакетов: устанавливает важные инструменты, такие как
curl,wgetиgit. - Включение UFW: настраивает брандмауэр для разрешения SSH-доступа.
- Создание нового пользователя: добавляет нового пользователя с правами sudo.
- Задание имени хоста: настраивает имя хоста сервера.
Сохраните файл и выйдите.
Шаг 5. Запуск плейбука
Запустите плейбук, чтобы применить конфигурации:
ansible-playbook -i inventory setup.yml
Ansible будет фиксировать ход каждой задачи. Если все задачи завершатся успешно, сервер Ubuntu будет полностью настроен.
Вывод ниже:
uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml
PLAY [Configure Ubuntu Server] ***************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]
TASK [Update and upgrade apt packages] *******************************************************************************
^X^C [ERROR]: User interrupted execution
uadmin@u2204-001:~$ sudo nano setup.yml
uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml
PLAY [Configure Ubuntu Server] ***************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]
TASK [Update and upgrade apt packages] *******************************************************************************
ok: [192.168.50.42]
ok: [192.168.50.145]
TASK [Install common packages] ***************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]
TASK [Enable UFW and allow SSH] **************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]
TASK [Create a new user] *********************************************************************************************
changed: [192.168.50.42]
changed: [192.168.50.145]
PLAY RECAP ***********************************************************************************************************
192.168.50.145 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.50.42 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Шаг 6. Проверка конфигурации
6.1 Проверка установленных пакетов
Войдите на один из целевых серверов и убедитесь, что распространённые пакеты установлены:
curl --version
git --version
6.2 Проверка состояния брандмауэра
Убедитесь, что брандмауэр включён:
sudo ufw status
6.3 Проверка нового пользователя
Убедитесь, что новый пользователь создан:
cat /etc/passwd | grep devuser

Продвинутые сценарии использования
Освоив базовые плейбуки, можно перейти к более продвинутым сценариям:
- Развёртывание приложений: используйте Ansible для установки и настройки веб-серверов (например, Nginx, Apache) или баз данных (например, MySQL, PostgreSQL).
- Управление несколькими средами: создавайте отдельные файлы инвентаря для промежуточной, рабочей и среды разработки.
- Использование ролей: организуйте плейбуки в повторно используемые роли для сложных настроек.
- Интеграция с CI/CD: автоматизируйте настройку серверов как часть CI/CD-конвейера.
Источник:
Документация Ansible — документация сообщества Ansible
Заключение
Ansible — мощный инструмент автоматизации настройки и конфигурации серверов. В этом руководстве мы рассмотрели:
- Установка Ansible на управляющем узле.
- Настройка SSH-доступа к целевым серверам.
- Написание и запуск базового плейбука для автоматизации настройки Ubuntu Server.
Используя Ansible, можно экономить время, сокращать количество ошибок и обеспечивать согласованность всей инфраструктуры. Управляете ли вы одним сервером или сотнями, Ansible — незаменимый инструмент для современных процессов DevOps.
2 thoughts on “24. Automating Ubuntu Server Setup with Ansible: A Practical Guide”