Linux

木偶“文件”資源清空了一個目錄

  • September 17, 2021

通過 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'],
   }
}

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