wcm_io_devops.apache
wcm_io_devops.apache
Eine Ansible-Rolle, die Apache 2.x auf RHEL/CentOS, Debian/Ubuntu, SLES und Solaris installiert.
wcm.io Fork
wcm.io hat einen eigenen Fork erstellt, um Änderungen schneller in das originale geerlingguy.apache Repository zu integrieren.
Der wcm.io Fork fügt die folgenden Funktionen zum originalen Funktionsumfang hinzu:
Pull-Request #150
- Unterstützung für
apache_listen_port
undapache_listen_port_ssl
auf Debian, RedHat/Amazon Linux und SUSE. - Unterstützung für
apache_mods_enabled
auf Debian, RedHat/Amazon Linux und SUSE.
- Unterstützung für
Issue https://github.com/geerlingguy/ansible-role-apache/issues/81
Issue https://github.com/geerlingguy/ansible-role-apache/issues/21
Namensraum
Diese Rolle wird im Namensraum wcm-io-devops
veröffentlicht.
Versionsverwaltung
Die Versionsnummern dieses Forks folgen den Versionen des geforkten Repositories.
Um die originale Version beizubehalten, werden die wcm.io Versionen eine vierte
Versionsnummer hinzugefügt, die durch ein -
getrennt ist, und mit jedem wcm.io
Release erhöht wird, z.B. 3.0.0-1
und 3.0.0-2
.
Anforderungen
Wenn Sie SSL/TLS verwenden, müssen Sie Ihre eigenen Zertifikats- 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
generieren.
Wenn Sie Apache mit PHP verwenden, empfehle ich die Verwendung der Rolle geerlingguy.php
, um PHP zu installieren. Sie können entweder mod_php verwenden (indem Sie das richtige 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-Datei dieser Rolle.
Rollenversionen
Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml
):
apache_enablerepo: ""
Das Repository, das bei der Installation von Apache verwendet werden soll (nur auf RHEL/CentOS-Systemen). Wenn Sie neuere Versionen von Apache als die in den Kernrepositories des Betriebssystems verfügbaren nutzen 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 Ports, auf denen Apache hören soll. Nützlich, wenn Sie einen anderen Dienst (wie einen Reverse-Proxy) haben, der auf Port 80 oder 443 hört und die Standardwerte ändern 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, die durch die Variablen dieser Rolle verwaltet wird (siehe unten), erstellt und im Apache-Konfigurationsordner abgelegt. Wenn auf false gesetzt, können Sie Ihre eigene vhosts-Datei in den Konfigurationsordner von Apache einfügen und die von dieser Rolle hinzugefügte, einfache (aber grundlegende) Version überspringen. Sie können auch die Vorlage überschreiben und einen Pfad zu Ihrer eigenen Vorlage festlegen, wenn Sie das Layout Ihrer VirtualHosts weiter anpassen müssen.
Wenn apache_create_vhosts
auf false gesetzt ist, wird die vhosts.conf
während der Bereitstellung gelöscht.
apache_remove_default_vhost: false
Auf Debian/Ubuntu, RedHat/CentOS sind Standardvirtualhosts in der Apache-Konfiguration enthalten. Setzen Sie dies auf true
, um diese Standardvirtualhost-Konfigurationsdatei zu entfernen.
apache_remove_default_vhost_ssl: false
Auf RedHat/CentOS-basierten Systemen ist ein Standardvirtualhost in der ssl.conf vorhanden. Setzen Sie dies auf true
, um diesen Virtualhost aus der ssl.conf-Konfigurationsdatei zu entfernen.
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# Fügen Sie weitere globale Einstellungen in den folgenden Zeilen 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 wird nur die DirectoryIndex-Konfiguration gesetzt.
apache_vhosts:
# Zusätzliche optionale Eigenschaften: 'serveradmin, serveralias, extra_parameters'.
- servername: "local.dev"
documentroot: "/var/www/html"
Fügen Sie ein Set von Eigenschaften pro VirtualHost hinzu, einschließlich servername
(erforderlich), documentroot
(erforderlich), allow_override
(optional: standardmäßig der Wert von apache_allow_override
), options
(optional: standardmäßig der Wert von apache_options
), serveradmin
(optional), serveralias
(optional) und extra_parameters
(optional: hier können Sie beliebige zusätzliche Konfigurationszeilen hinzufügen).
Hier ist ein Beispiel, wie extra_parameters
verwendet wird, um eine RewriteRule hinzuzufügen, die alle Anfragen auf die www.
-Seite 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 |
kennzeichnet einen mehrzeiligen Skalartblock in YAML, sodass Zeilenumbrüche in der resultierenden Konfigurationsdatei erhalten bleiben.
apache_vhosts_ssl: []
Keine SSL-Vhosts sind standardmäßig konfiguriert, aber Sie können sie mit demselben Muster wie apache_vhosts
hinzufügen, mit einigen zusätzlichen Direktiven, 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-Direktiven können mit anderen ssl-spezifischen Rollenversionen verwaltet werden.
apache_ssl_protocol: "Alle -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"
Die SSL-Protokolle und Chiffren, die verwendet/erlaubt sind, wenn Clients sichere Verbindungen zu Ihrem Server herstellen. Diese sind sichere, sinnvolle Standardwerte, aber um maximale Sicherheit, Leistung und/oder Kompatibilität zu gewährleisten, müssen Sie diese Einstellungen möglicherweise anpassen.
apache_allow_override: "Alle"
apache_options: "-Indexes +FollowSymLinks"
Die Standardwerte für die Direktiven AllowOverride
und Options
für das documentroot
Verzeichnis jedes vhosts. Ein vhost kann diese Werte überschreiben, indem er allow_override
oder options
angibt.
apache_mods_enabled:
- rewrite.load
- ssl.load
apache_mods_disabled: []
(NUR Debian/Ubuntu) Welche Apache-Module aktiviert oder deaktiviert werden sollen (diese werden an den entsprechenden Ort verlinkt). Siehe das Verzeichnis mods-available
im Apache-Konfigurationsverzeichnis (/etc/apache2/mods-available
standardmäßig) für alle verfügbaren Module.
apache_packages:
- [plattform-spezifisch]
Die Liste der zu installierenden Pakete. Dies ist standardmäßig eine Menge plattform-spezifischer Pakete für RedHat- oder Debian-basierte Systeme (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 durch diese Rolle durchgesetzt wird. Dies sollte im Allgemeinen auf started
bleiben, Sie können es jedoch auf stopped
setzen, wenn Sie die Apache-Konfiguration während eines Playbook-Laufs reparieren müssen oder Apache zu dem Zeitpunkt, an dem diese Rolle ausgeführt wird, nicht gestartet sein soll.
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 eine einfache Möglichkeit, Versionen zu aktualisieren. Sie können dies auf latest
setzen (zusammen mit apache_enablerepo
auf RHEL) und direkt auf eine andere Apache-Version aus einem anderen Repository aktualisieren (statt Apache zu deinstallieren und neu zu installieren).
apache_ignore_missing_ssl_certificate: true
Wenn Sie SSL-vhosts nur erstellen möchten, wenn das vhost-Zertifikat vorhanden ist (z.B. bei der Verwendung von Let’s Encrypt), setzen Sie apache_ignore_missing_ssl_certificate
auf false
. Wenn Sie dies tun, müssen Sie möglicherweise Ihr Playbook mehrmals ausführen, damit alle vhosts konfiguriert sind (wenn ein anderer Teil des Playbooks die SSL-Zertifikate generiert).
#apache_rhel_custom_vhosts_path: /etc/httpd/vhosts.d
Auf RHEL/CentOS möchten Sie in manchen Fällen möglicherweise ein benutzerdefiniertes Verzeichnis für Ihre
VirtualHost-Dateien anstelle von /etc/httpd/conf.d
verwenden. Verwenden Sie dann diese Variable.
.htaccess-basierte Basisautorisierung
Wenn Sie Unterstützung für die Basisautorisierung benötigen, können Sie dies entweder über eine benutzerdefinierte Vorlage hinzufügen oder extra_parameters
zu einer VirtualHost-Konfiguration hinzufügen, 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 den Location
-Block anstelle des Directory
-Blocks:
<Location "/">
Require valid-user
....
</Location>
Sie müssten Ihre eigene .htpasswd
-Datei in Ihrem eigenen Playbook generieren/hochladen. Es gibt möglicherweise andere Rollen, die diese Funktionalität auf eine integrierte Weise unterstützen.
Abhängigkeiten
Keine.
Beispiel-Playbook
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- { role: wcm_io_devops.apache }
In vars/main.yml
:
apache_listen_port: 8080
apache_vhosts:
- {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}
Lizenz
MIT / BSD
Autor-Informationen
Diese Rolle wurde 2014 von Jeff Geerling erstellt, Autor von Ansible for DevOps.
Dieser Fork wird von wcm.io gepflegt.
Apache 2.x for Linux. (fork of geerlingguy.apache)
ansible-galaxy install wcm_io_devops.apache