Risorsa nxFile DSC per LinuxDSC for Linux nxFile Resource

La risorsa nxFile in PowerShell DSC (Desired State Configuration) fornisce un meccanismo per gestire file e directory in un nodo Linux.The nxFile resource in PowerShell Desired State Configuration (DSC) provides a mechanism to manage files and directories on a Linux node.

SintassiSyntax

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 }  ]
}

ProprietàProperties

ProprietàProperty DescrizioneDescription
DestinationPathDestinationPath Indica il percorso in cui si vuole specificare lo stato di un file o una directory.Specifies the location where you want to ensure the state for a file or directory.
SourcePathSourcePath Specifica il percorso da cui copiare la risorsa file o cartella.Specifies the path from which to copy the file or folder resource. Questo percorso può essere un percorso locale o un URL http/https/ftp.This path may be a local path, or an http/https/ftp URL. Gli URL http/https/ftp remoti sono supportati solo quando il valore della proprietà Type è file .Remote http/https/ftp URLs are only supported when the value of the Type property is file .
TypeType Specifica se la risorsa configurata è una directory o un file.Specifies whether the resource being configured is a directory or a file. Impostare questa proprietà su directory per indicare che la risorsa è una directory.Set this property to directory to indicate that the resource is a directory. Impostarla su file per indicare che la risorsa è un file.Set it to file to indicate that the resource is a file. Il valore predefinito è file .The default value is file .
SommarioContents Specifica il contenuto di un file, ad esempio una determinata stringa.Specifies the contents of a file, such as a particular string.
ChecksumChecksum Definisce il tipo da usare per determinare se due file sono uguali.Defines the type to use when determining whether two files are the same. Se la proprietà Checksum non è specificata, per il confronto viene usato solo il nome del file o della directory.If Checksum is not specified, only the file or directory name is used for comparison. I valori sono: ctime , mtime o md5 .Values are: ctime , mtime , or md5 .
RecurseRecurse Indica se le sottodirectory sono incluse.Indicates if subdirectories are included. Impostare questa proprietà su $true per indicare che le sottodirectory devono essere incluse.Set this property to $true to indicate that you want subdirectories to be included. Il valore predefinito è $false.The default is $false. Questa proprietà è valida solo quando la proprietà Type è impostata su directory .This property is only valid when the Type property is set to directory .
ForceForce Determinate operazioni sui file, ad esempio quando si sovrascrive un file o si elimina una directory non vuota, generano un errore.Certain file operations (such as overwriting a file or deleting a directory that is not empty) will result in an error. Usando la proprietà Force , tali errori vengono ignorati.Using the Force property overrides such errors. Il valore predefinito è $false.The default value is $false.
CollegamentiLinks Specifica il comportamento desiderato per i collegamenti simbolici.Specifies the desired behavior for symbolic links. Impostare questa proprietà su follow per seguire i collegamenti simbolici e agire sulla destinazione dei collegamenti.Set this property to follow to follow symbolic links and act on the links target. Ad esempio, copiare il file invece del collegamento.For example, copy the file instead of the link. Impostare questa proprietà su manage per agire sul collegamento.Set this property to manage to act on the link. Ad esempio, copiare il collegamento stesso.For example, copy the link itself. Impostare questa proprietà su ignore per ignorare i collegamenti simbolici.Set this property to ignore to ignore symbolic links.
GruppoGroup Nome del Group che avrà le autorizzazioni per il file o la directory.The name of the Group to have permissions to the file or directory.
ModeMode Specifica le autorizzazioni desiderate per la risorsa, in notazione ottale o simbolicaSpecifies the desired permissions for the resource, in octal or symbolic notation. Ad esempio, 777 o rwxrwxrwx .For example, 777 or rwxrwxrwx . Se si usa la notazione simbolica, non fornire il primo carattere che indica una directory o un file.If using symbolic notation, do not provide the first character which indicates directory or file.
ProprietarioOwner Nome del gruppo proprietario del file o della directory.The name of the group to own the file or directory.

Proprietà comuniCommon properties

ProprietàProperty DescrizioneDescription
DependsOnDependsOn Indica che prima di configurare la risorsa è necessario eseguire la configurazione di un'altra risorsa.Indicates that the configuration of another resource must run before this resource is configured. Ad esempio, se il valore di ID del blocco script di configurazione della risorsa che si vuole eseguire per primo è ResourceName e il tipo è ResourceType, la sintassi per usare questa proprietà è DependsOn = "[ResourceType]ResourceName".For example, if the ID of the resource configuration script block that you want to run first is ResourceName and its type is ResourceType, the syntax for using this property is DependsOn = "[ResourceType]ResourceName".
EnsureEnsure Determina se verificare l'esistenza del file.Determines whether to check if the file exists. Impostare questa proprietà su Present per assicurarsi che il file esista.Set this property to Present to ensure the file exists. Impostarla su Absent per assicurarsi che il file non esista.Set it to Absent to ensure the file does not exist. Il valore predefinito è Present .The default value is Present .

Informazioni aggiuntiveAdditional Information

Linux e Windows usano per impostazione predefinita caratteri di interruzione di riga diversi nei file di testo e questo può causare risultati imprevisti quando si configurano alcuni file in un computer Linux con nxFile .Linux and Windows use different line break characters in text files by default, and this can cause unexpected results when configuring some files on a Linux computer with nxFile . Ci sono diversi modi per gestire il contenuto di un file di Linux evitando i problemi causati da caratteri di interruzione di riga imprevisti:There are multiple ways to manage the content of a Linux file while avoiding issues caused by unexpected line break characters:

  1. Copiare il file da un'origine remota (HTTP, HTTPS o FTP)Copy the file from a remote source (http, https, or ftp)

    Creare un file in Linux con il contenuto desiderato e metterlo su un server Web o FTP accessibile dai nodi che verranno configurati.Create a file on Linux with the desired contents, and stage it on a web or ftp server accessible the node(s) you will configure. Definire la proprietà SourcePath nella risorsa nxFile con l'URL Web o FTP del file.Define the SourcePath property in the nxFile resource with the web or ftp URL to the file.

    Import-DSCResource -Module nx
    
    Node $Node
    {
       nxFile resolvConf
       {
          SourcePath = "http://10.185.85.11/conf/resolv.conf"
          DestinationPath = "/etc/resolv.conf"
          Mode = "644"
          Type = "file"
       }
    }
    
  2. leggere il contenuto del file nello script di PowerShell con Get-Content dopo avere impostato la proprietà $OFS per usare il carattere di interruzione di riga di Linux.Read the file contents in the PowerShell script with Get-Content after setting the $OFS property to use the Linux line-break character.

    Import-DSCResource -Module nx
    
    Node $Node
    {
       $OFS = "`n"
       $Contents = Get-Content C:\temp\resolv.conf
    
       nxFile resolvConf
       {
          DestinationPath = "/etc/resolv.conf"
          Mode = "644"
          Type = "file"
          Contents = "$Contents"
       }
    }
    
  3. usare una funzione di PowerShell per sostituire le interruzioni di riga di Windows con caratteri di interruzione di riga di Linux.Use a PowerShell function to replace Windows line breaks with Linux line-break characters.

    Function LinuxString($inputStr){
       $outputStr = $inputStr.Replace("`r`n","`n")
       $outputStr += "`n"
       Return $outputStr
    }
    
    Import-DSCResource -Module 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
       }
    }
    

EsempioExample

L'esempio seguente specifica che la directory /opt/mydir esiste e che nella directory è presente un file con il contenuto specificato.The following example ensures that the directory /opt/mydir exists, and that a file with specified contents exists this directory.

Import-DSCResource -Module 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"
    }
}