我使用木偶和augeas工具很多configuration属性文件。 我最新的要求是将相同的一组修改应用于相当长的属性文件列表。 所以,我想一口气做,而不是为每个属性文件写一个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需要预先加载文件。
由于我使用的是木偶3.8,我不能使用foreachtypes的循环。 我看到,在木偶4中,你可以声明一个文件列表,然后循环他们,做你的事情。 这很酷…但在傀儡3中不起作用。
那么,我有没有其他解决scheme,然后复制/粘贴相同的代码多次?
干杯。
最好的select是创build一个定义的资源types:
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, }
你甚至可以(和我推荐它)在定义的资源types中抽象变化集作为键/值参数。 例如:
define customized::filetype ($key, $value) { augeas { "customized filetype ${title}": lens => 'a_customized_lens', incl => $name, changes => "set ${key} ${value}", } }