Назад в блог

Установка и настройка LAMP на Ubuntu 20.04 с помощью Ansible

Установка и настройка LAMP на Ubuntu 20.04 с помощью Ansible

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

Инструменты управления конфигурацией, такие как Ansible, Puppet, Terraform, и многие другие, обычно используются для автоматизации серверов. Эти инструменты настраивают серверы с помощью автоматизации, устанавливая стандартные процедуры для новых серверов и исключая потенциальные ошибки, возникающие при ручной настройке.

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

В этом руководстве мы подробно расскажем о шагах по установке и настройке LAMP на Ubuntu 20.04 с помощью Ansible.

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

Чтобы следовать этому руководству, вам понадобятся:

Какова цель плейбука Ansible?

Этот плейбук Ansible представляет собой альтернативный способ выполнения процедуры, описанной в нашем руководстве Настройка стека LAMP Linux Apache MySQL PHP.

Запуск плейбука Ansible приведет к следующим действиям на ваших хостах Ansible:

  • Установить aptitude, альтернативу менеджеру пакетов apt, предпочитаемому Ansible.

  • Установить все необходимые пакеты LAMP.

  • Создать новый Apache VirtualHost и настроить выделенный корневой каталог документов.

  • Включить ВКЛЮЧЕН новый VirtualHost.

  • Выключить ВЫКЛЮЧЕН веб-сайт Apache по умолчанию, то есть установить переменную disable_default в значение true.

  • Выбрать пароль для пользователя MySQL root.

  • Удалить анонимные учетные записи MySQL и тестовую базу данных.

  • Настроить UFW для разрешения HTTP-трафика на настроенном порту, где по умолчанию используется 80.

  • Настроить тестовый PHP-скрипт.

После завершения работы плейбука Ansible вы увидите веб-среду PHP, работающую поверх Apache в соответствии с заданными нами конфигурациями.

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

Сначала получите плейбук LAMP и его зависимости из репозитория do-community/ansible-playbooks. Затем клонируйте репозиторий с плейбуком LAMP в локальную папку внутри управляющего узла Ansible.

Запустите команду git pull, чтобы убедиться, что у вас есть доступ к нужному содержимому, которое мы собираемся использовать в этом руководстве:

Если вы используете репозиторий do-community/ansible-playbooks впервые, рассмотрите возможность клонирования репозитория в вашу домашнюю папку:

Перейдите в папку lamp_ubuntu2004, и вы увидите следующую структуру:

Вот обзор того, что означают эти файлы:

  • files/info.php.j2: это файл шаблона, в котором вы можете настроить тестовую страницу PHP в корне веб-сервера.

  • files/apache.conf.j2: еще один файл шаблона, используемый для настройки Apache VirtualHost.

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

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

  • readme.md: Файл для чтения, содержащий информацию об этом плейбуке.

Давайте настроим конфигурации MySQL и Apache, внеся изменения в файл переменных плейбука. Перейдите в каталог lamp_ubuntu2004 и откройте файл vars/default.yml с помощью редактора nano :

После открытия файла vars/default.yml вы увидите список переменных, которые необходимо изменить:

Давайте подробно разберем каждую из переменных:

  • mysql_root_password: хранит пароль для учетной записи root в MySQL.

  • app_user: это удаленный пользователь без прав root на хосте Ansible, который выступает в качестве владельца файлов приложения.

  • http_host: указывает ваше доменное имя.

  • http_conf: указывает имя конфигурационного файла, созданного в Apache.

  • http_port: это HTTP-порт для этого виртуального хоста, и 80 является значением по умолчанию.

  • disable_default: используется для отмены параметров по умолчанию, поставляемых с Apache.

Затем сохраните и закройте файл vars/default.yml .

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

Давайте запустим плейбук на одном сервере server1 и подключимся к нему под пользователем justin:

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

Как только вы увидите, что выполнение плейбука завершено, перейдите в веб-браузер и откройте хост сервера. Не забудьте добавить /info.php в конце IP-адреса:

При переходе по этому URL-адресу вы увидите страницу следующего вида:

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

rm -f /var/www/info.php

Что находится в плейбуке?

Далее давайте разберем значение и важность файлов, используемых в ansible-playbook содержимом:

  • vars/default.yml

Файл переменных default.yml содержит доменное имя и пароль для учетной записи MySQL root . Это значения по умолчанию, используемые в ansible-playbook задачах:

  • files/apache.conf.j2

Файл apache.conf.j2 представляет собой файл шаблона Jinja 2, используемый для настройки нового виртуального хоста Apache VirtualHost. Переменные, используемые в этом шаблоне, должны быть определены в vars/default.yml файле переменных:

  • files/info.php.j2

Аналогично files/apache.conf.j2, файл info.php.j2 также является шаблоном Jinja. Мы используем этот файл для настройки тестового PHP-скрипта в корневом каталоге документов вновь настроенного сервера LAMP:

  • playbook.yml

В файле playbook.yml определяются все задачи этой настройки. В этом файле настраиваются все стеки LAMP. Он начинается с определения целевой группы серверов, для которой установлено значение all. Кроме того, он принимает значение become равным true ( become: true), и определяет все задачи, которые необходимо выполнить. Далее, файл yaml содержит файл по умолчанию, которым является файл переменных vars/default.yml, для загрузки параметров конфигурации:

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

Заключение

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

Вы новичок в стеке LAMP и хотите глубже погрузиться в эту тему? Изучите следующие руководства в нашем блоге:

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

author

Hark Labs

Автор · CloudSigma

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

Комментарии

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