wcm_io_devops.apache
wcm_io_devops.apache
To rola Ansible, która instaluje Apache 2.x na RHEL/CentOS, Debian/Ubuntu, SLES i Solaris.
Fork wcm.io
wcm.io zaczął utrzymywać własną wersję, aby szybciej wprowadzać zmiany w oryginalnym repozytorium geerlingguy.apache.
Fork wcm.io dodaje następujące funkcje do oryginalnej funkcjonalności:
zgłoszenie #150
- wsparcie dla
apache_listen_port
iapache_listen_port_ssl
na Debianie, RedHat/Amazon Linux i SUSE - wsparcie dla
apache_mods_enabled
na Debianie, RedHat/Amazon Linux i SUSE.
- wsparcie dla
Problemy https://github.com/geerlingguy/ansible-role-apache/issues/81
Problemy https://github.com/geerlingguy/ansible-role-apache/issues/21
Przestrzeń nazw
Ta rola jest publikowana w przestrzeni nazw wcm-io-devops
.
Wersjonowanie
Numery wersji tego forka będą podążać za wersjami repozytorium forked.
Aby zachować oryginalną wersję, wydania wcm.io dodadzą czwarty numer wersji oddzielony od pozostałych -
, który będzie zwiększany przy każdym wydaniu wcm.io, np. 3.0.0-1
i 3.0.0-2
.
Wymagania
Jeśli używasz SSL/TLS, będziesz musiał dostarczyć własne pliki certyfikatu i klucza. Możesz wygenerować własny certyfikat samopodpisany za pomocą polecenia openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crt
.
Jeśli używasz Apache z PHP, zalecam użycie roli geerlingguy.php
do zainstalowania PHP, a możesz używać mod_php (dodając odpowiedni pakiet, np. libapache2-mod-php5
dla Ubuntu, do php_packages
), lub również użyć geerlingguy.apache-php-fpm
, aby połączyć Apache z PHP za pośrednictwem FPM. Zapoznaj się z dokumentacją tej roli, aby uzyskać więcej informacji.
Zmienne roli
Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (zobacz defaults/main.yml
):
apache_enablerepo: ""
Repozytorium do użycia przy instalacji Apache (używane tylko na systemach RHEL/CentOS). Jeśli chcesz nowsze wersje Apache niż dostępne w core repozytoriach systemu, użyj repozytorium takiego jak EPEL (które można zainstalować za pomocą roli geerlingguy.repo-epel
).
apache_listen_ip: "*"
apache_listen_port: 80
apache_listen_port_ssl: 443
Adres IP i porty, na których Apache powinien nasłuchiwać. Przydatne, jeśli masz inną usługę (np. proxy odwrotne) nasłuchującą na porcie 80 lub 443 i musisz zmienić domyślne ustawienia.
apache_create_vhosts: true
apache_vhosts_filename: "vhosts.conf"
apache_vhosts_template: "vhosts.conf.j2"
Jeśli ustawione na true, plik vhosts zarządzany przez zmienne tej roli (zobacz poniżej) zostanie utworzony i umieszczony w folderze konfiguracyjnym Apache. Jeśli ustawione na false, możesz umieścić własny plik vhosts w folderze konfiguracyjnym Apache i pominąć wygodny (ale bardziej podstawowy) plik dodany przez tę rolę. Możesz również nadpisać szablon, którego chcesz użyć, i ustawić ścieżkę do własnego szablonu, jeśli musisz dalej dostosować układ swoich VirtualHosts.
Jeśli apache_create_vhosts
jest ustawione na false, vhosts.conf
zostanie usunięty podczas przygotowywania.
apache_remove_default_vhost: false
Na Debianie/Ubuntu i RedHat/CentOS domyślne wirtualne hosty są dołączane do konfiguracji Apache. Ustaw to na true
, aby usunąć ten domyślny plik konfiguracyjny wirtualnego hosta.
apache_remove_default_vhost_ssl: false
Na systemach opartych na RedHat/CentOS domyślny wirtualny host jest obecny w ssl.conf. Ustaw to na true
, aby usunąć ten wirtualny host z pliku konfiguracyjnego ssl.conf.
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# Dodaj inne globalne ustawienia w kolejnych linijkach.
Możesz dodać lub nadpisać globalne ustawienia konfiguracyjne Apache w pliku vhosts dostarczonym przez rolę (zakładając, że apache_create_vhosts
jest true), używając tej zmiennej. Domyślnie ustawia tylko konfigurację DirectoryIndex.
apache_vhosts:
# Dodatkowe opcjonalne właściwości: 'serveradmin, serveralias, extra_parameters'.
- servername: "local.dev"
documentroot: "/var/www/html"
Dodaj zestaw właściwości dla każdego wirtualnego hosta, w tym servername
(wymagane), documentroot
(wymagane), allow_override
(opcjonalne: domyślnie ustawia wartość apache_allow_override
), options
(opcjonalne: domyślnie ustawia wartość apache_options
), serveradmin
(opcjonalne), serveralias
(opcjonalne) i extra_parameters
(opcjonalne: możesz dodać dowolne dodatkowe linie konfiguracyjne).
Oto przykład użycia extra_parameters
, aby dodać RewriteRule, aby przekierować wszystkie żądania do witryny 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]
|
oznacza wieloliniowy blok skalarno-wartosciowy w YAML, więc nowe linie są zachowane w wynikowym pliku konfiguracyjnym.
apache_vhosts_ssl: []
Domyślnie nie są konfigurowane żadne vhosts SSL, ale możesz je dodać, używając tego samego wzoru co apache_vhosts
, z kilkoma dodatkowymi dyrektywami, jak w poniższym przykładzie:
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]
Inne dyrektywy SSL można zarządzać za pomocą innych zmiennych związanych z SSL w roli.
apache_ssl_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"
Protokół SSL i zestawy szyfrów, które są używane/zezwolone, gdy klienci łączą się z serwerem. To są bezpieczne i rozsądne domyślne ustawienia, ale dla maksymalnego bezpieczeństwa, wydajności i/lub kompatybilności, możesz potrzebować dostosować te ustawienia.
apache_allow_override: "All"
apache_options: "-Indexes +FollowSymLinks"
Domyślne wartości dla dyrektyw AllowOverride
i Options
dla katalogu documentroot
każdego wirtualnego hosta. Wirtualny host może nadpisywać te wartości, określając allow_override
lub options
.
apache_mods_enabled:
- rewrite.load
- ssl.load
apache_mods_disabled: []
(TYLKO Debian/Ubuntu) Które moduły Apache mają być włączane lub wyłączane (będą one linkowane do odpowiedniej lokalizacji). Zobacz katalog mods-available
wewnątrz katalogu konfiguracyjnego apache (/etc/apache2/mods-available
domyślnie) dla wszystkich dostępnych modułów.
apache_packages:
- [specyficzne dla platformy]
Lista pakietów do zainstalowania. Domyślnie jest to zestaw pakietów specyficznych dla platformy dla systemów RedHat lub opartych na Debianie (zobacz vars/RedHat.yml
i vars/Debian.yml
dla wartości domyślnych).
apache_state: started
Ustaw początkowy stan demona Apache, który ma być wymuszany podczas uruchamiania tej roli. Ogólnie rzecz biorąc, powinno to pozostać started
, ale możesz ustawić to na stopped
, jeśli musisz naprawić konfigurację Apache podczas uruchamiania playbooka lub w przeciwnym razie nie chcesz, aby Apache uruchomił się w momencie uruchamiania tej roli.
apache_packages_state: present
Jeśli włączyłeś dodatkowe repozytoria, takie jak ondrej/apache2, geerlingguy.repo-epel lub geerlingguy.repo-remi, możesz chcieć uzyskać łatwy sposób na aktualizację wersji. Możesz ustawić to na latest
(połączone z apache_enablerepo
na RHEL) i bezpośrednio zaktualizować do innej wersji Apache z innego repozytorium (zamiast odinstalować i ponownie zainstalować Apache).
apache_ignore_missing_ssl_certificate: true
Jeśli chcesz, aby SSL vhosts były tworzony tylko wtedy, gdy certyfikat vhosta jest obecny (np. podczas używania Let’s Encrypt), ustaw apache_ignore_missing_ssl_certificate
na false
. W takim przypadku być może będziesz musiał uruchomić playbook więcej niż raz, aby wszystkie vhosts były skonfigurowane (jeśli inna część playbooka generuje certyfikaty SSL).
#apache_rhel_custom_vhosts_path: /etc/httpd/vhosts.d
Na RHEL/CentOS, w niektórych przypadkach możesz chcieć używać niestandardowego katalogu dla plików swoich wirtualnych hostów zamiast /etc/httpd/conf.d
. W takim przypadku użyj tej zmiennej.
Autoryzacja podstawowa oparta na .htaccess
Jeśli potrzebujesz wsparcia dla podstawowej autoryzacji, możesz to dodać poprzez niestandardowy szablon lub dodając extra_parameters
do konfiguracji VirtualHost, oto jak:
extra_parameters: |
<Directory "/var/www/password-protected-directory">
Require valid-user
AuthType Basic
AuthName "Proszę się uwierzytelnić"
AuthUserFile /var/www/password-protected-directory/.htpasswd
</Directory>
Aby chronić hasłem wszystko wewnątrz dyrektywy VirtualHost, użyj bloku Location
zamiast Directory
:
<Location "/">
Require valid-user
....
</Location>
Będziesz musiał wygenerować/wgrać swój plik .htpasswd
w swoim własnym playbooku. Mogą istnieć inne role, które wspierają tę funkcjonalność w bardziej zintegrowany sposób.
Zależności
Brak.
Przykład Playbook
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- { role: wcm_io_devops.apache }
Wewnątrz vars/main.yml
:
apache_listen_port: 8080
apache_vhosts:
- {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}
Licencja
MIT / BSD
Informacje o autorze
Ta rola została stworzona w 2014 roku przez Jeffa Geerlinga, autora Ansible for DevOps.
Ten fork jest utrzymywany przez wcm.io.
ansible-galaxy install wcm_io_devops.apache