在Puppet配置中,我确实遇到了导致木偶每次都运行的问题。它是使用perodic cron作业执行的无主配置。
exec { 'postgresql::server::database::action1':
command => "sudo -u postgres psql -d ${db_name} -a -f /opt/folderx/v2/createdb.sql",
path => '/usr/pgsql-9.5/bin:/usr/bin:/bin',
user => 'root',
onlyif => "test $(sudo -u postgres psql -d ${db_name} -c 'SELECT version();' ; echo $?) -ne 0",
}
问题是只有测试的正确语法?在bash shell中,我将得到:
bash:test:参数太多
基本上我需要测试给定的$ dbame
中是否存在一些表和函数答案 0 :(得分:2)
postrgres psql -d ...
会在屏幕上打印一些内容吗?如果是,则将其输出作为参数传递给test
。要隐藏输出,您可以使用... > /dev/null
重定向它。
test $(someCommand; echo $?) -ne 0
过于复杂,只需写! someCommand
即可。这样你也可能不必重定向输出。
onlyif => "! sudo -u postgres psql -d ${db_name} -c 'SELECT version();' > /dev/null",