24. Автоматизация настройки Ubuntu Server с помощью Ansible: практическое руководство

Введение

Ручная настройка серверов и управление ими может быть утомительным и чреватым ошибками процессом, особенно в средах с несколькими серверами или повторяющимися задачами конфигурации. 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

11. Централизованное ведение журналов для сервера Ubuntu: обязательное руководство – 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

20. Как установить Docker в 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, убедитесь, что у вас есть следующее:

  1. Управляющий узел: машина (локальная система или выделенный сервер), на которой установлен Ansible.
  2. Целевые серверы: серверы Ubuntu (локальные или облачные), которые вы хотите настроить.
  3. 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  

Пояснение задач

  1. Обновление пакетов: гарантирует наличие на сервере последних обновлений и исправлений безопасности.
  2. Установка распространённых пакетов: устанавливает важные инструменты, такие как curl, wget и git.
  3. Включение UFW: настраивает брандмауэр для разрешения SSH-доступа.
  4. Создание нового пользователя: добавляет нового пользователя с правами sudo.
  5. Задание имени хоста: настраивает имя хоста сервера.

Сохраните файл и выйдите.


Шаг 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”

Оставить комментарий