inoxio.ispconfig3

Ansible Rolle: Installiert und passt ISPConfig 3 auf Ubuntu Bionic an

Die inoxio.ispconfig3 Rolle hilft Ihnen, ISPConfig auf Ihrem Ubuntu 18.04 Computer zu installieren. Sie folgt den Anweisungen des howtoforge.com Tutorials und ermöglicht Anpassungen, die in den folgenden Abschnitten erklärt werden. Es verwendet auch Molecule als Testumgebung und enthält einige Tipps, wenn Sie Molecule selbst nutzen möchten.

Anforderungen

  • Computer mit Ubuntu 18.04

Abhängigkeiten

  • oefenweb.apt

Rollenvariablen

Mail, PHPMyAdmin und Roundcube setzen hauptsächlich die Admin-Passwörter der genannten Anwendung. Der Mail-Dienst benötigt auch eine E-Mail-Adresse, von der aus er E-Mails senden kann.

ISPConfig ist hier der wichtigste Teil, da es viele verschiedene Variablen enthält. Die meisten davon können in die autoinstall.php von ISPConfig übersetzt werden. Es ist auch wichtig zu beachten, dass das mysql_root_password für die Einrichtung des MariaDB-Moduls verwendet wird.

Playbook Variablen: Die folgenden Variablen sind im Playbook erforderlich (außer die Passwörter, die generiert werden, wenn sie weggelassen werden). Es gibt Prüfungen, die bestätigen, dass diese Variablen im Playbook angegeben sind. Die Standard Variablen können im Playbook überschrieben werden.

Mail: Dies setzt alle benötigten Variablen, um eine neue Mailingliste einzurichten. Es wird automatisch eine Mailingliste mit den angegebenen Parametern erstellt.

  • mail_admin_email: E-Mail-Adresse, die Updates von Mailman sendet/empfängt.

  • mail_admin_password: (Optional) Passwort für den Mailman-Admin. Wenn kein Passwort festgelegt ist, wird ein Passwort generiert und am Ende der Rollenausführung angezeigt.

  • mail_base_domain: Basisdomain für Mailman.

  • phpmyadmin_hostname: Basisdomain für phpmyadmin.

  • roundcube_admin_password: (Optional) Passwort für den Admin-Login in Roundcube. Wenn kein Passwort festgelegt ist, wird ein Passwort erstellt und am Ende der Rollenausführung angezeigt.

ispconfig: Hier befinden sich die meisten Konfigurationen für Ihre ISPConfig-Einrichtung. Bitte werfen Sie einen Blick auf das Beispiel, das ISPConfig selbst bereitstellt. Sie können es hier finden.

  • ispconfig_admin_password: (Optional) Passwort für den ISPConfig-Admin-Login. Wenn kein Passwort festgelegt ist, wird ein Passwort generiert und am Ende der Rollenausführung angezeigt.

  • ispconfig_mysql_root_password: (Optional) Passwort des Root-Benutzers, bitte wählen Sie ein sicheres. Auch wenn Ihre Datenbank nicht exponiert ist. Wenn kein Passwort festgelegt ist, wird ein Passwort generiert und am Ende der Rollenausführung angezeigt.

  • ispconfig_mysql_ispconfig_password: (Optional) Zugang für MySQL. Wenn kein Passwort festgelegt ist, wird ein Passwort generiert und am Ende der Rollenausführung angezeigt.

  • ispconfig_mysql_master_root_password: (Optional) Passwort für den Root-Benutzer der Master-Daten. Wenn kein Passwort festgelegt ist, wird ein Passwort generiert und am Ende der Rollenausführung angezeigt.

  • ispconfig_hostname: Name des ISPConfig-Hosts.

  • roundcube_hostname: Name des Roundcube-Hosts.

  • quota_mounts: Ist eine Liste aller Verzeichnisse, die für die Quota remountiert werden sollen. Siehe Abschnitt "Quota".

Standard Variablen:

  • language: Systemsprache

  • mailing_list_name: Setzt die Mailman-Liste. Es wird empfohlen, sie auf Mailman festzulegen (siehe Beispiel-Playbook).

    • Standard: Mailman
  • ispconfig_install_mode: Setzen Sie den Modus, den Sie möchten. Wenn Sie es einfach regelmäßig installieren wollen, wird empfohlen, die Standardeinstellung zu verwenden.

    • Standard: standard
  • ispconfig_hostname: Wird für Ihren FQDN verwendet, wo Sie Ihren Seitennamen festlegen können.

  • ispconfig_mysql_hostname: Standort, an dem die MySQL-Datenbank läuft. Wenn Sie nur diese Rolle verwenden, ist der Standard ausreichend.

    • Standard: localhost
  • ispconfig_mysql_root_user: Name des Root-Benutzers. In den meisten Fällen wird dies einfach 'root' sein. Wenn Sie Ihr ISPConfig anpassen, setzen Sie ihn nach Ihren Wünschen. Es wird auch den Namen des Root-Benutzers in der MariaDB-Einrichtung festlegen.

    • Standard: root
  • ispconfig_mysql_database: Datenbank, die in der MariaDB-Einrichtung initialisiert wird und von ISPConfig verwendet wird.

    • Standard: dbISPConfig
  • ispconfig_mysql_ispconfig_user: Benutzer, der innerhalb der MySQL-Datenbank erstellt wird.

    • Standard: ISPConfig
  • ispconfig_mysql_port: Port, der von MariaDB verwendet wird, er wird auch für die Datenbankinitialisierung verwendet.

    • Standard: 3306
  • ispconfig_mysql_charset: Zeichensatz der Datenbank.

    • Standard: utf8
  • ispconfig_http_server: Legt den HTTP-Server fest, der hinter der ISPConfig-Seite läuft.

    • Standard: apache
  • ispconfig_ispconfig_port: Port für die Website.

    • Standard: 8080
  • ispconfig_ispconfig_use_ssl: Verwenden Sie SSL, um eine Verbindung zu ISPConfig herzustellen.

    • Standard: y
  • ispconfig_join_multiserver_setup: Schließt mehrere Server ein.

    • Standard: n
  • ispconfig_mysql_master_hostname: Standort der Master-MySQL-Datenbank. In den meisten Fällen ist 'localhost' ausreichend.

    • Standard: localhost
  • ispconfig_configure_mail: Mailman-Einrichtung für ISPConfig.

    • Standard: y
  • ispconfig_configure_jailkit: Jailkit-Einrichtung für ISPConfig.

    • Standard: y
  • ispconfig_configure_ftp: PureFTP-Einrichtung für ISPConfig.

    • Standard: y
  • ispconfig_configure_dns: DNS-Einrichtung für ISPConfig.

    • Standard: y
  • ispconfig_configure_nginx: NGINX-Einrichtung für ISPConfig.

    • Standard: n
  • ispconfig_configure_apache: Apache-Einrichtung für ISPConfig.

    • Standard: y
  • ispconfig_configure_firewall: Firewall-Einrichtung für ISPConfig.

    • Standard: y
  • ispconfig_install_ispconfig_web_interface: Weboberfläche für ISPConfig einrichten.

    • Standard: y
  • ispconfig_do_backup: Backup-Einrichtung für ISPConfig.

    • Standard: yes
  • ispconfig_mysql_master_database: Datenbank, die die Informationen für ISPConfig enthält.

    • Standard: dbISPConfig
  • ispconfig_reconfigure_permissions_in_master_database: Setzt die Berechtigungen, die für ISPConfig in der Datenbank benötigt werden.

    • Standard: no
  • ispconfig_reconfigure_services: Konfiguriert alle Dienste neu.

    • Standard: yes
  • ispconfig_create_new_ispconfig_ssl_cert: Erstellt ein neues Zertifikat (wird nicht benötigt).

    • Standard: no
  • ispconfig_reconfigure_crontab: Konfiguriert Cronjob.

    • Standard: yes
  • ispconfig_configure_webserver: Konfiguriert den Webserver.

  • quota_mounts: Liste von Verzeichnissen, die von der Quota überwacht werden.

    • Standard: /

Quota

Die Liste quota_mounts in defaults/main.yml enthält alle Verzeichnisse, die in der fstab-Datei bearbeitet werden, um die Quota auf ihnen zu aktivieren. Wenn die Liste leer ist, wird die Quota nicht aktiviert. Sie können diese Liste überschreiben, indem Sie die Quota-Variable im Playbook hinzufügen (siehe Abschnitt "Rollenvariablen"). Wenn der Kernel auf Ihrem Computer die Quota Module nicht enthält, müssen Sie die Liste leer lassen. Dies ist der Fall für AWS-Maschinen, die den linux-aws-Kernel verwenden.

Mehrere PHP-Versionen

Sie können mehrere PHP-Versionen in vars/main.yml angeben, die installiert werden sollen.

Beispiel-Spielbuch

Dies zeigt ein Beispiel, wie Sie Ihr Playbook konfigurieren könnten.

- role: inoxio.ispconfig3
  mail_admin_email: email@your-company.com
  mail_base_domain: your-company.com
  ispconfig_hostname: ispconfig.your-company.com
  roundcube_hostname: mail.your-company.de
 

Alles andere, was in den Rollenvariablen erwähnt wird, finden Sie in der defaults/main.yml.
Alle Einstellungen für die ISPConfig Rolle stammen aus der Konfigurationsdatei für die Apache2-Einrichtung. Siehe diesen Link für weitere Informationen. Beispielhafte Einstellungen finden Sie unter autoinstall.php für ISPConfig.

Starten als VM und Tests mit Molecule durchführen

Hier ist alles von https://Molecule.readthedocs.io/en/latest/. Es ist praktisch, alles an einem Ort zu haben.

Das hilft Ihnen, Ansible-Rollen auf einer echten virtuellen Maschine auszuführen, ohne sich um den Zustand der VM zu kümmern.

Um die Rolle zu starten und die Testumgebung auszuführen, benötigen Sie Molecule. Im Folgenden wird erklärt, wie Sie alles einrichten und die Tests durchführen.

  1. Installieren Sie virtualenv
    • Installieren Sie virtualenv sudo apt install virtualenv
    • Erstellen Sie virtualenv in Ihrem Ordner virtualenv --no-site-packages .venv Dies enthält alle installierten Pakete. Dies ist der sauberste Weg, um Ihr System vor Paketmüll zu schützen.
  2. Starten Sie virtualenv
    • Sie müssen diesen Befehl jedes Mal ausführen, wenn Sie Ihre Konsole neu starten oder eine neue Sitzung betreten.
    • source .venv/bin/activate
  3. Installieren Sie das Molecule-Paket
    • pip3 install Molecule ansible
    • Sie müssen die Python-API für Ihren Treiber installieren, den Sie verwenden werden. In diesem Fall dieser Rolle wird es Vagrant sein.
    • Führen Sie diesen Befehl aus, wenn Sie (.venv) am Anfang Ihrer Konsolenzeile sehen.
    • pip install python-vagrant

Dies sind die Anforderungen, die Sie erfüllen müssen, bevor Sie Molecule starten. Im Folgenden wird erklärt, wie Sie Rollen für Tests einrichten können.

Test durchführen

Tests durchzuführen ist ganz einfach, gehen Sie einfach in Ihre venv wie in Schritt 2 oben und führen Sie aus:

Molecule test

Dies richtet automatisch Ihren Treiber (Docker oder Vagrant in den meisten Fällen) ein und führt verschiedene Testszenarien wie Idempotenztests oder Ihre eigenen geschriebenen Tests durch, die alle möglichen Dinge prüfen können.

Neue Rolle

Molecule init role -r new-role -d vagrant

Dies wird eine neue Vagrant-Rolle mit dem Namen new-role initialisieren und es wird die Standardkonfiguration für Vagrant enthalten. Als Alternative können Sie Ihren Treiber auf Docker oder andere unterstützte Methoden der Virtualisierung einstellen.

Molecule aktualisieren

Hinweis: Molecule ist relativ neu, daher wird es Updates geben. Es wird empfohlen, dies von Zeit zu Zeit auszuführen.

pip install --upgrade Molecule

Beispiel Molecule und Playbook

Hier sehen Sie ein Beispiel, wie die Molecule.yml und das Playbook.yml für dieses Testszenario strukturiert sind.

Molecule.yml

---
dependency:
  name: galaxy
driver:
  name: vagrant
  provider:
    name: virtualbox
lint:
  name: yamllint
platforms:
  - name: instance
    box: ubuntu/bionic64
    instance_raw_config_args:
      - "vm.hostname = 'web.my.net'"
    memory: 4096
provisioner:
  name: ansible
  lint:
    name: ansible-lint
    enabled: false
scenario:
  name: default
  test_sequence:
    # - lint
    - destroy
    # - dependency
    - syntax
    - create
    - prepare
    - converge
    - idempotence
    # - side_effect
    - verify
    - destroy
verifier:
  name: testinfra
  lint:
    name: flake8
    

Hier sehen Sie das verwendete Molecule.yml für dieses Projekt. Sie können den verwendeten Treiber und seine Einstellungen, wie z.B. den Arbeitsspeicher, sehen. Wichtiger Hinweis: Es war erforderlich, für eine Aufgabe in der Rolle den Hostnamen festzulegen, also sehen Sie, dass er mit Hilfe von instance_raw_config_args festgelegt wurde. Sie können verschiedene Boxen direkt von Vagrant verwenden oder sie von einem Link laden. Für diese Art von Änderungen konsultieren Sie bitte die Dokumentation von Molecule.

Wenn Sie sich das Playbook.yml ansehen, werden Sie sehen, dass es dem normalen Rollenaufruf ähnelt, aber den Namen. Siehe das vollständige Beispiel unten im Beispiel-Playbook.

Playbook.yml

---
- name: Converge
  hosts: all
  roles:
     - role: inoxio.ispconfig3
         ***
         ***

Molecule

Dieser Abschnitt enthält eine Zusammenfassung über Molecule, weil dies die erste Einrichtung war.

Der erste Lauf mit Molecule war mit Docker als Treiber. Mit dieser Methode gab es sehr schnell Hürden. Aufgrund der Natur von Docker und der Komplexität dieser Rolle. Das begann mit Diensten, die nicht in einem Container geladen sind, und ging weiter zu PID, die unterschiedlich sind. Also kamen wir zu dem Schluss, dass es unangenehm ist, Ihren Code an Ihr Testframework anzupassen.

Das ließ die Wahl, Vagrant als Treiber zu verwenden. Dies wird uns mit dem Problem der fehlenden virtuellen Umgebung helfen und alles reibungslos ausführen.

Dieses Setup lief ohne größere Probleme und testete alle gewünschten Schlüsselbereiche.

Wenn Sie Molecule in Ihre Rolle einfügen möchten, folgen Sie bitte dieser kleinen Liste:

  • Stellen Sie sicher, dass Sie mit einer leeren Basis beginnen und Ihre Rolle in Molecule erstellen, damit Sie sie von Zeit zu Zeit testen können.
  • Wenn Sie Docker verwenden möchten, stellen Sie sicher, dass Ihre Rolle nicht zu komplex ist und Sie Ihre Rolle nicht an Docker anpassen müssen.
Installieren
ansible-galaxy install inoxio.ispconfig3
Lizenz
apache-2.0
Downloads
200