Puppet 傀儡中的执行序列
我的傀儡清单中有一个Puppet 傀儡中的执行序列,puppet,Puppet,我的傀儡清单中有一个exec序列: 第一个下载带有二进制文件的ZIP文件(除非二进制文件已经安装),并将其保存到/tmp 第二个可以解开拉链 当我第一次应用清单时,它工作正常。但是,当我清理我的/tmp并再次应用清单时,它失败了,因为第一个exec没有执行(这是正确的),但第二个exec仍然尝试执行,并且失败了,因为ZIP文件不存在 如果第一个exec没有下载文件,如何修改清单以跳过第二个exec exec { 'ngrok-download': command => 'wget ht
exec
序列:
/tmp
李>
/tmp
并再次应用清单时,它失败了,因为第一个exec没有执行(这是正确的),但第二个exec仍然尝试执行,并且失败了,因为ZIP文件不存在
如果第一个exec没有下载文件,如何修改清单以跳过第二个exec
exec { 'ngrok-download':
command => 'wget https://dl.ngrok.com/linux_386/ngrok.zip -O /tmp/ngrok.zip',
unless => 'which ngrok',
path => ['/bin', '/usr/bin'],
}
exec { 'ngrok-unzip':
command => 'unzip ngrok.zip',
cwd => '/tmp',
path => ['/usr/bin'],
require => Exec['ngrok-download'],
}
试试这个:
exec { 'ngrok-download':
command => 'wget https://dl.ngrok.com/linux_386/ngrok.zip -O /tmp/ngrok.zip',
unless => 'which ngrok',
path => ['/bin', '/usr/bin'],
notify => Exec['ngrok-unzip'],
}
exec { 'ngrok-unzip':
command => 'unzip ngrok.zip',
cwd => '/tmp',
path => ['/usr/bin'],
refreshonly => true,
require => Exec['ngrok-download'],
}
这将导致解压exec仅在wget exec实际执行某些操作时运行——如果找到ngrok,则不会运行
通常我会把它搬到一个更固定的地方,然后留在那里。然后替换为creates=>'/path/to/zip.file',而不是除非=>'which ngrok'检查。结果是,只要文件还在,就不会触发任何exec
当您对zip文件进行版本设置并希望更改版本时,此方法非常方便。您也可以尝试更简单的方法:
exec { 'ngrok-download':
command => 'wget https://dl.ngrok.com/linux_386/ngrok.zip -O /tmp/ngrok.zip',
unless => 'which ngrok',
path => ['/bin', '/usr/bin'],
} ~>
exec { 'ngrok-unzip':
command => 'unzip ngrok.zip',
cwd => '/tmp',
path => ['/usr/bin'],
refreshonly => true,
}
其中Exec['ngrok-download']通知Exec['ngrok-unzip'],如果应用,并且Exec['ngrok-unzip']仅在需要时刷新其状态
同样的事情也可以通过以下方式实现:
exec { 'ngrok-download':
command => 'wget https://dl.ngrok.com/linux_386/ngrok.zip -O /tmp/ngrok.zip',
unless => 'which ngrok',
path => ['/bin', '/usr/bin'],
}
exec { 'ngrok-unzip':
command => 'unzip ngrok.zip',
cwd => '/tmp',
path => ['/usr/bin'],
refreshonly => true,
}
Exec['ngrok-download'] ~> Exec['ngrok-unzip']
希望这能有所帮助。当使用
通知+仅刷新和使用创建时,我遇到了相同的错误,所以我想它不会以这种方式工作。如果你放入creates,那么如果文件被删除,exec将再次启动以将文件放回。然后,notify将触发解压exec。要防止两个exec每次运行都触发,请确保文件不会被删除——或者保留您的除非语句以检查它是否已安装。是的,当我使用创建+通知+仅刷新时,它工作正常,谢谢!起初我认为创建是一种单独的方法。