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
: Systemsprachemailing_list_name
: Setzt die Mailman-Liste. Es wird empfohlen, sie auf Mailman festzulegen (siehe Beispiel-Playbook).- Standard:
Mailman
- Standard:
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
- 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
- Standard:
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
- Standard:
ispconfig_mysql_database
: Datenbank, die in der MariaDB-Einrichtung initialisiert wird und von ISPConfig verwendet wird.- Standard:
dbISPConfig
- Standard:
ispconfig_mysql_ispconfig_user
: Benutzer, der innerhalb der MySQL-Datenbank erstellt wird.- Standard:
ISPConfig
- Standard:
ispconfig_mysql_port
: Port, der von MariaDB verwendet wird, er wird auch für die Datenbankinitialisierung verwendet.- Standard:
3306
- Standard:
ispconfig_mysql_charset
: Zeichensatz der Datenbank.- Standard:
utf8
- Standard:
ispconfig_http_server
: Legt den HTTP-Server fest, der hinter der ISPConfig-Seite läuft.- Standard:
apache
- Standard:
ispconfig_ispconfig_port
: Port für die Website.- Standard:
8080
- Standard:
ispconfig_ispconfig_use_ssl
: Verwenden Sie SSL, um eine Verbindung zu ISPConfig herzustellen.- Standard:
y
- Standard:
ispconfig_join_multiserver_setup
: Schließt mehrere Server ein.- Standard:
n
- Standard:
ispconfig_mysql_master_hostname
: Standort der Master-MySQL-Datenbank. In den meisten Fällen ist 'localhost' ausreichend.- Standard:
localhost
- Standard:
ispconfig_configure_mail
: Mailman-Einrichtung für ISPConfig.- Standard:
y
- Standard:
ispconfig_configure_jailkit
: Jailkit-Einrichtung für ISPConfig.- Standard:
y
- Standard:
ispconfig_configure_ftp
: PureFTP-Einrichtung für ISPConfig.- Standard:
y
- Standard:
ispconfig_configure_dns
: DNS-Einrichtung für ISPConfig.- Standard:
y
- Standard:
ispconfig_configure_nginx
: NGINX-Einrichtung für ISPConfig.- Standard:
n
- Standard:
ispconfig_configure_apache
: Apache-Einrichtung für ISPConfig.- Standard:
y
- Standard:
ispconfig_configure_firewall
: Firewall-Einrichtung für ISPConfig.- Standard:
y
- Standard:
ispconfig_install_ispconfig_web_interface
: Weboberfläche für ISPConfig einrichten.- Standard:
y
- Standard:
ispconfig_do_backup
: Backup-Einrichtung für ISPConfig.- Standard:
yes
- Standard:
ispconfig_mysql_master_database
: Datenbank, die die Informationen für ISPConfig enthält.- Standard:
dbISPConfig
- Standard:
ispconfig_reconfigure_permissions_in_master_database
: Setzt die Berechtigungen, die für ISPConfig in der Datenbank benötigt werden.- Standard:
no
- Standard:
ispconfig_reconfigure_services
: Konfiguriert alle Dienste neu.- Standard:
yes
- Standard:
ispconfig_create_new_ispconfig_ssl_cert
: Erstellt ein neues Zertifikat (wird nicht benötigt).- Standard:
no
- Standard:
ispconfig_reconfigure_crontab
: Konfiguriert Cronjob.- Standard:
yes
- Standard:
ispconfig_configure_webserver
: Konfiguriert den Webserver.quota_mounts
: Liste von Verzeichnissen, die von der Quota überwacht werden.- Standard:
/
- 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.
- 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.
- Installieren Sie virtualenv
- 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
- 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.
Installs and customizes ISPConfig 3 on Ubuntu Bionic
ansible-galaxy install inoxio.ispconfig3