geerlingguy.apache
Ansible Rolle: Apache 2.x
Eine Ansible Rolle, die Apache 2.x auf RHEL/CentOS, Debian/Ubuntu, SLES und Solaris installiert.
Anforderungen
Wenn Sie SSL/TLS verwenden, müssen Sie Ihre eigenen Zertifikate und Schlüsseldateien bereitstellen. Sie können ein selbstsigniertes Zertifikat mit einem Befehl wie openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crt
erstellen.
Wenn Sie Apache mit PHP verwenden, empfehle ich die Verwendung der Rolle geerlingguy.php
zur Installation von PHP. Sie können entweder mod_php verwenden (indem Sie das passende Paket, z.B. libapache2-mod-php5
für Ubuntu, zu php_packages
hinzufügen) oder die Rolle geerlingguy.apache-php-fpm
, um Apache über FPM mit PHP zu verbinden. Weitere Informationen finden Sie in der README dieser Rolle.
Rollenvariablen
Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml
):
apache_enablerepo: ""
Das Repository, das beim Installieren von Apache verwendet werden soll (nur auf RHEL/CentOS-Systemen). Wenn Sie später Versionen von Apache als die in den Standardrepositories des Betriebssystems verfügbaren haben möchten, verwenden Sie ein Repository wie EPEL (das mit der Rolle geerlingguy.repo-epel
installiert werden kann).
apache_listen_ip: "*"
apache_listen_port: 80
apache_listen_port_ssl: 443
Die IP-Adresse und die Ports, auf denen Apache hören soll. Nützlich, wenn ein anderer Dienst (wie ein Reverse Proxy) auf Port 80 oder 443 lauscht und die Standardwerte geändert werden müssen.
apache_create_vhosts: true
apache_vhosts_filename: "vhosts.conf"
apache_vhosts_template: "vhosts.conf.j2"
Wenn auf true
gesetzt, wird eine vhosts-Datei erstellt und im Apache-Konfigurationsordner platziert, die durch die Variablen dieser Rolle verwaltet wird. Wenn auf false
gesetzt, können Sie Ihre eigene vhosts-Datei in den Konfigurationsordner von Apache legen und die durch diese Rolle hinzugefügte bequeme (aber einfachere) Datei überspringen. Sie können auch die verwendete Vorlage überschreiben und einen Pfad zu Ihrer eigenen Vorlage angeben, wenn Sie das Layout Ihrer VirtualHosts weiter anpassen müssen.
apache_remove_default_vhost: false
Auf Debian/Ubuntu ist ein standardmäßiger virtueller Host in der Apache-Konfiguration enthalten. Setzen Sie dies auf true
, um diese standardmäßige virtuelle Hostkonfigurationsdatei zu entfernen.
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# Fügen Sie an nachfolgenden Zeilen weitere globale Einstellungen hinzu.
Sie können globale Apache-Konfigurationseinstellungen in der von der Rolle bereitgestellten vhosts-Datei hinzufügen oder überschreiben (vorausgesetzt, apache_create_vhosts
ist true) mit dieser Variablen. Standardmäßig setzt es nur die DirectoryIndex
-Konfiguration.
apache_vhosts:
# Zusätzliche optionale Eigenschaften: 'serveradmin, serveralias, extra_parameters'.
- servername: "local.dev"
documentroot: "/var/www/html"
Fügen Sie eine Gruppe von Eigenschaften pro virtuellen Host hinzu, einschließlich servername
(erforderlich), documentroot
(erforderlich), allow_override
(optional: Standardwert ist der Wert von apache_allow_override
), options
(optional: Standardwert ist der Wert von apache_options
), serveradmin
(optional), serveralias
(optional) und extra_parameters
(optional: Sie können hier beliebige zusätzliche Konfigurationszeilen hinzufügen).
Hier ist ein Beispiel mit extra_parameters
, um eine RewriteRule hinzuzufügen, die alle Anfragen an die www.
-Site umleitet:
- 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]
Das |
zeigt einen mehrzeiligen Skalarenblock in YAML an, sodass Zeilenumbrüche in der resultierenden Konfigurationsdatei beibehalten werden.
apache_vhosts_ssl: []
Standardmäßig sind keine SSL-Hosts konfiguriert, aber Sie können sie im selben Muster wie apache_vhosts
mit einigen zusätzlichen Anweisungen hinzufügen, wie im folgenden Beispiel:
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]
Andere SSL-Anweisungen können mit anderen SSL-bezogenen Variablen der Rolle verwaltet werden.
apache_ssl_no_log: true
Ob SSL-bezogene Aufgabendaten beim Ausführen des Playbooks in die Konsole ausgegeben werden sollen.
apache_ssl_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"
Die SSL-Protokolle und Cipher-Suites, die verwendet/erlaubt sind, wenn Clients sichere Verbindungen zu Ihrem Server herstellen. Dies sind sichere/vernünftige Standardwerte, aber für maximale Sicherheit, Leistung und/oder Kompatibilität müssen Sie diese Einstellungen möglicherweise anpassen.
apache_allow_override: "All"
apache_options: "-Indexes +FollowSymLinks"
Die Standardwerte für die AllowOverride
- und Options
-Direktiven für das documentroot
-Verzeichnis jedes virtuellen Hosts. Ein virtueller Host kann diese Werte überschreiben, indem er allow_override
oder options
angibt.
apache_mods_enabled:
- rewrite
- ssl
apache_mods_disabled: []
Welche Apache-Module aktiviert oder deaktiviert werden sollen (diese werden an den entsprechenden Ort verlinkt). Weitere Informationen finden Sie im Verzeichnis mods-available
im Apache-Konfigurationsverzeichnis (/etc/apache2/mods-available
auf Debian/Ubuntu) zu allen verfügbaren Mods.
apache_packages:
- [plattform-spezifisch]
Die Liste der zu installierenden Pakete. Diese wird standardmäßig auf eine Menge plattformspezifischer Pakete für RedHat- oder Debian-basierte Systeme gesetzt (siehe vars/RedHat.yml
und vars/Debian.yml
für die Standardwerte).
apache_state: started
Setzen Sie den anfänglichen Status des Apache-Daemons, der beim Ausführen dieser Rolle durchgesetzt werden soll. Dies sollte in der Regel started
bleiben, aber Sie können es auf stopped
setzen, wenn Sie die Apache-Konfiguration während eines Playbook-Laufs beheben müssen oder wenn Apache zu diesem Zeitpunkt nicht gestartet sein soll.
apache_enabled: yes
Setzen Sie den Status des Apache-Dienstes beim Booten. Dies sollte in der Regel yes
bleiben, aber Sie können es auf no
setzen, wenn Sie Ansible ausführen möchten, während der Dienst deaktiviert bleibt.
apache_packages_state: present
Wenn Sie zusätzliche Repositories wie ondrej/apache2, geerlingguy.repo-epel oder geerlingguy.repo-remi aktiviert haben, möchten Sie möglicherweise einen einfacheren Weg, um die Versionen zu aktualisieren. Sie können dies auf latest
setzen (kombiniert mit apache_enablerepo
auf RHEL) und direkt auf eine andere Apache-Version aus einem anderen Repo aktualisieren (anstatt Apache zu deinstallieren und neu zu installieren).
apache_ignore_missing_ssl_certificate: true
Wenn Sie SSL-Hosts nur erstellen möchten, wenn das Hostzertifikat vorhanden ist (z.B. beim Einsatz von Let’s Encrypt), setzen Sie apache_ignore_missing_ssl_certificate
auf false
. In diesem Fall müssen Sie möglicherweise Ihr Playbook mehrmals ausführen, damit alle Hosts konfiguriert sind (wenn ein anderer Teil des Playbooks die SSL-Zertifikate erstellt).
.htaccess-basierte Basisautorisierung
Wenn Sie Unterstützung für die Basisauthentifizierung benötigen, können Sie dies entweder durch eine benutzerdefinierte Vorlage hinzufügen oder durch Hinzufügen von extra_parameters
zu einer VirtualHost-Konfiguration, wie folgt:
extra_parameters: |
<Directory "/var/www/password-protected-directory">
Require valid-user
AuthType Basic
AuthName "Bitte authentifizieren"
AuthUserFile /var/www/password-protected-directory/.htpasswd
</Directory>
Um alles innerhalb einer VirtualHost-Direktive passwortgeschützt zu machen, verwenden Sie anstelle von Directory
den Location
-Block:
<Location "/">
Require valid-user
....
</Location>
Sie müssen Ihre eigene .htpasswd
-Datei in Ihrem eigenen Playbook generieren/hochladen. Es kann auch andere Rollen geben, die diese Funktionalität umfassender unterstützen.
Abhängigkeiten
Keine.
Beispiel-Playbook
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- { role: geerlingguy.apache }
Innerhalb von vars/main.yml
:
apache_listen_port: 8080
apache_vhosts:
- {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}
Lizenz
MIT / BSD
Autoreninformation
Diese Rolle wurde 2014 von Jeff Geerling erstellt, dem Autor von Ansible for DevOps.
ansible-galaxy install geerlingguy.apache