Masterthese: Unterschied zwischen den Versionen

Aus Callooh Wiki
Zur Navigation springen Zur Suche springen
Zeile 40: Zeile 40:
* Scripts werden lokal (auf host, auf dem d4u läuft) ausgeführt!
* Scripts werden lokal (auf host, auf dem d4u läuft) ausgeführt!
  => einbauen dass via ssh oder schtasks etc.
  => einbauen dass via ssh oder schtasks etc.
  => alternativ: flag "run-remote" um anzuzeigen dass script remote ausgeführt werden soll
  => eventuell: flag "run-remote" um anzuzeigen dass script remote ausgeführt werden soll


== TODOs ==
== TODOs ==

Version vom 2. März 2014, 11:01 Uhr

TODO

  • UML Deploy Diagramm
  • Softwarebücher: Deploy, Installation
  • Recherche: Installability
  • Fowler Patterns: Deploy, Command Pattern
  • Anforderungen an Deployer

Externe Service

Ist eine externe Komponente in der Deploy-Liste nicht angeben und ist diese nicht als deployed gekennzeichnet (im letzten deploy) => Fehler

Ist die externe Komponente angeben, aber ohne version, erfolgt nur check ob deployed, sonst auch version.


Sematik von Deploy externer Komponenten: Check-Script oder Check-URL erfolgreich!

deploy ausgewählter componenten

wenn nicht in Deploy-Liste angegeben, erfolgt nur Check ob Komponente deployt ist (Version ist egal).

Soll auf bestimmte version geprüft werden, dann mit Version, ohne Redeploy angeben.

rollback

neue deployment entität, previous zeigt auf fehlgeschlagenes deployment. is_rollback auf true gesetzt. checks werden ausgesetzt.

Ideen

  • Version: welche Version deployt ist, lässt sich an der pom Datei herauslesen, die im Zuge der maven compile Phase in das META-INF Verzeichnis kopiert wird. Anhand der Version kann auch ermittelt werden, welche Daten-Migrations-Vorgänge ausgeführt werden müssen.
  • Config für Container muss auch Feld für args haben (z.b. bei Glassfish: -domain xy)
  • Config für Timeout bei deploy (dann gilt es als fehlgeschlagen), überschreibbar auf Applikations-Ebene
  • maven plugin: um z.b. via hudson mit mvn d4u:deploy deployen zu können
  • wenn application nicht in repository, sondern nur einzelne komponenten, muss mit versionsangaben der komponenten deployt werden können
  • Javadoc in Masterthese als Anhang!

Einschränkungen

  • Scripts werden lokal (auf host, auf dem d4u läuft) ausgeführt!
=> einbauen dass via ssh oder schtasks etc.
=> eventuell: flag "run-remote" um anzuzeigen dass script remote ausgeführt werden soll

TODOs

  • testen von deployment
  • testen von rollback
  • reparieren config-service (i.e. merge), inkl. rechte für stageManager
  • service für suche
  • service für get-status

Service Attribute (richtiger Begriff? TODO: recherchieren)

  • Abhängigkeiten: weiche, harte (i.e.: Version muss passen oder Komponente muss nur verfügbar sein)
  • Abhängigkeiten: müssen zur Laufzeit vorhanden sein, oder müssen bei Systemstart verfügbar sein
  • Soziale Aspekte: Akzeptanz (ad Tool Verwendung: z.b. EA ist allgemein bekannt, mehr Chancen dass ein modellbasierter Ansatz erfolgreich ist bei dessen Verwendung)


Begriffe

  • Node entspricht z.b unter Tomcat einem Context
  • Für Tomcat vermutlich eher nicht sinnvoll dass ein Job nur einen Server enthält, aber mehrere Nodes
  • Für GF eventuell sinnvoll: Cluster mit einem Artifact, einem Server, auf mehrere Kontexte verteilt
  • Daher ist Node-Name => Context-Name unter Tomcat, Applications-Name unter Glassfish
  • Für Tomcat wird daher das war-file in node-name + extension vom artifact umbenannt
  • Backups bei Tomcat daher für jeden context(=node) extra
  • Node-Name darf daher nicht unique sein, aber kombi node-name<->stage schon
  • für domains bei glassfish: für jede domain eigener server!
  • Server: Service-Name sowie start/stop script ist in RUN_CONTROL gespeichert

windows remote command exection

  • für powershell scripts
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
Invoke-Command -ComputerName 7-90 -ScriptBlock { start-process "C:\temp\test.bat" }
=> problem: powershell muss verfügbar sein und verwendet werden und richtig konfiguriert sein,

möglicher Fehler:

CategoryInfo          : Sicherheitsfehler: (:) [Invoke-Command], PSSecurityException
FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.InvokeCommandCommand

oder, wenn winrm nicht konfiguriert ist:

+ CategoryInfo          : OpenError: (7-90:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : CannotConnect,PSSessionStateBroken


  • sonst mit schtasks.exe
 schtasks.exe /Create /S 7-90 /SC Einmal /TR c:/temp/test.bat /TN test /ST 10:36
=> Problem: /TN taskname, bleibt auch nach ausführung bestehen. /ST muss angegeben werden
  • oder windows remote management
winrs -r:REMOTECOMPUTERNAME command to run
=> Problem: muss configuriert werden