DSC untuk Sumber Daya nxFile Linux

Sumber daya nxFile di PowerShell Desired State Configuration (DSC) menyediakan mekanisme untuk mengelola file dan direktori pada simpul Linux.

Sintaks

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

Properti

Properti Deskripsi
DestinationPath Menentukan lokasi tempat Anda ingin memastikan status untuk file atau direktori.
SourcePath Menentukan jalur untuk menyalin sumber daya file atau folder. Jalur ini mungkin jalur lokal, atau http/https/ftp URL. URL jarak jauh http/https/ftp hanya didukung ketika nilai properti Jenis adalah file.
Jenis Menentukan apakah sumber daya yang dikonfigurasi adalah direktori atau file. Atur properti ini ke direktori untuk menunjukkan bahwa sumber daya adalah direktori. Atur ke file untuk menunjukkan bahwa sumber daya adalah file. Nilai default-nya adalah file.
Konten Menentukan konten file, seperti string tertentu.
Checksum Menentukan jenis yang akan digunakan saat menentukan apakah dua file sama. Jika Checksum tidak ditentukan, hanya nama file atau direktori yang digunakan untuk perbandingan. Nilainya adalah: ctime, mtime, atau md5.
Rekursi Menunjukkan apakah subdirektori disertakan. Atur properti ini ke $true untuk menunjukkan bahwa Anda ingin subdirektori disertakan. Defaultnya adalah $false. Properti ini hanya valid ketika properti Jenis diatur ke direktori.
Force Operasi file tertentu (seperti menimpa file atau menghapus direktori yang tidak kosong) akan mengakibatkan kesalahan. Menggunakan properti Force akan mengambil alih kesalahan tersebut. Nilai defaultnya adalah $false.
Tautan Menentukan perilaku yang diinginkan untuk tautan simbolis. Atur properti ini untuk diikuti untuk mengikuti tautan simbolis dan bertindak pada target tautan. Misalnya, salin file alih-alih tautan. Atur properti ini untuk mengelola untuk bertindak pada tautan. Misalnya, salin tautan itu sendiri. Atur properti ini untuk diabaikan untuk mengabaikan tautan simbolis.
Grup Nama Grup untuk memiliki izin ke file atau direktori.
Mode Menentukan izin yang diinginkan untuk sumber daya, dalam notasi oktal atau simbolis. Misalnya, 777 atau rwxrwxrwx. Jika menggunakan notasi simbolis, jangan berikan karakter pertama yang menunjukkan direktori atau file.
Pemilik Nama grup untuk memiliki file atau direktori.

Properti umum

Properti Deskripsi
DependsOn Menunjukkan bahwa konfigurasi sumber daya lain harus berjalan sebelum sumber daya ini dikonfigurasi. Misalnya, jika ID blok skrip konfigurasi sumber daya yang ingin Anda jalankan terlebih dahulu adalah ResourceName dan jenisnya adalah ResourceType, sintaks untuk menggunakan properti ini adalah DependsOn = "[ResourceType]ResourceName".
Memastikan Menentukan apakah file ada. Atur properti ini ke Ada untuk memastikan file ada. Atur ke Tidak Ada untuk memastikan file tidak ada. Nilai defaultnya adalah Ada.

Informasi Tambahan

Linux dan Windows menggunakan karakter pemisah baris yang berbeda dalam file teks secara default, dan ini dapat menyebabkan hasil yang tidak terduga saat mengonfigurasi beberapa file di komputer Linux dengan nxFile. Ada beberapa cara untuk mengelola konten file Linux sambil menghindari masalah yang disebabkan oleh karakter pemisah baris yang tidak terduga:

  1. Salin file dari sumber jarak jauh (http, https, atau ftp)

    Buat file di Linux dengan konten yang diinginkan, dan tahapkan di web atau server ftp yang dapat diakses simpul yang akan Anda konfigurasi. Tentukan properti SourcePath di sumber daya nxFile dengan URL web atau ftp ke file.

    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. Baca konten file di skrip PowerShell dengan Get-Content setelah mengatur properti $OFS untuk menggunakan karakter pemisah baris 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. Gunakan fungsi PowerShell untuk mengganti hentian baris Windows dengan karakter pemisah baris 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
       }
    }
    

Contoh

Contoh berikut memastikan bahwa direktori /opt/mydir ada, dan bahwa file dengan konten tertentu ada di direktori ini.

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