Was ist anders / besser an DSC als an „normalem“ Scripting?

8

Ich habe auf ITPro.tv ein Video über PowerShell Desired State Configuration DSC gesehen . Sie führen es ein und führen effektiv ein Skript aus. Dies war jedoch auch ihre erste (echte) Einführung in das Scripting, sodass ich den Unterschied zwischen DSC und regulärem Scripting nicht aufgegriffen habe. Ich habe schon einige regelmäßige Skripte geschrieben, und vielleicht hatten sie einfach kein so gutes Beispiel. Es schien, als könnte ein normales Skript eine Rolle / Funktion installieren und einige Dateien problemlos kopieren. Ich habe den Vorteil von DSC im Vergleich zu nur einem Skript nicht gesehen. Abgesehen davon, dass eine Maschine in der Lage ist, nach Änderungen zu suchen, die sie in der Praxis nur theoretisch nicht behandelt haben.

Was sind die Vorteile von DSC gegenüber herkömmlichen Skripten? zum Beispiel "Rolle installieren, Datei kopieren"?

  • Mit PowerShell können Sie eine Verbindung zu Remotecomputern herstellen und diese anweisen, Aufgaben zu erledigen. Dies gilt also nicht nur für DSC.
  • Mit DSC scheint es, als würden Sie eine Art Kompilierung durchführen, um eine Mof-Datei zu erstellen, und sie dann nach dem Skript über die Shell ausführen, was als unnötiger Schritt erscheint.
  • Die MSDN-Übersicht liest sich wie eine Übersicht über PowerShell, und ich sehe keine Unterscheidungsmerkmale.
YetAnotherRandomUser
quelle

Antworten:

7

Wie Sie gesagt haben, können Sie so ziemlich alles tun, was Sie mit DSC tun würden, mit direktem Powershell-Code.

Bei DSC dreht sich jedoch alles um das Konfigurationsmanagement.

Beim Konfigurationsmanagement geht es um Muster und Praktiken bei der Verwendung von Code und verschiedenen Systemen, um sicherzustellen, dass sich ein System in einem bestimmten Zustand befindet. Ref 1 2

Eine wichtige Sache beim Konfigurationsmanagement ist die Idempotenz. Das heißt, der Code, der Ihr System im Konfigurationsmanagementsystem beschreibt, wird regelmäßig überprüft und auf Ihrem System ausgeführt. Viele grundlegende Skripte sind nicht gut gestaltet und machen das Richtige, wenn Sie sie zum ersten Mal zum Konfigurieren eines Systems verwenden. Beim nächsten Mal treten jedoch Fehler auf, duplizieren Dinge und so weiter. Konfigurationsmanagementsysteme abstrahieren idealerweise einen großen Teil des Test- und Statusprüfcodes, den Sie manuell in ein Skript einfügen müssen, um Ihr Skript idempotent zu machen.

Eine weitere wichtige Sache bei DSC und vielen anderen Konfigurationsmanagementsystemen besteht darin, wiederverwendbare Ressourcen bereitzustellen , die tatsächlich die Arbeit erledigen, die mit jedem und jeder auf der Welt geteilt werden kann. Auf diese Weise sollte Ihre eigentliche "Konfiguration" nur die wenigen spezifischen Details sein, die für Ihre Umgebung spezifisch sind. Dies bedeutet auch, dass Sie viel weniger Code schreiben müssen, da Sie Dinge wiederverwenden können, die von vielen anderen Personen verwendet und überprüft wurden.

Ich habe oben einige Links eingefügt, aber es gibt viele gute Websites im Internet, die sich mit der Theorie der Konfigurationsmanagementsysteme befassen. Die allgemeine Theorie gilt für alle Konfigurationsmanagementsysteme (Marionette, Koch, DSC, Ansible usw.). Es lohnt sich auf jeden Fall, sie zu lernen und in den meisten Umgebungen zu verwenden.

Zoredache
quelle
1

Ich schlage vor, Sie werfen einen Blick auf https://docs.microsoft.com/en-us/powershell/dsc/dscforengineers#i-have-powershell-why-do-i-need-desired-state-configuration .

Ich habe Devops als C # -Projektleiter gemacht, seit es so heißt. Ich habe Dutzende dieser Skripts vom Typ "Eine Freigabe einrichten", "App in IIS erstellen" und "Überprüfen, ob IIS Rewrite installiert ist" geschrieben. Ich werde normalerweise von jemandem gebeten, dies zu tun. Er denkt: "Es ist nur eine Codezeile, um X auszuführen." Aber was ist, wenn das Ding schon existiert? Was ist, wenn die Schritte 1,3 bereits vorhanden sind, 2,4 jedoch nicht vorhanden sind oder Schritt 2 (beispielsweise ein IIS-App-Pool) nicht genau wie beim letzten Mal konfiguriert ist?

Ja, bei DSC müssen Sie jeden "Teil" des Skripts benennen. Was zunächst langweilig erscheint. Wenn Sie es jedoch nicht benennen, können die DSC-Engine und die Anbieter Ihnen nicht sagen, welcher Teil des Skripts zu lange dauert oder welcher Teil des Skripts fehlschlägt.

Wenn Sie Ordner, IIS, App-Bereitstellung oder Windows-Funktionen ausführen, empfehle ich Ihnen dringend, einige Tage in das Erlernen von DSC zu investieren.

Yzorg
quelle