У нас есть сервер (управляемый марионеткой), который генерирует файл один раз в день. Есть ли подход, который я мог бы использовать, чтобы сделать марионетку следующим:
На самом деле я не совсем понимаю, что такое распознавание и загрузка. Думаю, я понимаю, как обеспечить существование на сервере B и перезагрузить службу.
Были бы полезны любые шаблоны или документация. Спасибо.
Я бы посмотрел в экспортированные ресурсы.
Вы можете определить дополнительный ресурс, используя настраиваемый факт в качестве источника содержимого файла:
node servera {
@@file { "/generated/file"
ensure => present,
content => $::myspecialfilecontent
tag => myspecialfile,
}
}
и реализуем ресурс на serverb:
node serverb {
File <<| tag == 'myspecialfile' |>> {
notify => Service["your_service"],
}
}
настраиваемый факт марионетки может выглядеть следующим образом (поместите его в файл modules /.../ lib / facter / myspecialfilecontent.rb и включите pluginsync):
filename = '/generated/file'
Facter.add(:myspecialfilecontent) do
setcode do
if File.file?(filename)
File.read(filename)
end
end
end
тебе нужно storeconfigs = true
(puppetdb) для этого.
Это не очень чистое решение, но оно может сработать.
Предположим, что у вас есть общий класс или узел (например, по умолчанию), который применяется ко всем узлам, управляемым марионеткой.
Здесь вы создаете политику для управления файлом, который создается ежедневно, но только виртуальным ресурсом.
node default {
$fsufix = strftime("%y_%m_%d")
@file { "everyday_file" :
path => "/scratch/usern/file_${fsufix}",
ensure => present,
}
}
Затем для serverA вам просто нужно проверить, присутствует ли этот файл, реализовав виртуальный ресурс, который мы только что создали:
node 'serverA' inherits default {
realize(File["everyday_file"])
}
После этого вы хотите, чтобы serverB выполнял то же самое, что и serverA, плюс обновлял службу, если файл был создан или изменен:
node 'serverB' inherits default {
realize(File["everyday_file"])
service { "mysqld" :
ensure => running,
hasrestart => true,
subscribe => File ["everyday_file"],
}
}