В наше время, когда организации пользуются разнообразными информационными системами, появляется множество проблем в поддержании порядка и обеспечении эффективности. Для решения различных проблем в области IT-инфраструктуры и управления конфигурациями был создан один из наиболее популярных инструментов — Ansible. Тем не менее, даже этот инструмент не всегда может обеспечить максимальную эффективность, так как в некоторых случаях приходится сталкиваться с рутинными задачами. В этом контексте мне предстоит решить задачу, а именно разработать систему для оптимизации процессов управления через Ansible, которая позволит автоматизировать рутинные операции и повысить эффективность управления конфигурациями.
Цель заключается в создании простого и удобного интерфейса для управления конфигурациями подключенных сетевых устройств, который позволит автоматизировать процесс настройки и мониторинга оборудования, а также обеспечит гибкость и масштабируемость системы.
Ключевые слова: Ansible, сетевое оборудования, Management interface.
Nowadays, when organizations use a variety of information systems, there are many problems in maintaining order and ensuring efficiency. To solve various problems in the field of IT infrastructure and configuration management, one of the most popular tools was created — Ansible. However, even this tool cannot always provide maximum efficiency, as in some cases you have to face routine tasks. In this context, I have to solve the task, namely, to develop a system for optimizing management processes through Ansible, which will automate routine operations and increase the efficiency of configuration management.
The goal is to create a simple and user-friendly interface for managing configurations of connected network devices, which will automate the process of configuring and monitoring equipment, as well as provide flexibility and scalability of the system.
Keywords: Ansible, network equipment, Management interface.
Система управления конфигурациями Ansible
Ansible можно смело назвать мощным и эффективным средством автоматизации управления конфигурациями с декларативным подходом. Он предоставляет пользователям интуитивно понятные и в то же время гибкие инструменты для описания и реализации системных конфигураций. Ansible позволяет пользователю определить требуемое состояние системы, а затем самостоятельно выполняет все необходимые действия для достижения этой цели, что упрощает взаимодействие с системой в целом и снижает вероятность возникновения ошибок.
Ansible состоит из трех основных компонентов: плейбуков, ролей и инвентаря.
Плейбук представляет собой последовательность шагов, необходимых для настройки системы, включая набор инструкций, выполняемых Ansible на целевых узлах.
Роли позволяют группировать несколько задач в одном контейнере, что облегчает автоматизацию работы благодаря удобной структуре каталогов.
Инвентарь же является необходимым файлом для Ansible, который используется для определения групп узлов для применения конфигураций, упрощая организацию и управление конфигурациями различных групп хостов.
Преимущества Ansible включают декларативный подход к написанию кода, что делает его более понятным и масштабируемым, позволяя автоматизировать выполнение сложных операций. Ansible также предлагает гибкость и возможность интеграции с различными системами, делая его идеальным инструментом для управления конфигурациями и автоматизации процессов.
Развертывание виртуальных машин
В этом разделе я подробно опишу процесс создания виртуальных машин в рамках программы. Правильная настройка виртуальных машин является одной из ключевых задач в работе.
За основную была взята машина с ОС Ubuntu версии 22.04 (далее — ОМ). На остальных машинах была уставлена ОС Ubuntu версии 18.04. После успешной установки Ubuntu на ОМ я зашел на нее и установил необходимый в работе Ansible openssh-server, предварительно обновив лист доступных пакетов (Рис. 1).
Рис. 1. Обновление списка пакетов
Рис. 2. Установка ssh-сервера
После чего отдельно установил 2 копии Ubuntu 18.04 на другие узлы (Рис. 3.3). Для демонстрации работы узлов я решил упростить соединение всех машин до настройки простой виртуальной сети (Рис. 4).
Рис. 3. Виртуальные машины
Рис. 4. Сетевое соединение машин
Следующим шагом стал вход на каждую из виртуальных машин и настройка для каждой машины своего ip-адреса для выхода в сеть и последующего подключения к ней, через ssh (Рис. 5).
Рис. 5. Настройка соединения
Выбор метода подключения и настройка Ansible
В этом разделе я буду рассказывать о своих шагах, которые были предприняты для настройки безопасного SSH подключения и создания ключей в рамках работы.
В Ansible есть несколько видов соединений с администрируемыми машинами, основными из которых считаются соединения по открытому ssh-ключу (метод шифрования rsa) и по паролю пользователя. Более безопасным методом является ssh-ключ, который я и избрал в рамках работы. Для начала я установил на ОМ Ansible (Рис. 6.).
Рис. 6. Установка Ansible и проверка версии
Затем на каждой из машин были сгенерированы ssh-ключи, публичный и секретный. После чего я подключился по ssh к узлам и скопировал публичные ключи на ОМ. (Рис. 7)
Рис. 7. Создание ключей и их перебрасывание на ОМ
После чего, заводим файл инвентаризации, где прописываем все наши машины и их данные. А после проверяем на подключение к ним (Рис. 8)
Рис. 8. Файл инвентаризации и проверка соединения
Файл инвентаризации в Ansible — это текстовый файл, который содержит информацию о хостах, на которых Ansible будет выполнять свои задачи. В этом файле указываются хосты, группы хостов, переменные окружения и другие параметры. Это обеспечивает гибкость при конфигурации устройств.
Создание конфигурации управления Ansible типа Management Interface
В этом разделе будут описаны шаги по написанию вышеупомянутой конфигурации, создания базовых простейших инструментов администрирования и описание их функций.
Для начала определим термин Management interface.
Management interface (интерфейс управления) в администрировании информационных систем — это набор инструментов и протоколов, которые позволяют системным администраторам и другим специалистам осуществлять управление, настройку и мониторинг компьютерных систем, сетей, приложений и сервисов. Этот интерфейс предоставляет средства для выполнения таких задач, как установка, обновление и оптимизация работы информационных систем.
Исходя из данного определения, я реализовал минимальный базовый функционал управления, а именно:
Управление пользователями узла
- Вывод всех пользователей
- Создание пользователей на узле
- Удаление пользователя
- Смена пароля
- Назад
Управление сетевыми подключениями узла
- Вывод сетевых подключений узла
- Смена IPv4
- Смена маски подсети
- Изменение шлюза
- Назад
Вывод основной информации о узлах.
Описание и демонстрация находиться в разделе «Приложение»
Основными компонентами моей системы являются скрипты Bash и playbook-и Ansible
Ansbile-playbook — это инструмент Ansible, который нужен для выполнения автоматизированных задач, которые описаны в playbook. Ansible-playbook представляет собой текстовый файл в формате YAML, содержащий инструкции и задачи, которые необходимо выполнить на целевых узлах.
Скрипт на Bash представляет собой последовательность команд, которые написаны на языке программирования Bash. Скрипт используется для автоматизации выполнения задач в командной строке, он может содержать в себе условия, циклы и т. п., которые выполняются поочередно при запуске скрипта.
Система выполнена в стиле простого текстового меню, запускаемого в терминале. Bash служит для создания меню и координации в нем, ввода и вывода данных пользователя, playbook-и же являются основными исполняемыми файлами для выполнения определенных задач.
Выводы. В заключении отметим, что была разработана система управления конфигурациями сетевого оборудования, которая позволяет автоматизировать процессы управления, повысить эффективность работы и обеспечить гибкость и масштабируемость.
Были рассмотрены современные инструменты и технологии, такие как Ansible, что позволило упростить и ускорить процессы управления сетевым оборудованием. Созданное решение обеспечивает безопасную работу сетевого оборудования, а также повышает эффективность выполнения рутинных задач.
Литература:
- Lauri, J. Network Automation with Ansible. — United States: Packt, 2022. -480 c: ил. — ISBN 9781803235417.
- Sidhu, S. Mastering Ansible. –United States: Packt, 2019. — 412 c: ил. — ISBN 9781789951547.
- Ansible Documentation [Электронный ресурс]: Red Hat. Режим доступа: https://docs.ansible.com/
- Ansible Best Practices. [Электронный ресурс]: Ansible project contributors. Режим доступа: https://docs.ansible.com/ansible/latest/tips_tricks/ansible_tips_tricks.html
- What is Ansible? Configuration management and automation. [Электронный ресурс]: TechTarget. Режим доступа: https://searchitoperations.techtarget.com/definition/Ansible