apache

Ansible Роль: Apache 2.x

CI

Эта 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.

О проекте

Apache 2.x for Linux.

Установить
ansible-galaxy install geerlingguy/ansible-role-apache
Лицензия
mit
Загрузки
9459261
Владелец
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns