У меня есть команда exec для изменения имени хоста. Я хочу выполнить это только в том случае, если имя хоста не то, что должно быть:
exec { 'update hostname':
command => 'sudo hostname VM01',
unless => '[[ "$(hostname)" == "VM01" ]]';
}
Сейчас [[ "$(hostname)" == "VM01" ]]
Кажется, что команда работает так, как ожидалось, если я выполняю ее вручную, но Puppet игнорирует ее.
Я также пробовал:
test "$(hostname)" == "VM01"
test $(hostname) == "VM01"
[ <(hostname) == "VM01" ]
[ hostname == "VM01" ]
Может кто-нибудь указать на мою ошибку, я просто не понимаю.
Было бы хорошо, если бы вы также разместили полученное сообщение об ошибке.
Этот код работает для меня:
exec { 'update hostname':
command => 'hostname VM01',
path => '/usr/bin:/usr/sbin/:/bin:/sbin',
unless => '[ "$(hostname)" == "VM01" ]',
}
Вам необходимо указать путь, если вы не используете полностью определенные пути в выполняемых командах.
Также обратите внимание, поскольку вы не указали, какой дистрибутив вы используете: вы, вероятно, захотите изменить имя хоста в других местах, чтобы он загружался уже с правильным именем хоста.
Но я предполагаю, что это всего лишь очень короткий фрагмент вашего полного манифеста.