syntro_gmbh.silverstripe
Ansible-Rolle: Silverstripe
Beschreibung
Silverstripe ist ein vielseitiges Open-Source-Framework für Websites. Diese Rolle installiert eine Silverstripe-Installation Ihrer Wahl auf einem LAMP-Server.
Wichtige Funktionen dieser Rolle:
- Minimale Anforderungen für die Bereitstellung -> überall einsetzen
- Versionsspeicherung -> schnell zurückrollen im Fehlerfall
- Bereitstellung ohne Ausfallzeiten -> ohne Unterbrechung einsetzen
- CI-fähig -> Tags angeben oder Branches aktuell halten
- Backup-freundlich -> Backup-Skripte vor dem Löschen und Erstellen ausführen
Bereitstellung ohne Ausfallzeiten
Standardmäßig führt diese Rolle die Bereitstellung ohne Ausfallzeiten durch. Das bedeutet, dass die Build- und Löschprozesse stattfinden, bevor der tatsächliche Code mit html/index.php
verlinkt wird. Dies hat Vorteile, da keine Benutzer vom Zugang zur Website ausgeschlossen werden, was Bereitstellungen in zeitkritischen Phasen ermöglicht. Silverstripe kann in den meisten Fällen auf diese Weise bereitgestellt werden, da die Datenbankstruktur weitgehend rückwärtskompatibel ist. Die einzigen Fälle, die zum Zeitpunkt des Schreibens dieses Readme zu Problemen führen könnten, sind:
- Entfernen von DataObjects
- Silverstripe entfernt die Tabelle nicht, sondern versieht sie mit dem Präfix
deprecated_
- Silverstripe entfernt die Tabelle nicht, sondern versieht sie mit dem Präfix
- Ändern von Enum-Werten
Diese Szenarien sind sehr spezifisch und sollten theoretisch nicht auftreten, da dies ein Zeichen für schlechte Planung auf Seiten des Entwicklers wäre.
Dennoch kann dies auch zu Problemen bei Datenbanksicherungen führen, da zusätzliche Maßnahmen ergriffen werden müssen, um konsistente Backups zu erhalten! Dies liegt in der Verantwortung des Nutzers dieser Rolle.
Installation
ansible-galaxy install syntro_gmbh.silverstripe
Anforderungen
- Composer
- Git
Abhängigkeiten
Keine, aber stellen Sie sicher, dass Composer und Git auf dem Host, auf den Sie bereitstellen, installiert sind.
Nutzung
Abgesehen von ein paar erforderlichen Variablen kann diese Rolle einfach für jedes Silverstripe-Projekt verwendet werden. Sehen Sie sich die Defaults Datei an, um eine Vorstellung davon zu bekommen, was Sie anpassen können.
Das Webroot und die generierten Dateien
Diese Rolle verwendet die folgende Verzeichnisstruktur, um Ihre Anwendung bereitzustellen:
{{ WorkingDir }}/
├── {{ current }}
│ ├── .htaccess
│ ├── index.php
│ ├── assets --> ../shared/assets
│ └── _resources --> ../releases/<current sha>/_resources
├── releases/
│ ├── <current sha>/
│ │ ├── .git
│ │ └── ...
│ └── <other sha>/
│ ├── .git
│ └── ...
├── shared/
│ └── assets/
└── logs/
Ihr Webroot sollte auf das Verzeichnis {{ WorkingDir }}/{{ current }}/
zeigen. Sie können diese Verzeichnisse über silverstripe_working_dir
und silverstripe_current_dir_name
konfigurieren.
Datenbank erstellen und aktualisieren sowie Backups ausführen
Um Silverstripe mit einer neuen Installation zum Laufen zu bringen, muss die Datenbank erstellt oder aktualisiert werden. Standardmäßig führt diese Rolle die Standard-Build-Aufgabe kombiniert mit dem Parameter flush=1
aus, bevor irgendwelche Dateien im Webroot aktualisiert werden.
Sie können weitere Befehle hinzufügen, aber vergessen Sie nicht, den Build-Befehl erneut hinzuzufügen, indem Sie silverstripe_provisioning_cmds
verwenden. Dies ist auch der Ort, um alle Backup-Befehle hinzuzufügen, die Sie möglicherweise benötigen. (Sie könnten unsere restic Rolle verwenden, um ein Backup-Tool zu installieren und die Skripte automatisch zu erstellen.) Wenn Sie diese Skripte vor dem Build-Schritt hinzufügen, haben Sie die aktuellste Version Ihrer Installation, falls Sie zurückrollen müssen.
Bereitstellung ohne Ausfallzeiten
Diese Rolle stellt Silverstripe ohne Ausfallzeiten bereit. Das bedeutet, dass die Build- und Löschprozesse stattfinden, bevor der tatsächliche Code mit index.php
verlinkt wird. Dies hat Vorteile, da keine Benutzer vom Zugang zur Website ausgeschlossen werden, was Bereitstellungen jederzeit möglich macht. Silverstripe kann in den meisten Fällen so bereitgestellt werden, da die Datenbankstruktur weitgehend rückwärtskompatibel ist. Die einzigen Fälle, in denen dies zum Zeitpunkt des Schreibens dieses Readme zu Problemen führen könnte, sind:
- Entfernen von DataObjects
- Silverstripe entfernt die Tabelle nicht, sondern versieht sie mit dem Präfix
deprecated_
- Silverstripe entfernt die Tabelle nicht, sondern versieht sie mit dem Präfix
- Ändern von Enum-Werten
Diese Szenarien sind sehr spezifisch und sollten theoretisch nicht auftreten, da dies ein Zeichen für schlechte Planung auf Seiten des Entwicklers wäre. Nichtsdestotrotz sollten Sie immer ein Backup der Datenbank erstellen, bevor Sie aktualisieren.
Rollenspezifische Variablen
Überprüfen Sie die Defaults-Datei, um eine Vorstellung davon zu bekommen, was Sie steuern können.
Minimales Beispiel-Playbook
- hosts: all
vars:
silverstripe_project_repository: https://github.com/silverstripe/demo.silverstripe.org
silverstripe_project_version: master
silverstripe_ss_database_name: silverstripe
silverstripe_ss_database_username: root
silverstripe_ss_database_password: root
roles:
- silverstripe
Autor
- Matthias Leutenegger
Lizenz
MIT
Copyright
(c) 2020, Syntro GmbH
ansible-galaxy install syntro_gmbh.silverstripe