簡體   English   中英

僅在文件已更改時運行p資源類型

[英]run puppet resource types only when file has changed

我覺得這是一個非常常見的情況,但是我還沒有找到滿足我需求的解決方案。 我想創建類似下面的內容。 (很遺憾, set_variable_only_if_file_was_changed不存在)

file { 'file1':
      path => "fo/file1",
      ensure => present,
      source => "puppet:///modules/bar/file1",
      set_variable_only_if_file_was_changed  => $file_change = true
}

if $file_change{
    file{'new file1'
        ...
    }
    exec{'do something1'
        ...
    }
    package{'my package'
        ...
    }
} 

我已經看到如何使用refreshonly => true抑制exec,但是使用文件似乎更困難。 我想避免將代碼放入.sh文件並通過exec執行它。

木偶沒有您描述的功能。 響應刷新事件的資源以適合其類型的方式進行響應; 沒有機制來定義現有資源的自定義刷新行為。 當然,無法根據應用其他資源的結果來指示將哪些資源包括在節點的目錄中(正如您的偽代碼所暗示的那樣),因為目錄是在應用目錄中的任何內容之前完全構建的。

此外,如果您要像許多人一樣具有相當豐富的腳本編寫背景來學習Puppet,那么這並沒有您想像的那么麻煩。 考慮腳本編寫的人需要對Puppet進行心理調整,因為Puppet的DSL絕對不是腳本語言。 而是一種用於描述機器狀態描述(目錄)構造的語言。 重要的是要掌握此類目錄描述機器目標狀態的詳細信息, 而不是將其從當前狀態轉換為其他狀態所需的步驟。 (即使以這種方式使用, Exec可能是最有效的。)很少能夠根據其標識和初始狀態來確定機器的預期狀態。 即使很難做到這一點也不常見。

如何實現所需的特定配置取決於細節。 通常,答案在於用戶定義的事實。 例如,您提供的事實是,您可以在目錄構建期間進行詢問以評估該文件是否被更改,並適當地調整目錄詳細信息,而不是捕獲目錄應用程序期間給定文件是否已更改。 有時您一開始就不需要這樣的測試,因為Puppet僅在需要更改給定資源時才對它進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM