我有一个 exec 命令来更改主机名。我只想在主机名不正确时执行该命令:
exec { 'update hostname':
command => 'sudo hostname VM01',
unless => '[[ "$(hostname)" == "VM01" ]]';
}
现在,[[ "$(hostname)" == "VM01" ]]
如果我手动执行该命令,它似乎按预期工作,但 Puppet 似乎忽略了它。
我也尝试过:
test "$(hostname)" == "VM01"
test $(hostname) == "VM01"
[ <(hostname) == "VM01" ]
[ hostname == "VM01" ]
有人可以指出我的错误吗?我就是不明白。
答案1
如果您也发布收到的错误消息就好了。
此代码对我有用:
exec { 'update hostname':
command => 'hostname VM01',
path => '/usr/bin:/usr/sbin/:/bin:/sbin',
unless => '[ "$(hostname)" == "VM01" ]',
}
如果您在执行的命令中没有使用完全限定的路径,则需要指定路径。
还请注意,由于您没有指定使用哪个发行版:您可能想在更多地方更改主机名,因此它已经使用正确的主机名启动。
但我猜这只是完整清单的一个非常短的片段。