DsC dla systemu Linux nxFile Resource

Zasób nxFile w programie PowerShell Desired State Configuration (DSC) udostępnia mechanizm zarządzania plikami i katalogami w węźle systemu Linux.

Składnia

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

Właściwości

Właściwość Opis
DestinationPath Określa lokalizację, w której chcesz zapewnić stan pliku lub katalogu.
SourcePath Określa ścieżkę, z której chcesz skopiować zasób pliku lub folderu. Ta ścieżka może być ścieżką lokalną http/https/ftp lub adresem URL. Zdalne http/https/ftp adresy URL są obsługiwane tylko wtedy, gdy wartość właściwości Type to plik.
Typ Określa, czy konfigurowany zasób jest katalogiem, czy plikiem. Ustaw tę właściwość na katalog , aby wskazać, że zasób jest katalogiem. Ustaw go na plik , aby wskazać, że zasób jest plikiem. Wartość domyślna to plik.
Zawartość Określa zawartość pliku, na przykład określony ciąg.
Suma kontrolna Definiuje typ, który ma być używany podczas określania, czy dwa pliki są takie same. Jeśli suma kontrolna nie jest określona, do porównania jest używana tylko nazwa pliku lub katalogu. Wartości to: ctime, mtime lub md5.
Recurse Wskazuje, czy są uwzględnione podkatalogi. Ustaw tę właściwość na , aby $true wskazać, że chcesz uwzględnić podkatalogi. Wartość domyślna to $false. Ta właściwość jest prawidłowa tylko wtedy, gdy właściwość Type jest ustawiona na katalog.
Force Niektóre operacje na plikach (takie jak zastępowanie pliku lub usuwanie katalogu, który nie jest pusty), spowodują błąd. Użycie właściwości Force zastępuje takie błędy. Wartość domyślna to $false.
Linki Określa żądane zachowanie linków symbolicznych. Ustaw tę właściwość, aby śledzić linki symboliczne i wykonywać działania na obiekcie docelowym łączy. Na przykład skopiuj plik zamiast linku. Ustaw tę właściwość, aby zarządzać działaniem za pomocą linku. Na przykład skopiuj sam link. Ustaw tę właściwość, aby ignorować linki symboliczne.
Group (Grupa) Nazwa grupy , która ma mieć uprawnienia do pliku lub katalogu.
Tryb Określa żądane uprawnienia dla zasobu w notacji ósemkowej lub symbolicznej. Na przykład 777 lub rwxrwxrwx. W przypadku używania notacji symbolicznej nie należy podawać pierwszego znaku wskazującego katalog lub plik.
Właściciel Nazwa grupy, która ma być właścicielem pliku lub katalogu.

Wspólne właściwości

Właściwość Opis
Dependson Wskazuje, że przed skonfigurowaniem tego zasobu należy uruchomić konfigurację innego zasobu. Jeśli na przykład identyfikator bloku skryptu konfiguracji zasobu, który chcesz uruchomić jako pierwszy, to ResourceName, a jego typem jest ResourceType, składnia użycia tej właściwości to DependsOn = "[ResourceType]ResourceName".
Zapewnienia Określa, czy plik istnieje. Ustaw tę właściwość na Present , aby upewnić się, że plik istnieje. Ustaw go na Wartość Nieobecny , aby upewnić się, że plik nie istnieje. Wartość domyślna to Present (Obecny).

Dodatkowe informacje

Systemy Linux i Windows domyślnie używają różnych znaków podziału wiersza w plikach tekstowych, co może spowodować nieoczekiwane wyniki podczas konfigurowania niektórych plików na komputerze z systemem Linux za pomocą polecenia nxFile. Istnieje wiele sposobów zarządzania zawartością pliku systemu Linux przy jednoczesnym unikaniu problemów spowodowanych przez nieoczekiwane znaki podziału wiersza:

  1. Skopiuj plik ze źródła zdalnego (http, https lub ftp)

    Utwórz plik w systemie Linux z żądaną zawartością i przygotuj go na serwerze internetowym lub ftp dostępnym dla węzłów, które zostaną skonfigurowane. Zdefiniuj właściwość SourcePath w zasobie nxFile za pomocą adresu URL internetowego lub ftp do pliku.

    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"
       }
    }
    
  2. Odczytaj zawartość pliku w skrypce programu PowerShell za pomocą polecenia Get-Content po ustawieniu właściwości $OFS na używanie znaku podziału wiersza systemu 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"
       }
    }
    
  3. Użyj funkcji programu PowerShell, aby zastąpić podziały wierszy systemu Windows znakami podziału wiersza systemu 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
       }
    }
    

Przykład

Poniższy przykład zapewnia, że katalog /opt/mydir istnieje i że plik o określonej zawartości istnieje w tym katalogu.

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