apache
Ansible Роль: Apache 2.x
Эта Ansible Роль устанавливает Apache 2.x на RHEL/CentOS, Debian/Ubuntu, SLES и Solaris.
Требования
Если вы используете 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 и пропустить добавленный этой ролью более простой вариант. Вы также можете переопределить используемый шаблон и указать путь к своему собственному шаблону, если нужно дополнительно настроить макет ваших виртуальных хостов.
apache_remove_default_vhost: false
В Debian/Ubuntu в конфигурацию Apache включен конфигурационный файл виртуального хоста по умолчанию. Установите это значение в true
, чтобы удалить файл конфигурации виртуального хоста по умолчанию.
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# Добавьте другие глобальные настройки на последующих строках.
Вы можете добавить или переопределить глобальные настройки конфигурации Apache в файле vhosts, предоставленном ролью (при условии, что apache_create_vhosts
установлено в true), используя эту переменную. По умолчанию она только устанавливает конфигурацию DirectoryIndex.
apache_vhosts:
- 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_no_log: true
Указывает, нужно ли выводить информацию о задачах, связанных с 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
- ssl
apache_mods_disabled: []
Модули Apache, которые нужно включить или отключить (они будут созданы как символические ссылки в соответствующем месте). Ознакомьтесь с директорией mods-available
внутри директории конфигурации Apache (/etc/apache2/mods-available
на Debian/Ubuntu) для всех доступных модулей.
apache_packages:
- [специфичные для платформы]
Список пакетов для установки. По умолчанию это набор специфичных для платформы пакетов для систем RedHat или Debian (см. vars/RedHat.yml
и vars/Debian.yml
для значений по умолчанию).
apache_state: started
Установить начальное состояние демона Apache, которое необходимо установить при запуске этой роли. Обычно это должно оставаться started
, но вы можете установить его в stopped
, если нужно исправить конфигурацию Apache во время выполнения плейбука или если вы не хотите, чтобы Apache запускался в момент выполнения этой роли.
apache_enabled: yes
Установить статус загрузки службы Apache. Это обычно должно оставаться yes
, но вы можете установить это на no
, если нужно запустить Ansible, оставив службу отключенной.
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 сертификаты).
Основная авторизация на основе .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: webservers
vars_files:
- vars/main.yml
roles:
- { role: geerlingguy.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.
ansible-galaxy install geerlingguy/ansible-role-apache