Linux
木偶“文件”資源清空了一個目錄
通過 Puppet 無意中刪除了多個 TB 的重要數據,我處於有點尷尬的境地,我只是想了解為什麼會發生這種情況。
首先,我很確定它消失的原因(如不可恢復,除了通過備份)是:
File { backup => false }
在我的site.pp中。這些節點被設置為通過 NFS 硬掛載某些東西,因此掛載點 /mount 和 fstab 中的一行如下所示:
nfsserver:/mount /mount nfs <options> 0 0
我想擺脫安裝,並將其替換為指向相同最終位置的符號連結(儘管路徑不同)。
我的木偶清單如下所示:
class symlinks::linkdirtest ( ) { file { '/mount': ensure => "link", target => "/anotherdir/mount", } mount { "/mount": ensure => "absent", } }
這在進行 puppet 執行時產生了以下結果:
notice: /Stage[main]/Symlinks::Linkdirtest/File[/mount]: Not removing directory; use 'force' to override
所以,我適時(或愚蠢地)補充道:
class symlinks::linkdirtest ( ) { file { '/mount': ensure => "link", target => "/anotherdir/mount", force => "true", } ....
瞧瞧,傀儡繼續將最重要的坐騎的內容物交給遺忘,而坐騎點本身仍然存在。
知道為什麼會發生這種情況嗎?
謝謝
它用一個連結替換了該目錄:文件
在“力”下:
“用文件或連結替換目錄”
為了將來參考,您可以嘗試在 noop 模式下執行以查看將進行哪些更改:
puppet agent --test --debug --noop --show-diff
除了在應用 puppet 執行之前測試它們之外,您還應該記住,編寫 puppet 程式碼的順序並不總是 puppet 執行的順序。在這種情況下,您應該已經定義了順序。在符號連結發生之前,您必須先解除安裝。你可以這樣做:
class symlinks::linkdirtest ( ) { file { '/mount': ensure => "link", target => "/anotherdir/mount", } mount { "/mount": ensure => "absent", before => File['/mount'], } }