Recurso nxFile de DSC para LinuxDSC for Linux nxFile Resource

El recurso nxFile de Desired State Configuration (DSC) de PowerShell ofrece un mecanismo para administrar archivos y directorios en un nodo de Linux.The nxFile resource in PowerShell Desired State Configuration (DSC) provides a mechanism to manage files and directories on a Linux node.

SintaxisSyntax

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

PropiedadesProperties

PropiedadProperty DescripciónDescription
DestinationPathDestinationPath Especifica la ubicación donde desea garantizar el estado de un archivo o directorio.Specifies the location where you want to ensure the state for a file or directory.
SourcePathSourcePath Especifica la ruta de acceso de la que se copiará el recurso de archivo o carpeta.Specifies the path from which to copy the file or folder resource. Esta ruta de acceso puede ser una ruta de acceso local o una dirección URL http/https/ftp.This path may be a local path, or an http/https/ftp URL. Las direcciones URL remotas http/https/ftp solo se admiten cuando el valor de la propiedad Type es File .Remote http/https/ftp URLs are only supported when the value of the Type property is file .
TipoType Especifica si el recurso que se está configurando es un directorio o un archivo.Specifies whether the resource being configured is a directory or a file. Establezca esta propiedad en Directory para indicar que el recurso es un directorio.Set this property to directory to indicate that the resource is a directory. Establézcala en File para indicar que el recurso es un archivo.Set it to file to indicate that the resource is a file. El valor predeterminado es File .The default value is file .
ContenidoContents Especifica el contenido de un archivo, como una cadena determinada.Specifies the contents of a file, such as a particular string.
Suma de comprobaciónChecksum Define el tipo que se usará cuando se determine si dos archivos son iguales.Defines the type to use when determining whether two files are the same. Si no se especifica Checksum , solo se usa el nombre del archivo o directorio para la comparación.If Checksum is not specified, only the file or directory name is used for comparison. Los valores son: ctime , mtime o md5 .Values are: ctime , mtime , or md5 .
RecurseRecurse Indica si se incluyen los subdirectorios.Indicates if subdirectories are included. Establezca esta propiedad en $true para indicar que quiere que los subdirectorios se incluyan.Set this property to $true to indicate that you want subdirectories to be included. El valor predeterminado es $false.The default is $false. Esta propiedad solo es válida cuando la propiedad Type está establecida en Directory .This property is only valid when the Type property is set to directory .
ForceForce Determinadas operaciones de archivos (por ejemplo, sobrescribir un archivo o eliminar un directorio que no está vacío) provocarán un error.Certain file operations (such as overwriting a file or deleting a directory that is not empty) will result in an error. Si se usa la propiedad Force , se invalidan estos errores.Using the Force property overrides such errors. El valor predeterminado es $false.The default value is $false.
VínculosLinks Especifica el comportamiento deseado de los vínculos simbólicos.Specifies the desired behavior for symbolic links. Establezca esta propiedad en follow para seguir los vínculos simbólicos y actuar sobre el destino de los vínculos.Set this property to follow to follow symbolic links and act on the links target. Por ejemplo, para copiar el archivo en lugar del vínculo.For example, copy the file instead of the link. Establezca esta propiedad en manage para actuar sobre el vínculo.Set this property to manage to act on the link. Por ejemplo, para copiar el propio vínculo.For example, copy the link itself. Establezca esta propiedad en ignore para omitir los vínculos simbólicos.Set this property to ignore to ignore symbolic links.
GrupoGroup El nombre del elemento Group con permisos para el archivo o directorio.The name of the Group to have permissions to the file or directory.
ModeMode Especifica los permisos deseados para el recurso, en notación octal o simbólica.Specifies the desired permissions for the resource, in octal or symbolic notation. Por ejemplo, 777 o rwxrwxrwx .For example, 777 or rwxrwxrwx . Si utiliza la notación simbólica, no especifique el primer carácter que indica el directorio o archivo.If using symbolic notation, do not provide the first character which indicates directory or file.
PropietarioOwner El nombre del elemento Group propietario del archivo o directorio.The name of the group to own the file or directory.

Propiedades comunesCommon properties

PropiedadProperty DescripciónDescription
DependsOnDependsOn Indica que la configuración de otro recurso debe ejecutarse antes de que se configure este recurso.Indicates that the configuration of another resource must run before this resource is configured. Por ejemplo, si el elemento ID del bloque del script de configuración del recurso que quiere ejecutar primero es ResourceName y su tipo es ResourceType, la sintaxis para usar esta propiedad es 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 si se debe comprobar si existe el archivo.Determines whether to check if the file exists. Establezca esta propiedad en Present para asegurarse de que el archivo exista.Set this property to Present to ensure the file exists. Establézcala en Absent para asegurarse de que el archivo no exista.Set it to Absent to ensure the file does not exist. El valor predeterminado es Present .The default value is Present .

Información adicionalAdditional Information

Linux y Windows usan distintos caracteres de salto de línea en los archivos de texto de forma predeterminada, y esto puede provocar resultados inesperados cuando se configuran algunos archivos en un equipo 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 . Hay varias maneras de administrar el contenido de un archivo de Linux a la vez que se evitan los problemas provocados por los caracteres de salto de línea inesperados:There are multiple ways to manage the content of a Linux file while avoiding issues caused by unexpected line break characters:

  1. Copie el archivo desde un origen remoto (http, https o FTP)Copy the file from a remote source (http, https, or ftp)

    Realice una copia intermedia en un servidor web o FTP accesible para los nodos que va a configurar.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. Defina la propiedad SourcePath del recurso nxFile con la dirección URL de la web o el ftp para el archivo.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. lea el contenido del archivo del script de PowerShell con Get-Content tras establecer la propiedad $OFS que utilizará el carácter de salto de línea de 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. use una función de PowerShell para reemplazar los saltos de línea de Windows por caracteres de salto de línea de 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
       }
    }
    

EjemploExample

El ejemplo siguiente se asegura de que el directorio /opt/mydir exista y de que un archivo con el contenido especificado exista en este directorio.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"
    }
}