Puppet
Puppet,使用 augeas 更改多個屬性文件
我經常使用 puppet 和 augeas 工具來配置屬性文件。我的最新要求是將相同的固定更改集應用於相當長的屬性文件列表。所以,我想一次性完成,而不是為每個屬性文件編寫一個 augeas。
例子:
augeas { 'change_name_whatever': lens => 'a_customized_lens', incl => "$path/file1.properties", changes => $change_set, } augeas { 'change_name_whatever': lens => 'a_customized_lens', incl => "$path/file2.properties", changes => $change_set, } etc...
我想使用:
augeas { 'change_name_whatever': lens => 'a_customized_lens', incl => "[list of files to change], changes => $change_set, }
但這是不可能的,因為 augeas 需要預載入文件。
因為我使用的是 puppet 3.8,所以我不能使用foreach類型的循環。我看到在 puppet 4 中你可以聲明一個文件列表,然後循環它們並做你的事情。這很酷……但在 puppet 3 中不起作用。
那麼,我是否有任何其他解決方案,然後多次複製/粘貼相同的程式碼?
乾杯。
實現這一目標的最佳選擇是創建一個已定義的資源類型:
define customized::filetype ($change_set) { augeas { "customized filetype ${title}": lens => 'a_customized_lens', incl => $name, changes => $change_set, } }
然後將其與標題中的數組一起使用:
customized::filetype { [ "$path/file1.properties", "$path/file2.properties" ]: change_set => $change_set, }
您甚至可以(我推薦它)將更改集抽象為已定義資源類型中的鍵/值參數。例如:
define customized::filetype ($key, $value) { augeas { "customized filetype ${title}": lens => 'a_customized_lens', incl => $name, changes => "set ${key} ${value}", } }