我只想在文件(/usr/local/bin/papply)不存在时执行以下命令。不知道该把什么放在那里。
exec { 'git add url':
command =>'git remote add origin https://github.com/testing/puppet.git',
require => Exec['git init'],
cwd => '/home/vagrant/django',
user => 'vagrant',
onlyif => "not sure what to put here"
}
答案1
你尝试过这个吗?
onlyif => "test ! -f /usr/local/bin/papply"
不确定 Puppet 是否可以使用“!”字符
也许有一个更好的选择:
creates => '/usr/local/bin/papply'
即使我不喜欢这个命令并没有真正创建文件
答案2
如果你使用的是 Linux,请执行
unless => 'ls /somefile'
如果文件不存在,ls 将返回一个非零返回码,并且仅当其测试返回非零返回码时,才会让其正在执行的 exec 执行。
答案3
在 Linux 和 Puppet >3.8 上尝试:
exec { 'test':
command => '/bin/echo HI',
unless => 'test -f /a/file.txt',
}
/a/file.txt
如果存在,exec 将不会运行。
答案4
您可能需要考虑使用创建,其存在就是为了这个目的:
exec { 'git add url':
command => 'git remote add origin https://github.com/testing/puppet.git',
creates => '/usr/local/bin/papply'
}