як встановити шлях при застосуванні одного модуля ляльок?


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
Чи можете ви прийняти відповідну відповідь?
kenorb

Відповіді:


15

Команди в Execресурсі або повинні бути повністю кваліфікованими (тобто /usr/bin/testзамість них test), або pathатрибут цього Execресурсу повинен бути встановлений.

Якщо ви можете змінити маніфест (лялька), ви можете просто додати таке визначення для встановлення pathатрибуту за замовчуванням для всіх Execресурсів до /bin:

Exec { path => "/bin" }

Як (більш-менш) брудне вирішення, ви також можете просто встановити за замовчуванням pathбудь-який Execресурс у командному рядку:

$ puppet apply --verbose -e 'Exec { path => "/bin" }' your_manifest.pp

Показники документації:


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",
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.