Я пытаюсь запустить один такой модуль:
puppet apply --verbose --modulepath=moduleshere --noop -e 'include myclass'
Однако я получаю такую ошибку, указывающую, что путь не установлен
Parameter unless failed: '[ -e "${logfile}" ]' is not qualified and no path was specified. Please qualify the command or specify a path.
Я не хочу явно указывать путь в каждом таком месте, и он отлично работает при запуске как часть полного запуска марионетки. Как я могу указать путь при запуске одного модуля?
Команды в Exec
ресурс должен быть полностью квалифицированным (т. е. /usr/bin/test
вместо того test
) или path
атрибут этого Exec
ресурс должен быть установлен.
Если вы можете изменить манифест (ы) Puppet, вы можете просто добавить следующее определение для установки значения по умолчанию path
атрибут для всех Exec
ресурсы для /bin
:
Exec { path => "/bin" }
В качестве (более или менее) грязного обходного пути вы также можете просто установить значение по умолчанию path
для любого Exec
ресурс в командной строке:
$ puppet apply --verbose -e 'Exec { path => "/bin" }' your_manifest.pp
Указатели документации:
Это .. не должно работать как часть полного цикла. Требуется полный путь к исполняемому файлу в unless
команда. Может быть, у вас есть путь, заданный в глобальном файле, который является частью ваших полных запусков?
Пытаться unless => '/usr/bin/[ -e "${logfile}" ]'
вместо этого.
Я согласен с Шейном в том, что путь по умолчанию, вероятно, установлен в манифесте с глобальной областью действия. Вы можете сделать то же самое, но вы не можете передать его в качестве аргумента, поэтому либо используйте stdin:
$ puppet apply -v --modulepath=moduleshere --noop <<EOF
Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin" }
include myclass
EOF
или поместите Exec и включите строки в example.pp
а затем используйте puppet apply -v ... example.pp
.
Вам необходимо использовать полностью определенный путь.
Например:
exec { "sample":
command => "/usr/bin/test",
}
или:
exec { "sample":
path => ['/usr/bin', '/usr/sbin', '/bin'],
command => "test",
}