Назад в блог

Автоматизация настройки сервера с помощью Ansible и Ubuntu 20.04

Автоматизация настройки сервера с помощью Ansible и Ubuntu 20.04

Введение

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

Ansible не требует установки специального программного обеспечения на узлах серверов. В нем есть все инструменты, необходимые для написания, сборки и автоматизации сценариев. В этом руководстве подробно описывается, как использовать Ansible для автоматизации шагов, описанных в нашем Как настроить сервер Ubuntu руководстве.

Предварительные требования

Для выполнения этого руководства мы будем использовать Ubuntu 20.04. Кроме того, вам понадобятся:

  • Управляющий узел Ansible: машина с Ubuntu, на которой запущена последняя версия Ubuntu. На этой машине должен быть установлен и запущен исполняемый файл Ansible. Эта машина должна иметь возможность подключаться к узлам Ansible. Для этих подключений необходимо использовать ключи SSH. Чтобы избежать проблем при подключении, убедитесь, что на управляющем узле Ansible включен брандмауэр. Если вам нужна помощь, ознакомьтесь с нашей статьей Установка и настройка Ansible на Ubuntu 20.04 в блоге.

  • Хосты Ansible: требуется один или несколько хостов для подключения. Хосты — это, по сути, управляемые узлы в Ansible. Это должны быть серверы Ubuntu.

Функции плейбука Ansible

Вы можете вручную выполнить все описанные ниже шаги. Однако мы автоматизируем это выполнение. При запуске этого плейбука на вашей машине будут выполнены следующие операции:

  1. Будет установлен aptitude, который предпочтителен для Ansible в качестве менеджера пакетов.

  2. Будет создана административная группа wheel с правами sudo без ввода пароля.

  3. Будет создан новый пользователь sudo.

  4. Локальный SSH-ключ будет скопирован в authorized_keys. Он будет использоваться для нового административного пользователя на удаленном хосте.

  5. Будет отключена аутентификация по паролю для пользователя root.

  6. Будут установлены необходимые пакеты.

  7. Будет настроен брандмауэр UFW для разрешения только SSH-соединений. Любые другие соединения будут заблокированы.

После завершения выполнения плейбука станет доступен новый пользователь. Вы можете использовать этого пользователя для входа в систему.

Использование плейбука Ansible

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

Если репозиторий уже существует в вашей системе, выполните команду ниже, чтобы получить последние обновления:

Вы получите следующую структуру файлов на своей машине:

Ниже приведено описание файлов:

  • vars/default.yml: этот файл содержит переменные для настройки узла Ansible.

  • playbook.yml: этот файл содержит задачи, которые должны быть выполнены на сервере.

Файл vars/default.yml выглядит примерно так:

Ниже приведено описание этих переменных. Если вы хотите изменить их, вы можете заменить их значения своими собственными:

  1. create_user: это создаваемый пользователь. Этот пользователь имеет sudo привилегии.

  2. copy_local_key: Здесь содержится путь к локальному публичному ключу SSH. Он будет скопирован на удаленный сервер как authorized_key.

  3. sys_packages: Если вы хотите установить один или несколько пакетов на свой сервер, укажите их здесь в виде массива.

После редактирования этого файла сохраните его содержимое. Затем в nano нажмите CTRL+X , Y. Затем, ENTER, чтобы сохранить содержимое файла.

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

Если имя вашего сервера — my_server, а имя пользователя — my_user, то выполните команду ниже для запуска на узлах Ansible:

Вы получите вывод, похожий на следующий:

После завершения выполнения вы можете подключиться с помощью следующей команды:

Помните, что my_user — это имя, которое мы использовали в файле vars/default.yml. Вам также потребуется заменить IP-адрес сервера на IP-адрес вашего сервера в приведенной выше команде. Если вы указали переменную copy_local_key для указания на какой-то пользовательский SSH-ключ, укажите его расположение с помощью -i ключа:

Затем войдите на свой сервер, чтобы проверить правила брандмауэра UFW:

Вы получите следующий вывод:

Приведенный выше вывод подтверждает, что настройка брандмауэра UFW была успешно завершена. Это был последний шаг в нашем плейбуке. Если он выполнен правильно, это означает, что выполнение прошло успешно.

Содержимое плейбука Ansible

Файлы плейбука, которые мы использовали в этом руководстве, размещены на ansible-playbooks/setup_ubuntu1804 at master · do-community/ansible-playbooks · GitHub. Если вы хотите просмотреть содержимое каждого файла для использования или редактирования, нажмите кнопку Raw в верхней части каждого скрипта.

Для быстрого ознакомления мы делимся полным содержимым плейбука вместе с соответствующими файлами:

  • vars/default.yml

Этот файл содержит значения, которые будут использоваться задачами playbook. К ним относятся такие значения, как имя пользователя, привилегии, SSH-ключи, пакеты, которые необходимо установить в рамках первоначальной настройки, и так далее:

  • playbook.yml

Файл playbook.yml содержит задачи, которые необходимо выполнить. Во-первых, в файле перечислены все целевые хосты. Если вы хотите указать все серверы, установите значение этого ключа равным all. Далее, если вы хотите указать, что задачи должны выполняться с привилегиями sudo, установите значение переменной become: true. Наконец, этот файл должен включать содержимое указанного выше vars/default.yml файла. Мы включим его далее, чтобы загрузить настройки из этого файла:

Заключение

Автоматизация является ключевым фактором в ИТ, гарантируя, что все процессы выполняются без ошибок и соответствуют стандартным практикам и процедурам. Поскольку большинство современного программного обеспечения поставляется через Интернет и имеет распределенный характер, создание новых серверов (например, для различных сред, таких как тестовая или рабочая, или даже демонстрационных сред) стало повседневной задачей.

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

Приятной работы!

author

Shreyas Patil

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.