DSC für Linux-Resource „nxFile“
Die Ressource nxFile in PowerShell DSC (Desired State Configuration) bietet einen Mechanismus zum Verwalten von Dateien und Verzeichnissen auf einem Linux-Knoten.
Syntax
nxFile <string> #ResourceName
{
DestinationPath = <string>
[ SourcePath = <string> ]
[ Type = <string> { directory | file | link } ]
[ Contents = <string> ]
[ Checksum = <string> { ctime | mtime | md5 } ]
[ Recurse = <bool> ]
[ Force = <bool> ]
[ Links = <string> { follow | manage | ignore } ]
[ Group = <string> ]
[ Mode = <string> ]
[ Owner = <string> ]
[ DependsOn = <string[]> ]
[ Ensure = <string> { Absent | Present } ]
}
Eigenschaften
Eigenschaft | BESCHREIBUNG |
---|---|
DestinationPath | Gibt den Speicherort an, an dem Sie den Zustand einer Datei oder eines Verzeichnisses sicherstellen möchten. |
SourcePath | Gibt den Pfad an, aus dem die Datei- oder Ordnerressource kopiert werden soll. Dieser Pfad kann ein lokaler Pfad oder eine URL des Typs http/https/ftp sein. Remote-URLs des Typs http/https/ftp werden nur unterstützt, wenn der Wert der Type-Eigenschaft file ist. |
type | Gibt an, ob die zu konfigurierende Ressource ein Verzeichnis oder eine Datei ist. Legen Sie diese Eigenschaft auf directory fest, um anzugeben, dass die Ressource ein Verzeichnis ist. Legen Sie sie auf file fest, um anzugeben, dass die Ressource eine Datei ist. Der Standardwert ist file. |
Inhalte | Gibt den Inhalt einer Datei an, z. B. eine bestimmte Zeichenfolge. |
Checksum | Definiert den zu verwendenden Typ, wenn bestimmt wird, ob zwei Dateien identisch sind. Wenn Checksum nicht angegeben ist, wird nur der Datei- oder Verzeichnisnamen für den Vergleich verwendet. Werte sind: ctime, mtime oder md5. |
Recurse | Gibt an, ob Unterverzeichnisse enthalten sind. Legen Sie diese Eigenschaft auf $true fest, um anzugeben, dass Unterverzeichnisse enthalten sein sollen. Der Standardwert lautet $false . Diese Eigenschaft ist nur gültig, wenn die Type-Eigenschaft auf directory festgelegt ist. |
Force | Bestimmte Dateioperationen (z. B. das Überschreiben einer Datei oder Löschen eines Verzeichnisses, das nicht leer ist), führen zu einem Fehler. Bei Verwenden der Force-Eigenschaft werden solche Fehler überschrieben. Standardwert: $false . |
Links | Gibt das gewünschte Verhalten für symbolische Verknüpfungen an. Legen Sie diese Eigenschaft auf follow fest, um symbolischen Verknüpfungen zu folgen und Aktionen auf das Ziel der Verknüpfung anzuwenden. Ein Beispiel ist das Kopieren der Datei anstatt der Verknüpfung. Legen Sie diese Eigenschaft auf manage fest, um eine Aktion auf die Verknüpfung anzuwenden. Ein Beispiel ist das Kopieren der Verknüpfung selbst. Legen Sie diese Eigenschaft auf ignore fest, um symbolische Verknüpfungen zu ignorieren. |
Group | Der Name der Gruppe, die über Zugriffsberechtigungen auf die Datei oder das Verzeichnis besitzen soll. |
Mode | Gibt die gewünschten Berechtigungen für die Ressource in der Oktal- oder symbolischen Schreibweise an. Beispiele hierfür sind 777 oder rwxrwxrwx. Geben Sie bei Verwenden der symbolischen Schreibweise nicht das erste Zeichen an, welches Verzeichnis oder Datei angibt. |
Besitzer | Der Name der Gruppe, die die Datei oder das Verzeichnis besitzen soll. |
Allgemeine Eigenschaften
Eigenschaft | BESCHREIBUNG |
---|---|
DependsOn | Gibt an, dass die Konfiguration einer anderen Ressource ausgeführt werden muss, bevor diese Ressource konfiguriert wird. Wenn beispielsweise die ID des Skriptblocks mit der Ressourcenkonfiguration, den Sie zuerst ausführen möchten, „ResourceName“ und dessen Typ „ResourceType“ ist, lautet die Syntax für das Verwenden dieser Eigenschaft DependsOn = "[ResourceType]ResourceName" . |
Ensure | Bestimmt, ob das Vorhandensein der Datei geprüft werden soll. Legen Sie diese Eigenschaft auf Present fest, um sicherzustellen, dass die Datei vorhanden ist. Legen Sie sie auf Absent fest, um sicherzustellen, dass die Datei nicht vorhanden ist. Der Standardwert ist Present. |
Zusätzliche Informationen
Linux und Windows verwenden in Textdateien standardmäßig unterschiedliche Zeilenumbruchzeichen. Diese kann zu unerwarteten Ergebnissen führen, wenn einige Dateien mit nxFile auf einem Linux-Computer konfiguriert werden. Es gibt mehrere Möglichkeiten, den Inhalt einer Linux-Datei zu verwalten, um durch unerwartete Zeilenumbruchzeichen verursachte Probleme zu vermeiden:
Kopieren der Datei aus einer Remotequelle (HTTP, HTTPS oder FTP)
Erstellen Sie eine Datei unter Linux mit dem gewünschten Inhalt, und stellen Sie sie auf einem Web- oder FTP-Server bereit, auf den die Knoten zugreifen können, die Sie konfigurieren. Legen Sie die SourcePath-Eigenschaft in der Ressource nxFile auf die Web- oder FTP-URL zur Datei fest.
Import-DSCResource -ModuleName nx Node $Node { nxFile resolvConf { SourcePath = "http://10.185.85.11/conf/resolv.conf" DestinationPath = "/etc/resolv.conf" Mode = "644" Type = "file" } }
Lesen Sie den Inhalt der Datei im PowerShell-Skript mit Get-Content, nachdem Sie die $OFS-Eigenschaft auf das Verwenden des Linux-Zeilenumbruchzeichens festgelegt haben.
Import-DSCResource -ModuleName nx Node $Node { $OFS = "`n" $Contents = Get-Content C:\temp\resolv.conf nxFile resolvConf { DestinationPath = "/etc/resolv.conf" Mode = "644" Type = "file" Contents = "$Contents" } }
Verwenden Sie eine PowerShell-Funktion, um Windows-Zeilenumbrüche durch Linux-Zeilenumbruchzeichen zu ersetzen.
Function LinuxString($inputStr){ $outputStr = $inputStr.Replace("`r`n","`n") $outputStr += "`n" Return $outputStr } Import-DSCResource -ModuleName nx Node $Node { $Contents = @' search contoso.com domain contoso.com nameserver 10.185.85.11 '@ $Contents = LinuxString $Contents nxFile resolvConf { DestinationPath = "/etc/resolv.conf" Mode = "644" Type = "file" Contents = $Contents } }
Beispiel
Im folgende Beispiel wird sichergestellt, dass das Verzeichnis /opt/mydir
vorhanden ist und dass eine Datei mit dem angegebenen Inhalt in diesem Verzeichnis vorhanden ist.
Import-DSCResource -ModuleName nx
Node $node {
nxFile DirectoryExample
{
Ensure = "Present"
DestinationPath = "/opt/mydir"
Type = "Directory"
}
nxFile FileExample
{
Ensure = "Present"
Destinationpath = "/opt/mydir/myfile"
Contents=@"
#!/bin/bash`necho "hello world"`n
"@
Mode = "755"
DependsOn = "[nxFile]DirectoryExample"
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für