我在反向移植中使用PostgreSQL 9.1和debian squeeze。Puppet的版本为2.7.14。不幸的是,初始化脚本返回了错误的状态退出代码。因此,我编写了一个自定义status
命令来检测postgresql是否正在运行。
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "pg_lsclusters -h | awk 'BEGIN {rc=0} {if ($4 != \"online\") rc=3} END { exit rc }'",
provider => debian,
}
我的命令像个魔术师一样工作,但是木偶似乎有问题。notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' to 'running'
尽管它已经在运行,但我总是能得到。
因此尝试了以下方法:
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "exit 0",
provider => debian,
}
据我了解,这个自定义status
命令使p始终认为postgresql正在运行。然而,木偶每次都尝试启动postgresql。
我怎么了 还是木偶中的错误?
您确定出口0是有效命令吗?exit命令通常在外壳内部。您是否需要执行bash -c'exit 0'之类的操作?
—
Zoredache
@Zoredache你是对的。使用sh -c'exit 0'
—
MMore 2012年
status
,木偶命令按预期工作!
provider => init
(并删除enable
参数)。