apache

wcm_io_devops.apache

CI

Роль для Ansible, которая устанавливает Apache 2.x на RHEL/CentOS, Debian/Ubuntu, SLES и Solaris.

форк wcm.io

wcm.io начал поддерживать свой собственный форк, чтобы быстрее интегрировать изменения в оригинальный репозиторий geerlingguy.apache.

Форк wcm.io добавляет следующие функции поверх оригинальной функциональности:

Пространство имен

Эта роль опубликована в пространстве имен wcm-io-devops.

Версии

Номера версий этого форка будут соответствовать версиям оригинального форка.

Чтобы сохранить оригинальную версию, релиз wcm.io будет добавлять четвертый номер версии, разделенный -, который будет увеличиваться с каждым релизом wcm.io, например 3.0.0-1 и 3.0.0-2.

Требования

Если вы используете SSL/TLS, вам нужно будет предоставить свои собственные файлы сертификатов и ключей. Вы можете сгенерировать самоподписанный сертификат с помощью команды, такой как openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crt.

Если вы используете Apache с PHP, я рекомендую использовать роль geerlingguy.php для установки PHP. Вы можете использовать mod_php (добавив соответствующий пакет, например libapache2-mod-php5 для Ubuntu, в php_packages), или использовать geerlingguy.apache-php-fpm, чтобы соединить Apache с PHP через FPM. Смотрите README той роли для получения дополнительной информации.

Переменные роли

Доступные переменные перечислены ниже, вместе с их значениями по умолчанию (см. defaults/main.yml):

apache_enablerepo: ""

Репозиторий для установки Apache (используется только на системах RHEL/CentOS). Если вы хотите более поздние версии Apache, чем те, которые доступны в основных репозиториях ОС, используйте репозиторий, такой как EPEL (который можно установить с помощью роли geerlingguy.repo-epel).

apache_listen_ip: "*"
apache_listen_port: 80
apache_listen_port_ssl: 443

IP-адрес и порты, на которых Apache должен слушать. Полезно, если у вас есть другая служба (например, обратный прокси), которая слушает на порте 80 или 443, и вам нужно изменить значения по умолчанию.

apache_create_vhosts: true
apache_vhosts_filename: "vhosts.conf"
apache_vhosts_template: "vhosts.conf.j2"

Если установлено значение true, будет создан файл vhosts, управляемый переменными этой роли (см. ниже), и помещен в папку конфигурации Apache. Если установлено значение false, вы можете разместить свой собственный файл vhosts в папке конфигурации Apache и пропустить добавленный этой ролью более базовый вариант. Вы также можете переопределить используемый шаблон и установить путь к собственному шаблону, если вам нужно дополнительно настроить структуру ваших VirtualHosts. Если apache_create_vhosts установлено в false, файл vhosts.conf будет удален во время настройки.

apache_remove_default_vhost: false

На Debian/Ubuntu и RedHat/CentOS в конфигурацию Apache включены стандартные виртуальные хосты. Установите это значение в true, чтобы удалить этот стандартный файл конфигурации виртуального хоста.

apache_remove_default_vhost_ssl: false

На системах на базе RedHat/CentOS присутствует стандартный виртуальный хост в ssl.conf. Установите это значение в true, чтобы удалить этот виртуальный хост из файла конфигурации ssl.conf.

apache_global_vhost_settings: |
  DirectoryIndex index.php index.html
  # Добавьте другие глобальные настройки в следующих строках.

Вы можете добавить или переопределить глобальные настройки конфигурации Apache в файле vhosts, предоставленном ролью (при условии, что apache_create_vhosts равно true), используя эту переменную. По умолчанию она устанавливает только настройку DirectoryIndex.

apache_vhosts:
  # Дополнительные опциональные свойства: 'serveradmin, serveralias, extra_parameters'.
  - servername: "local.dev"
    documentroot: "/var/www/html"

Добавьте набор свойств для каждого виртуального хоста, включая servername (обязательно), documentroot (обязательно), allow_override (опционально: по умолчанию соответствует значению apache_allow_override), options (опционально: по умолчанию соответствует значению apache_options), serveradmin (опционально), serveralias (опционально) и extra_parameters (опционально: вы можете добавить любые дополнительные строки конфигурации, которые вам нужны).

Вот пример использования extra_parameters, чтобы добавить RewriteRule для перенаправления всех запросов на сайт с www.:

  - servername: "www.local.dev"
    serveralias: "local.dev"
    documentroot: "/var/www/html"
    extra_parameters: |
      RewriteCond %{HTTP_HOST} !^www\. [NC]
      RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

| обозначает многострочный скалярный блок в YAML, поэтому переносы строк сохраняются в результирующем файле конфигурации.

apache_vhosts_ssl: []

SSL-виртуальные хосты по умолчанию не настроены, но вы можете добавить их, используя ту же схему, что и для apache_vhosts, с несколькими дополнительными директивами, как в следующем примере:

apache_vhosts_ssl:
  - servername: "local.dev"
    documentroot: "/var/www/html"
    certificate_file: "/home/vagrant/example.crt"
    certificate_key_file: "/home/vagrant/example.key"
    certificate_chain_file: "/path/to/certificate_chain.crt"
    extra_parameters: |
      RewriteCond %{HTTP_HOST} !^www\. [NC]
      RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Другие директивы SSL могут управляться с помощью других переменных роли, связанных с SSL.

apache_ssl_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"

SSL-протоколы и наборы шифров, которые используются/разрешены, когда клиенты устанавливают безопасные соединения с вашим сервером. Это безопасные и разумные значения по умолчанию, но для максимальной безопасности, производительности и/или совместимости вам может потребоваться отрегулировать эти настройки.

apache_allow_override: "All"
apache_options: "-Indexes +FollowSymLinks"

Значения по умолчанию для директив AllowOverride и Options для директории documentroot каждого виртуального хоста. Виртуальный хост может переопределить эти значения, указав allow_override или options.

apache_mods_enabled:
  - rewrite.load
  - ssl.load
apache_mods_disabled: []

(Только для Debian/Ubuntu) Модули Apache, которые нужно включить или отключить (они будут связаны в нужное место). Смотрите директорию mods-available внутри директории конфигурации Apache (/etc/apache2/mods-available по умолчанию) для всех доступных модов.

apache_packages:
  - [специфические для платформы]

Список устанавливаемых пакетов. По умолчанию это набор пакетов, специфичных для платформы для систем на основе RedHat или Debian (см. vars/RedHat.yml и vars/Debian.yml для значений по умолчанию).

apache_state: started

Установите начальное состояние демона Apache, которое будет применено, когда будет запущена эта роль. Обычно это должно оставаться "started", но вы можете установить в "stopped", если вам нужно исправить конфигурацию Apache во время выполнения плейбука или если вы не хотите, чтобы Apache был запущен в момент выполнения этой роли.

apache_packages_state: present

Если вы включили какие-либо дополнительные репозитории, такие как ondrej/apache2, geerlingguy.repo-epel или geerlingguy.repo-remi, вам может понадобиться простой способ обновления версий. Вы можете установить это в latest (в комбинации с apache_enablerepo на RHEL), и можете напрямую обновлять версию Apache из другого репозитория (вместо того, чтобы удалять и переустанавливать Apache).

apache_ignore_missing_ssl_certificate: true

Если вы хотите создавать SSL-виртуальные хосты только когда присутствует сертификат виртуального хоста (например, при использовании Let’s Encrypt), установите apache_ignore_missing_ssl_certificate в значение false. При этом вам может понадобиться запускать ваш плейбук несколько раз, чтобы все виртуальные хосты были настроены (если другая часть плейбука генерирует SSL-сертификаты).

#apache_rhel_custom_vhosts_path: /etc/httpd/vhosts.d

На RHEL/CentOS в некоторых случаях вы можете захотеть использовать пользовательский каталог для вашего файла виртуальных хостов вместо /etc/httpd/conf.d. Тогда используйте эту переменную.

Основная авторизация на основе .htaccess

Если вам нужна поддержка основной авторизации, вы можете добавить её либо через пользовательский шаблон, либо добавив extra_parameters к конфигурации VirtualHost, как так:

extra_parameters: |
  <Directory "/var/www/password-protected-directory">
    Require valid-user
    AuthType Basic
    AuthName "Пожалуйста, выполните аутентификацию"
    AuthUserFile /var/www/password-protected-directory/.htpasswd
  </Directory>

Чтобы защитить паролем всё внутри директивы VirtualHost, используйте блок Location вместо Directory:

<Location "/">
  Require valid-user
  ....
</Location>

Вам нужно будет сгенерировать/загрузить свой собственный файл .htpasswd в вашем плейбуке. Возможно, есть другие роли, которые поддерживают эту функциональность более интегрированным способом.

Зависимости

Нет.

Пример плейбука

- hosts: веб-серверы
  vars_files:
    - vars/main.yml
  roles:
    - { role: wcm_io_devops.apache }

Внутри vars/main.yml:

apache_listen_port: 8080
apache_vhosts:
  - {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}

Лицензия

MIT / BSD

Информация об авторе

Эта роль была создана в 2014 году Джеффом Гирлингом, автором Ansible for DevOps.

Этот форк поддерживается wcm.io.

О проекте

Apache 2.x for Linux. (fork of geerlingguy.apache)

Установить
ansible-galaxy install wcm-io-devops/ansible-role-apache
Лицензия
mit
Загрузки
110019
Владелец
Tools for Configuration Management and Deployment