httpd
Обзор: ansible-role-httpd
Этот ролик настраивает httpd (Apache), конфигурирует любые виртуальные хосты, которые вы определили, и настраивает любые правила переписывания/перенаправления. Я настраиваю свои виртуальные хосты так, как меня научили старшие администраторы, когда я работал в дата-центре. С тех пор я продолжаю следовать этому методу на протяжении всей своей карьеры. Эта настройка субъективна. Возможно, вы не согласны.
Определения переменных
Используйте это, если вы запускаете httpd за балансировщиком нагрузки, таким как ELB или HaProxy. Если установлено в true, скопирует customer_logger.conf
в /etc/httpd/conf.d/
. Логгер клиента получит заголовок x-forwarded source IP.
httpd_is_behind_loadbalancer: false
Устанавливает корневой каталог документа по умолчанию в /etc/httpd/conf/httpd.conf
. Обычно его нужно переопределить для Vagrant, в противном случае оставьте без изменений.
httpd_conf_docrootdir: /var/www/domains
Устанавливает порты, на которых будет прослушивать httpd.
httpd_conf_port: 80
httpd_conf_port_ssl: 443
Включает или отключает директиву keepalive для httpd. Логическое значение для Ansible. Документация
httpd_conf_keepalive_enable: true
Модуль многопроцессности для обработки запросов. Документация
httpd_conf_mpm: prefork # Другие допустимые опции: 'event' и 'worker'
Используйте mod_headers, чтобы устанавливать httponly и secure для всех куки. В этом есть свои последствия. Логическое значение, по умолчанию false. Документация
httpd_conf_securecookies: false
Пример плейбука
---
- hosts: localhost
connection: local
become: true
become_method: sudo
vars:
httpd_vhosts_enabled:
- url: jenkins.philporada.com
enable_ssl_vhost: false
#path_to_ssl_ca: /path/to/ca.pem
#path_to_ssl_cert: /path/to/cert.pem
#path_to_ssl_key: /path/to/key.pem
#path_to_ssl_chain: /path/to/bundle.pem
aliases: []
serveradmin: [email protected]
errorlog: "/var/log/httpd/error_log"
accesslog: "/var/log/httpd/access_log"
directory: "/var/www"
docrootdir: public_html
extra_parameters_main: |
#
#RewriteEngine On
# Переписывает запросы с ELB на https
# Мы хотим сопоставить с http, а не с отрицательным, !https, из-за сбоев проверки работоспособности при 301 перенаправлении
#RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
#RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
extra_parameters_include: |
#
# Это специфично для Vagrant
#EnableSendfile Off
# Скрыть данные, связанные с git
RewriteRule ^(.*/)?\.git+ - [R=404,L]
RewriteRule ^(.*/)?\.gitignore+ - [R=404,L]
roles:
- ansible-roles-httpd
...
Как эффективно работать с этой ролью
Перед выполнением любых тестов вы должны проверить вашу синтаксис с помощью yamllint.
find . -type f -name "*.yml*" | sed "s|\./||g" | egrep -v "(\.kitchen/|\[warning\]|\.molecule/)" | xargs yamllint -f parsable
Вы должны увидеть вывод, подобный следующему, на который можете принять меры или просто игнорировать. Однако вы легко можете заметить, что мы нашли ошибку. Ошибка, вероятно, помешала ansible завершить работу. Обнаружение таких ошибок — это ХОРОШО.
$ find . -type f -name "*.yml*" | sed "s|\./||g" | egrep -v "(\.kitchen/|\[warning\]|\.molecule/)" | xargs yamllint -f parsable
defaults/main.yml:41:121: [warning] строка слишком длинная (127 > 120 символов) (длина строки)
meta/main.yml:7:22: [error] синтаксическая ошибка: здесь не допускаются значения отображения
test/integration/default/default.yml:4:1: [warning] комментарий не отступлен как содержание (отступ комментариев)
test/requirements.yml:2:2: [warning] отсутствует начальный пробел в комментарии (комментарии)
Вам понадобится среда Ruby, чтобы установить гемы для test-kitchen. Мы устанавливаем гемы через bundler.
git clone [email protected]:pgporada/ansible-role-httpd.git
bundle install
bundle update
bundle exec kitchen create
bundle exec kitchen converge
bundle exec kitchen verify
bundle exec kitchen destroy
Теперь вы должны иметь возможность получить доступ к странице по умолчанию, как определено в файле .kitchen.yml
.
Музыка
Информация об авторе
GPLv3
Phil Porada
Installs and configures httpd. Enables programmatic creation of vhosts.
ansible-galaxy install pgporada/ansible-role-httpd