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 вы можете объявить список файлов, а затем зациклить их и делать свое дело. Что круто... но не работает в марионетке 3.
Итак, есть ли у меня какое-либо другое решение, после которого копировать / вставлять один и тот же код много раз?
веселит.
1 ответ
Лучший способ добиться этого - создать определенный тип ресурса:
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}",
}
}