exec
我的Puppet清单中有一系列:
/tmp
.当我第一次应用清单时,它可以正常工作.但是,当我清理/tmp
并再次应用清单时,它会失败,因为第一个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'],
}
Run Code Online (Sandbox Code Playgroud)
试试这个:
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'],
}
Run Code Online (Sandbox Code Playgroud)
这将导致unzip exec仅在wget exec实际执行某些操作时运行 - 如果找到ngrok则不会运行.
通常情况下,我会把它放到一个更永久的位置并留在那里.然后代替unless =>'which ngrok'检查,替换为creates =>'/ path/to/zip.file'.结果是只要文件仍然存在,没有任何高管触发.
当您对zip文件进行版本设置并想要更改版本时,它会派上用场.