apache
wcm_io_devops.apache
Роль для Ansible, которая устанавливает Apache 2.x на RHEL/CentOS, Debian/Ubuntu, SLES и Solaris.
форк wcm.io
wcm.io начал поддерживать свой собственный форк, чтобы быстрее интегрировать изменения в оригинальный репозиторий geerlingguy.apache.
Форк wcm.io добавляет следующие функции поверх оригинальной функциональности:
запрос на изменение #150
- поддержка
apache_listen_port
иapache_listen_port_ssl
на Debian, RedHat/Amazon Linux и SUSE - поддержка
apache_mods_enabled
на Debian, RedHat/Amazon Linux и SUSE.
- поддержка
Проблема https://github.com/geerlingguy/ansible-role-apache/issues/81
Проблема https://github.com/geerlingguy/ansible-role-apache/issues/21
Пространство имен
Эта роль опубликована в пространстве имен 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.
ansible-galaxy install wcm-io-devops/ansible-role-apache