我们有一个服务器(由puppetpipe理),每天生成一个文件。 有没有一种方法可以使傀儡做到以下几点:
这真的是我不清楚的认识和上传。 我想我知道如何确保服务器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)。
这不是一个很干净的解决scheme,但它可以工作。
假设您有一个适用于puppetpipe理的所有节点的公共类或节点(如默认)。
在这里,您创build了用于pipe理每天创build的文件的策略,但仅创build一个虚拟资源。
node default { $fsufix = strftime("%y_%m_%d") @file { "everyday_file" : path => "/scratch/usern/file_${fsufix}", ensure => present, } }
那么对于serverA来说,只需要通过实现我们之前创build的虚拟资源来检查该文件是否存在:
node 'serverA' inherits default { realize(File["everyday_file"]) }
在此之后,如果创build或修改文件,则希望serverB与serverA执行相同的操作,并刷新服务:
node 'serverB' inherits default { realize(File["everyday_file"]) service { "mysqld" : ensure => running, hasrestart => true, subscribe => File ["everyday_file"], } }