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

При использовании нескольких исходных файлов, как узнать, какой из них будет использоваться Puppet?

Допустим, у вас есть такая файловая директива:

***SNIP***
file: "/tmp/file_I_need":
    path => "/tmp/file_I_need",
    ensure => "present",
    source:[
        "puppet://$fileserver/files/$name/file_I_need",
        "puppet://$fileserver/files/$group/file_I_need",
        "puppet://$fileserver/files/default/file_I_need",
        ];
***SNIP***

А потом каждый файл вот так:

files/name_that_exists>/file_I_need
files/group_that_exists>/file_I_need
files/default/file_I_need

Вопрос такой:

Как узнать, какой исходный файл используется марионеткой? Если я запускаю puppet на разных хостах, я ожидаю разные файлы, я знаю, что он будет использовать файл, который соответствует первым.

За исключением изменения файла и проверки, внесены ли в него изменения, есть ли способ точно узнать, какой из 3 исходных файлов он выбрал?

Это марионетка 2.6.2. (Сервер работает на Debian)

НОТА:

Я ищу другой метод, нежели хеш файла. Мне также не нравится решение помещать имя файла (или подобное) где-нибудь в каждом файле. Я хочу знать, как получить путь от марионетки.

поместите $ hostname в имя файла или имя каталога:

source => ["puppet://${fileserver}/files/${name}/file_for_${hostname}.txt",
"puppet://${fileserver}/files/${name}/file_for_default_host.txt"]