Назад | Перейти на главную страницу

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 необходимо предварительно загрузить файл.

Поскольку я использую марионетку 3.8, я не могу использовать для каждого тип зацикливания. Я видел, что в марионетке 4 вы можете объявить список файлов, а затем зацикливаться на них и делать свое дело. Это круто ... но не работает в марионетке 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}",
  }
}