Puppet exec 类型似乎忽略了 except 属性

Puppet exec 类型似乎忽略了 except 属性

我有一个 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" ]',
}

如果您在执行的命令中没有使用完全限定的路径,则需要指定路径。

还请注意,由于您没有指定使用哪个发行版:您可能想在更多地方更改主机名,因此它已经使用正确的主机名启动。
但我猜这只是完整清单的一个非常短的片段。

相关内容