Adventtipp 12 – Sitecore Settings in Octopus pflegen

sitecore-advent12

Wie viele von Euch, benutzen auch wir für das Deployment von unseren .Net Lösungen das Tool Octopus Deploy. Somit reihen wir uns in die Konsumentenliste ein wie Microsoft, Cisco, HP, Philips oder Symantec.

Octopus Deploy ist zweifelsfrei ein sehr umfangreiches und flexibles Deployment-Werkzeug, dass seines Gleichen sucht. So habe auch ich schon ein Deployment über mein Mobiltelefon über dem Mittagessen im Restaurant ausgeführt. Mit dem Wissen, dass die Prozesse so gut und automatisiert sind, dass nichts schief gehen kann.

chrome_2016-12-08_13-47-45

Aus dem Resultat einer bei uns regelmässigen internen Sicherheitsüberprüfung (wir challengen uns gerne regelmässig), kam die Richtlinie auf, Passwörter gesondert von Code bzw. dem üblichen Versionierungssystem zu behandeln. Das Passwörter nicht in den kompilierbaren Source-Code gehören ist wohl keine Diskussion wert. Dennoch haben wir im Versionierungssystem (bei uns per default Git) hunderte von Sitecore-Configuration-Files, welche sehr viele Einstellungen beinhalten. So auch Passwörter wie beispielsweise das `MailServerPassword` für den E-Mail-Versendedienst in Sitecore.

Was machen wir jetzt mit solchen Einstellungen, wenn sie nicht mehr im Code-Repository gespeichert werden können? Zudem sind sie wohlmöglich umgebungsspezifisch. Also brauchen wir ein Tool, welches das managed: Octopus Deploy!

Nach einer Recherche im Internet (man ist ja selten alleine mit einem Problem) bin ich auf ein Script von Deren Hunziker gestossen. Leider erfüllte auch dieses nicht ganz die unseren Wünsche (trotzdem danke! Als Ideenanreiz war es super ;-)). Somit habe ich folgendes Powershell-Script für Octopus geschrieben:

Die erste Datei wäre bereits das fertige Import.Json für Octopus Deploy. Das zweite Script präsentiert das Powershell in einem leserlicheren Format.

Dieses Script liest nun alle Sitecore-Konfigurationen durch und ersetzt alle Settings-Values mit den Variables-Values von Octopus Deploy. Als gemeinsamer Nenner muss der Sitecore-Setting-Name mit dem Octopus-Variable-Name übereinstimmen.

Dies ermöglicht in unserem `MailServerPassword` Beispiel folgende Konfiguration in Octopus:

Basis Einstellung in Sitecore
Wie im Bild ersichtlich, modifizieren wir Sitecore und deren Einstellung nicht. Wir belassen den Wert im Sitecore.

devenv_2016-12-08_09-04-06

Variable in Octopus Deploy
In Octopus muss eine Variable erstellt werden mit gleichem „Name“-Key.

chrome_2016-12-08_08-59-55

Deployment Step Template Konfiguration
Letztendlich kann im Octopus über White- und Blacklisting definiert werden, welche Konfigurationsdateien überhaupt durchsucht werden müssen. Hierbei werden die `-Include` und `-Exclude`Funktionalität der `Get-Childitem` Funktion benutzt. Somit kann mit Include eine grosse Menge an Configs (z.B. *.config) definiert und in den Exlcudes diese Gesamtmenge wiederum spezifisch reduziert werden (z.B. Sitecore.*.config).

chrome_2016-12-07_20-34-27

Benefits
Vorteil dieser Lösung ist, dass die Konfiguration von Sitecore-Einstellungen nicht mehr im Code-Repository geschieht, sondern über ein Deployment Management Tool.

Bei der Kreierung eines Releases werden somit die Settings „revisionssicher“ gespeichert. Einstellungen werden vom Build Management entkoppelt und die Einstellungen können umgebungsspezifisch gepflegt werden. Und für sensitive Daten besitzt Octopus entsprechende Möglichkeit der Berechtigungssteuerung. So weiss nur der Environment-Owner wie das Passwort beispielsweise auf Production für den SMTP-Server ist. Früher war es jeder Entwickler für jede Umgebung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>