Puppet

是否可以讓 puppet 將遞歸和非遞歸更改組合到給定目錄

  • September 15, 2021

我在 debian 上使用 puppet 3.8.4。我想在一個設置的目錄上遞歸地設置所有者和組,但只設置目錄本身的權限,即。我不想 chmod 目錄中的任何內容,只 chown/chgrp 它。

我嘗試了以下…

file {[
   "/foo/bar" ,
 ] :
 ensure  => directory,
 owner   => root,
 group   => bar,
 recurse => true,
 require       => [
   User[root],
   Group[bar],
 ],
}
file {[
   "/foo/bar" ,
 ] :
 ensure  => directory,
 mode    => 0640,           # +x automatically added to directories
 recurse => false,
}

但是當然 puppet 然後抱怨重複聲明:文件

$$ /foo/bar $$如果你這樣做。 puppet 有沒有辦法做到這一點,而不必執行頂級目錄,然後明確地執行其下的所有文件和文件夾?

只是把它作為一個答案:你不能。

namevar 參數是路徑,因此您不能有 2 個具有相同路徑的文件資源。

檢查有關文件資源的文件。

未經測試,但這應該可以工作:

對於第二個資源,只需將其命名為不同的名稱並設置一個顯式路徑

file {"/foo/bar_root":
 path    => "/foo/bar",
 ensure  => directory,
 mode    => 0640,           # +x automatically added to directories
 recurse => false,
}

引用自:https://serverfault.com/questions/734194