gpt4 book ai didi

puppet - Puppet 中的执行顺序

转载 作者:行者123 更新时间:2023-12-02 04:39:56 28 4
gpt4 key购买 nike

我的 Puppet list 中有一系列 exec:

  1. 第一个下载带有二进制文件的 ZIP 文件(除非已经安装了二进制文件)并将其保存到 /tmp
  2. 第二个将其解压缩。

当我第一次应用 list 时,它工作正常。但是,当我清理我的 /tmp 并再次应用 list 时,它失败了,因为第一个 exec 没有执行(这是正确的),但第二个仍然尝试执行并失败,因为 ZIP 文件是不存在。

如果第一个执行程序未下载文件,我如何修改 list 以跳过第二个执行程序?

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'],
}

这将导致 unzip exec 仅在 wget exec 实际执行某些操作时运行——如果找到 ngrok,则不会运行。

通常我会把它放到一个更永久的位置,然后把它留在那里。然后代替 unless => 'which ngrok' 检查,替换为 creates => '/path/to/zip.file'。结果是只要文件仍然存在,就不会触发任何执行程序。

当您对 zip 文件进行版本控制并想要更改版本时会派上用场。

关于puppet - Puppet 中的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21046339/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com