DSC för Linux nxFile-resurs

NxFile-resursen i PowerShell Desired State Configuration (DSC) tillhandahåller en mekanism för att hantera filer och kataloger på en Linux-nod.

Syntax

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

Egenskaper

Egenskap Beskrivning
DestinationPath Anger den plats där du vill säkerställa tillståndet för en fil eller katalog.
SourcePath Anger den sökväg som filen eller mappresursen ska kopieras från. Den här sökvägen kan vara en lokal sökväg eller en http/https/ftp URL. Fjärr-URL http/https/ftp :er stöds bara när värdet för egenskapen Type är fil.
Typ Anger om resursen som konfigureras är en katalog eller en fil. Ange den här egenskapen till katalog för att ange att resursen är en katalog. Ange den till fil för att ange att resursen är en fil. Standardvärdet är fil.
Innehåll Anger innehållet i en fil, till exempel en viss sträng.
Kontrollsumma Definierar vilken typ som ska användas när du avgör om två filer är samma. Om Kontrollsumma inte har angetts används endast fil- eller katalognamnet för jämförelse. Värdena är: ctime, mtime eller md5.
Recurse Anger om underkataloger ingår. Ange den här egenskapen till $true för att ange att du vill att underkataloger ska inkluderas. Standardvärdet är $false. Den här egenskapen är endast giltig när egenskapen Type är inställd på katalog.
Force Vissa filåtgärder (till exempel att skriva över en fil eller ta bort en katalog som inte är tom) resulterar i ett fel. Om du använder egenskapen Force åsidosätts sådana fel. Standardvärdet är $false.
Länkar Anger önskat beteende för symboliska länkar. Ange den här egenskapen att följa för att följa symboliska länkar och agera på länkmålet. Kopiera till exempel filen i stället för länken. Ange att den här egenskapen ska hantera så att den fungerar på länken. Kopiera till exempel själva länken. Ange att den här egenskapen ska ignoreras för att ignorera symboliska länkar.
Group Namnet på gruppen som ska ha behörighet till filen eller katalogen.
Läge Anger önskade behörigheter för resursen, i oktal eller symbolisk notation. Till exempel 777 eller rwxrwxrwx. Om du använder symbolisk notation ska du inte ange det första tecknet som anger katalog eller fil.
Ägare Namnet på den grupp som ska äga filen eller katalogen.

Gemensamma egenskaper

Egenskap Beskrivning
DependsOn Anger att konfigurationen av en annan resurs måste köras innan den här resursen har konfigurerats. Om till exempel ID:t för det resurskonfigurationsskriptblock som du vill köra först är ResourceName och dess typ är ResourceType är DependsOn = "[ResourceType]ResourceName"syntaxen för att använda den här egenskapen .
Säkerställa Avgör om filen finns. Ange den här egenskapen till Presentera för att säkerställa att filen finns. Ställ in den på Frånvarande för att säkerställa att filen inte finns. Standardvärdet är Present.

Ytterligare information

Linux och Windows använder olika radbrytningstecken i textfiler som standard, och detta kan orsaka oväntade resultat när vissa filer konfigureras på en Linux-dator med nxFile. Det finns flera sätt att hantera innehållet i en Linux-fil samtidigt som du undviker problem som orsakas av oväntade radbrytningstecken:

  1. Kopiera filen från en fjärrkälla (http, https eller ftp)

    Skapa en fil i Linux med önskat innehåll och mellanlagra den på en webb- eller ftp-server som är tillgänglig för de noder som du ska konfigurera. Definiera egenskapen SourcePath i nxFile-resursen med webb- eller ftp-URL:en till filen.

    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. Läs filinnehållet i PowerShell-skriptet med Get-Content när du har angett egenskapen $OFS att använda radbrytningstecknet i 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. Använd en PowerShell-funktion för att ersätta Radbrytningar i Windows med radbrytningstecken i 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
       }
    }
    

Exempel

I följande exempel ser du till att katalogen /opt/mydir finns och att det finns en fil med angivet innehåll i den här katalogen.

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