pgporada.httpd
Przegląd: ansible-role-httpd
Ta rola skonfiguruje httpd (Apache), ustawi wirtualne hosty, które zdefiniowałeś, oraz ustawi zasady przekierowania. Konfiguruję swoje wirtualne hosty w sposób, którego nauczyli mnie doświadczeni administratorzy, gdy pracowałem w centrum danych. Do tej pory kontynuuję tę metodę w swojej karierze. To ustawienie ma swoje zasady. Możesz się z tym nie zgadzać.
Definicje zmiennych
Użyj tego, jeśli uruchamiasz httpd za load balancerem, takim jak ELB lub HaProxy. Jeśli prawda, skopiuje plik customer_logger.conf do /etc/httpd/conf.d/
. Logger klienta otrzyma nagłówek x-forwarded source IP.
httpd_is_behind_loadbalancer: false
Ustawia domyślny katalog główny dokumentów w /etc/httpd/conf/httpd.conf
. Zwykle należy to nadpisać dla vagranta, w przeciwnym razie pozostaw to w spokoju.
httpd_conf_docrootdir: /var/www/domains
Ustaw porty, na których httpd będzie nasłuchiwać.
httpd_conf_port: 80
httpd_conf_port_ssl: 443
Włącz lub wyłącz dyrektywę keepalive w httpd. Typ logiczny dla ansible. Dokumentacja
httpd_conf_keepalive_enable: true
Moduł przetwarzania wielu procesów do obsługi żądań. Dokumentacja
httpd_conf_mpm: prefork # Inne ważne opcje to 'event' i 'worker'
Użyj mod_headers, aby ustawić httponly i secure na wszystkich ciasteczkach. To ma swoje implikacje. Typ logiczny, domyślnie false. Dokumentacja
httpd_conf_securecookies: false
Przykładowy Playbook
---
- 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
# Przekierowuje żądania z ELB na https
# Chcemy dopasować się na protokole http, aby uniknąć błędów healthcheck przy 301 przekierowaniu
#RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
#RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
extra_parameters_include: |
#
# To jest specyficzne dla vagranta
#EnableSendfile Off
# Ukryj rzeczy związane z gitem
RewriteRule ^(.*/)?\.git+ - [R=404,L]
RewriteRule ^(.*/)?\.gitignore+ - [R=404,L]
roles:
- ansible-roles-httpd
...
Jak pracować z tą rolą
Przed uruchomieniem jakichkolwiek testów powinieneś zweryfikować składnię za pomocą yamllint.
find . -type f -name "*.yml*" | sed "s|\./||g" | egrep -v "(\.kitchen/|\[warning\]|\.molecule/)" | xargs yamllint -f parsable
Powinieneś zobaczyć wynik, który można zweryfikować ręcznie lub po prostu zignorować. Widać, że znaleziono błąd. Gdyby nie został zauważony, mogłoby to uniemożliwić ukończenie działania ansible.
$ find . -type f -name "*.yml*" | sed "s|\./||g" | egrep -v "(\.kitchen/|\[warning\]|\.molecule/)" | xargs yamllint -f parsable
defaults/main.yml:41:121: [warning] linia zbyt długa (127 > 120 znaków) (linia-długość)
meta/main.yml:7:22: [error] błąd składniowy: nie można tu mapować wartości
test/integration/default/default.yml:4:1: [warning] komentarz nie jest wcięty jak zawartość (wcięcie-komentarzy)
test/requirements.yml:2:2: [warning] brakująca spacja na początku komentarza (komentarze)
Będziesz potrzebować środowiska ruby, aby zainstalować zasoby dla test-kitchen. Instalujemy zasoby przez bundler.
git clone git@github.com: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
Powinieneś teraz mieć dostęp do strony domowej, jak zdefiniowano w pliku .kitchen.yml
.
Muzyka Tematyczna
Informacje o autorze
GPLv3
Phil Porada
Installs and configures httpd. Enables programmatic creation of vhosts.
ansible-galaxy install pgporada.httpd