geerlingguy.apache

Ansible Rolle: Apache 2.x

CI

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.

Über das Projekt

Apache 2.x for Linux.

Installieren
ansible-galaxy install geerlingguy.apache
Lizenz
mit
Downloads
10.3M
Besitzer
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns