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}",
  }
}
Другие вопросы по тегам