我的傀儡清单中有一个exec序列:
/tmp中。当我第一次应用清单时,它正常工作。但是,当我清理我的/tmp并再次应用清单时,它会失败,因为第一个exec没有执行(这是正确的),但是第二个仍然尝试执行,但由于ZIP文件不存在,它仍然失败。
如果第一个清单没有下载文件,如何修改清单以跳过第二个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'],
}发布于 2014-01-11 04:48:28
试试这个:
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'],
}这将导致解压缩执行只有在wget exec实际执行一些事情时才会运行--如果找到ngrok,它就不会运行。
通常情况下,我会把它弄到一个更固定的地方,然后把它留在那里。然后,用创建=> '/path/to/zip.file‘代替不使用ngrok检查的除非=>’。结果是只要文件还在那里,就不会有任何主管开火。
当您对zip文件进行版本化并想要更改版本时,会派上用场。
发布于 2016-02-02 09:17:19
您还可以尝试更简单的方法:
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下载‘通知Exec’‘ngrok unzip’如果应用,Exec‘’ngrok解压缩‘只在需要时刷新其状态。
同样的事情也可以通过做以下事情来实现:
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']希望这能有所帮助。
https://stackoverflow.com/questions/21046339
复制相似问题