Recurso nxFile de DSC para Linux
O recurso nxFile na Configuração de Estado Desejado (DSC) do PowerShell fornece um mecanismo para gerenciar arquivos e diretórios em um nó do Linux.
Sintaxe
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 } ]
}
Propriedades
Propriedade | Descrição |
---|---|
DestinationPath | Especifica o local onde você deseja garantir o estado de um arquivo ou diretório. |
SourcePath | Especifica o caminho do qual o recurso de arquivo ou pasta deve ser copiado. Esse caminho poderá ser um caminho local ou uma URL http/https/ftp . As URLs http/https/ftp remotas só são compatíveis quando o valor da propriedade Type é file. |
Tipo | Especifica se o recurso que está sendo configurado é um diretório ou um arquivo. Defina essa propriedade como directory para indicar que o recurso é um diretório. Defina-a como file para indicar que o recurso é um arquivo. O valor padrão é file. |
Sumário | Especifica o conteúdo de um arquivo, como uma cadeia de caracteres específica. |
Checksum (soma de verificação) | Define o tipo que deve ser usado para determinar se dois arquivos são iguais. Se Checksum não for especificado, somente o nome de arquivo ou diretório será usado para comparação. Os valores são: ctime, mtime ou md5. |
Recurse | Indica se subdiretórios são incluídos. Defina essa propriedade como $true para indicar que você deseja que subdiretórios sejam incluídos. O padrão é $false . Essa propriedade é válida somente quando a propriedade Type está definida como directory. |
Force | Determinadas operações de arquivo (como substituição de um arquivo ou exclusão de um diretório que não esteja vazio) resultarão em erro. O uso da propriedade Force substitui esses erros. O valor padrão é $false . |
Links | Especifica o comportamento desejado para links simbólicos. Defina essa propriedade como follow para seguir links simbólicos e agir sobre o destino de links. Por exemplo, copiar o arquivo em vez do link. Defina essa propriedade como manage para agir sobre o link. Por exemplo, copiar o próprio link. Defina essa propriedade como ignore para ignorar links simbólicos. |
Grupo | O nome do Grupo que terá permissões para o arquivo ou diretório. |
Modo | Especifica as permissões desejadas para o recurso, na notação octal ou simbólica. Por exemplo, 777 ou rwxrwxrwx. Se usar notação simbólica, não forneça o primeiro caractere que indica o diretório ou arquivo. |
Proprietário | O nome do grupo que será proprietário do arquivo ou diretório. |
Propriedades comuns
Propriedade | Descrição |
---|---|
DependsOn | Indica que a configuração de outro recurso deve ser executada antes de ele ser configurado. Por exemplo, se a ID do bloco de script de configuração do recurso que você deseja executar primeiro for ResourceName e seu tipo for ResourceType, a sintaxe para usar essa propriedade será DependsOn = "[ResourceType]ResourceName" . |
Ensure | Determina se é necessário verificar se o arquivo existe. Defina essa propriedade como Present para garantir que o arquivo exista. Defina-a como Absent para garantir que o arquivo não exista. O valor padrão é Present. |
Informações adicionais
Linux e Windows usam diferentes caracteres de quebra de linha em arquivos de texto por padrão; isso pode causar resultados inesperados ao configurar alguns arquivos em um computador Linux com nxFile. Há várias maneiras de gerenciar o conteúdo de um arquivo do Linux e, ao mesmo tempo, evitar problemas causados por caracteres de quebra de linha inesperada:
Copiar o arquivo de uma origem remota (http, https ou ftp)
Crie um arquivo no Linux com o conteúdo desejado e prepare-o em um servidor da Web ou ftp acessível com os nós que vai configurar. Defina a propriedade SourcePath no recurso nxFile com a URL da web ou do ftp para o arquivo.
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" } }
Leia o conteúdo do arquivo no script do PowerShell com Get-Content depois de definir a propriedade $OFS para usar o caractere de quebra de linha do Linux.
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" } }
use uma função do PowerShell para substituir as quebras de linha do Windows com caracteres de quebra de linha do Linux.
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 } }
Exemplo
O exemplo a seguir garante que o diretório /opt/mydir
exista e que um arquivo com conteúdo especificado exista nesse diretório.
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"
}
}
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: ao longo de 2024, vamos eliminar problemas do GitHub como o mecanismo de comentários para conteúdo e substituí-lo por um novo sistema de comentários. Para obter mais informações, consulte:Enviar e exibir comentários de