Простейшая настройка php веб-сервера с использованием Ansible

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

Однако если посмотреть дальше, то можно найти более продвинутые средства автоматизации. Одним из которых является Ansible.

Ansible - средство управления конфигурациями, такое же как Chef и Puppet. Однако Ansible имеет несколько ниже порог вхождения и ряд приятных бонусов, таких как отсутствие необходимости расставлять агенты на клиентских машинах (он может сходить по ssh куда надо) и довольно несложное обеспечение идемпотентности операций.

В данной статье я приведу пример самого простого конфига веб сервера, на который мы накатим всё необходимое ПО для запуска php веб-приложения. На голый сервер достаточно установить Ansible (как его установить сказано в документации https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) и запустить main.yml

Он установит:

  • Fail2ban
  • Ufw
  • Php с нужными расширениями
  • Nginx
  • MariaDB
  • Git
  • Composer
  • python-mysqldb

И создаст:

  • Пользователя с именем webmaster и паролем password (не забудьте сменить пароль)
  • Базу данных с именем app_db
  • Пользователя БД с именем app_user и паролем app_user_password (не забудьте сменить пароль) и даст все привелегии на базу to app_db

Данного набора ПО достаточно чтобы запустить Laravel приложение. Код можно посмотреть на моем github аккаунте https://github.com/antonov-e-v/ansible-php-webserver-simple

В этом, самом простейшем случае мы только устанавливаем ПО, не конфигурируя его, так что тут появляется-таки простор для монотонной ручной работы. Однако в следующей статье я рассмотрю как сделать такой playbook, который будет содержать еще и необходимые шаблоны конфигов, чтобы настройка сервера превратилась в просто запуск сприпта с передачей стартовых параметров (имя сайта, реквизиты БД, пользователей и т.д.)

{{ message }}

{{ 'Comments are closed.' | trans }}