Назад | Перейти на главную страницу

как установить путь при применении одиночного марионеточного модуля?

Я пытаюсь запустить один такой модуль:

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",
}