Как применить ресурс, только если содержание изменится - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь сохранить нестандартное расположение хостов, используя тип ресурса хостов puppet.Так как это нестандартный файл hosts, его содержимое не «предварительно выбирается» марионеткой, и тогда невозможно выполнить что-то вроде очистки записей.Чтобы обойти проблему, я хочу удалить файл, прежде чем puppet применяет какие-либо изменения к этому файлу.Однако я не хочу удалять файл каждый раз, когда запускается puppet, а только если есть что-то, что нужно изменить.Есть ли способ применить конфигурации для ресурса, только если он собирается что-то изменить?

Сейчас я определяю хосты через hiera и использую функцию create_resources для получения требуемых ресурсов хостов.

create_resources(host,$host_entries)

Чтобы убедиться, что других записей нет, моя самая простая идея - убедиться, что файл не существует, непосредственно перед применением конфигурации хоста:

file { '/nonstandard/hosts':
  ensure => absent,
}

При этом хосты будут всегдаудаляется, даже если нечего менять.Как это будет в 99 процентах случаев.Так что варианты, которые я должен удалить файл только в случае create_resources(host,$host_entries), действительно принесут что-то новое.Может быть, есть другой и более простой подход?

1 Ответ

1 голос
/ 30 июня 2019

Есть ли способ применить конфигурации для ресурса, только если он собирается что-то изменить?

Не в общем смысле.Вместо этого вы могли бы написать собственный факт, который предоставляет список хостов, определенных вашим пользовательским файлом хостов (требуются только имена хостов), и на основе значения этого факта и ваших данных hiera генерировать ресурсы Host дляубедитесь, что отсутствуют те хосты, для которых у вас нет определений.Это, однако, предполагает, что все хосты, которые должны быть перечислены в файле, вам известны из данных Hiera.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...