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

12

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

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.

Я не хочу явно указывать путь в каждом таком месте, и он прекрасно работает, когда выполняется как часть полного запуска кукол. Как я могу указать путь при запуске одного модуля?

Коза Гесс
источник
1
Не могли бы вы принять соответствующий ответ?
Кенорб

Ответы:

15

Команды в 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

Указатели документации:

Joschi
источник
2

Это .. не должно работать как часть полного цикла. Ему нужен полный путь к исполняемому файлу в unlessкоманде. Может быть, у вас есть путь в глобальном файле, который является частью ваших полных прогонов?

Попробуй unless => '/usr/bin/[ -e "${logfile}" ]'вместо этого.

Шейн Мэдден
источник
1

Я согласен с Шейном, что путь по умолчанию, вероятно, задан в манифесте с глобальной областью действия. Вы можете сделать то же самое, но вы не можете передать это в качестве аргумента, поэтому либо используйте 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.

Доминик Клил
источник
1

Вам нужно использовать полный путь.

Например, либо:

exec { "sample":
  command => "/usr/bin/test",
}

или:

exec { "sample":
  path    => ['/usr/bin', '/usr/sbin', '/bin'],
  command => "test",
}
kenorb
источник