Linux용 DSC nxFile 리소스DSC for Linux nxFile Resource

PowerShell DSC(필요한 상태 구성)의 nxFile 리소스에서는 Linux 노드 상의 파일 및 디렉터리를 관리하는 메커니즘을 제공합니다.The nxFile resource in PowerShell Desired State Configuration (DSC) provides a mechanism to manage files and directories on a Linux node.

구문Syntax

nxFile <string> #ResourceName
{
    DestinationPath = <string>
    [ SourcePath = <string> ]
    [ Ensure = <string> { Absent | Present }  ]
    [ Type = <string> { directory | file | link } ]
    [ Contents = <string> ]
    [ Checksum = <string> { ctime | mtime | md5 }  ]
    [ Recurse = <bool> ]
    [ Force = <bool> ]
    [ Links = <string> { follow | manage } ]
    [ Group = <string> ]
    [ Mode = <string> ]
    [ Owner = <string> ]
    [ DependsOn = <string[]> ]

}

속성Properties

속성Property 설명Description
DestinationPathDestinationPath 파일 또는 디렉터리에 대한 상태를 확인하려는 위치를 지정합니다.Specifies the location where you want to ensure the state for a file or directory.
SourcePathSourcePath 파일 또는 폴더 리소스를 복사해 올 소스 경로를 지정합니다.Specifies the path from which to copy the file or folder resource. 이 경로는 로컬 경로이거나 http/https/ftp URL일 수 있습니다.This path may be a local path, or an http/https/ftp URL. 원격 http/https/ftp URL은 Type 속성의 값이 file일 때에만 지원됩니다.Remote http/https/ftp URLs are only supported when the value of the Type property is file.
EnsureEnsure 해당 파일이 존재하는지를 확인할지 여부를 결정합니다.Determines whether to check if the file exists. 해당 파일이 존재하도록 하려면 이 속성을 "Present"으로 설정합니다.Set this property to "Present" to ensure the file exists. 해당 파일이 존재하지 않도록 하려면 이 속성을 "Absent"으로 설정합니다.Set it to "Absent" to ensure the file does not exist. 기본값은 "Present"입니다.The default value is "Present".
유형Type 구성되는 리소스가 디렉터리인지 아니면 파일인지를 지정합니다.Specifies whether the resource being configured is a directory or a file. 리소스가 디렉터리임을 나타내려면 이 속성을 "directory"로 설정합니다.Set this property to "directory" to indicate that the resource is a directory. 리소스가 파일을 나타내려면 이 속성을 "file"로 설정합니다.Set it to "file" to indicate that the resource is a file. 기본값은 "file"입니다.The default value is "file"
콘텐츠Contents 특정 문자열과 같이 파일의 내용을 지정합니다.Specifies the contents of a file, such as a particular string.
체크섬Checksum 두 파일이 동일한 것인지 결정할 때 사용할 형식을 정의합니다.Defines the type to use when determining whether two files are the same. Checksum을 지정하지 않은 경우 비교에 파일 또는 디렉터리 이름만 사용됩니다.If Checksum is not specified, only the file or directory name is used for comparison. 값은 "ctime", "mtime" 또는 "md5"입니다.Values are: "ctime", "mtime", or "md5".
RecurseRecurse 하위 디렉터리가 포함되어 있는지를 나타냅니다.Indicates if subdirectories are included. 하위 디렉터리가 포함되도록 하려면 이 속성을 $true로 설정합니다.Set this property to $true to indicate that you want subdirectories to be included. 기본값은 $false입니다.The default is $false. 참고: Type 속성이 directory로 설정되어 있을 때에만 이 속성이 유효합니다.Note: This property is only valid when the Type property is set to directory.
ForceForce 특정 파일 작업(예: 파일 덮어쓰기나 비어 있지 않은 디렉터리 삭제)을 수행하면 오류가 발생합니다.Certain file operations (such as overwriting a file or deleting a directory that is not empty) will result in an error. Force 속성을 사용하면 이러한 오류가 무시됩니다.Using the Force property overrides such errors. 기본값은 $false입니다.The default value is $false.
링크Links 바로 가기 링크에 대해 원하는 동작을 지정합니다.Specifies the desired behavior for symbolic links. 바로 가기 링크를 따르고 링크 대상에 대해 작업을 수행(예: 링크대신 파일 복사)하도록 하려면Set this property to "follow" to follow symbolic links and act on the links target (for example. 이 속성을 "follow"로 설정합니다.copy the file instead of the link). 링크에 대해 작업을 수행(예: 링크 자체를 복사)하도록 하려면Set this property to "manage" to act on the link (for example. 이 속성을 "manage"로 설정합니다.copy the link itself). 바로 가기 링크를 무시하려면 이 속성을 "ignore"로 설정합니다.Set this property to "ignore" to ignore symbolic links.
그룹Group 파일 또는 디렉터리를 소유하는 Group의 이름입니다.The name of the Group to own the file or directory.
모드Mode 리소스에 대해 원하는 사용 권한을 8진수 또는 기호 표기법으로 지정합니다.Specifies the desired permissions for the resource, in octal or symbolic notation. (예: 777 또는 rwxrwxrwx).(for example, 777 or rwxrwxrwx). 기호 표기법을 사용하는 경우, 디렉터리나 파일을 나타내는 첫 번째 문자를 제공하지 마세요.If using symbolic notation, do not provide the first character which indicates directory or file.
DependsOnDependsOn 이 리소스를 구성하려면 먼저 다른 리소스의 구성을 실행해야 함을 나타냅니다.Indicates that the configuration of another resource must run before this resource is configured. 예를 들어, 먼저 실행하려는 리소스 구성 스크립트 블록의 IDResourceName이고 해당 형식이 ResourceType일 경우, 이 속성을 사용하기 위한 구문은 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".

추가 정보Additional Information

Linux 및 Windows에서는 텍스트 파일에서 기본적으로 서로 다른 줄 바꿈 문자를 사용하며, 이로 인해 Linux 컴퓨터에서 __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. 예기치 않은 줄 바꿈 문자로 인한 문제를 방지하면서 Linux 파일의 내용을 관리하는 방법에는 여러 가지가 있습니다.There are multiple ways to manage the content of a Linux file while avoiding issues caused by unexpected line break characters:

1 단계: 원격 소스(예: http, https 또는 ftp)에서 파일 복사: 원하는 내용으로 Linux에서 파일을 만들고 구성할 노드에 액세스할 수 있는 웹 서버나 ftp 서버에 이 파일을 올립니다.Step 1: Copy the file from a remote source (http, https, or ftp): 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. nxFile 리소스에 있는 SourcePath 속성을 파일의 웹 또는 ftp URL로 정의합니다.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 단계: Linux 줄 바꿈 문자를 사용하도록 $OFS 속성을 설정한 후 Get-Content로 PowerShell 스크립트에 있는 파일 내용을 읽습니다.Step 2: 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 단계: PowerShell 함수를 사용하여 Windows 줄 바꿈을 Linux 줄 바꿈 문자로 바꿉니다.Step 3: Use a PowerShell function to replace Windows line breaks with Linux line-break characters.

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

}
}

예제Example

다음 예제에서는 디렉터리 /opt/mydir이 존재하고, 지정된 내용의 파일이 이 디렉터리에 존재하도록 합니다.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"
}
}