Puppet: Выполнить сценарий относительно файла [закрыто]

Я новичок в Puppet, так что извините, если этот вопрос даже не правильно сформулирован, ха-ха. Я пытаюсь использовать Boxen для настройки своего нового Macbook Pro. Я нашел скрипт , который поможет мне управлять тем, что находится в доке. Я не знал, как его запустить, поэтому просто скопировал его в каталог script в моем репозитории Boxen. Затем я попытался использовать его следующим образом:

# Public: Add a new app to the dock
define dock-app($app = $title) {
    exec { "Add $app to dock":
        command => '/opt/boxen/repo/script/dockutil add',
    }
}

# Public: Remove all existing apps from the dock
class my-osx::dock::clear() {
    exec { 'Clear existing dock app':
        command => '/opt/boxen/repo/script/dockutil remove --all',
    }
}

А затем я использовал бы его следующим образом в manifest / site.pp :

  include webstorm
  include chrome
  include chrome::canary

  include my-osx::dock::clear

  dock-app { '/Applications/"Google Chrome".app': }
  dock-app { '/Applications/"Google Chrome Canary".app': }
  dock-app { '/Applications/Webstorm.app': }
  dock-app { '/Applications/Utilities/Terminal.app': }

(Опять же, я действительно понятия не имею, что делаю , поэтому, пожалуйста, скажите мне лучший способ, если вы знаете об одном хаха.)

Кажется, это работает без ошибок, однако у меня есть несколько нерешенных вопросов:

  • Я не доволен необходимостью использовать абсолютный путь чтобы найти скрипт dockutil .Есть ли эквивалент __ dirname в узле, где вы можете получить каталог текущего файла, в котором вы находитесь?
  • Есть ли лучший способ запросить пакеты вроде webstorm , где они будут установлены вместо жесткого программирования пути?
  • Есть ли лучшее место для скрипта dockutils ?

Спасибо!

Тем не менее дал мне проходной отрицательный голос: Не могли бы вы оставить отзыв, чтобы я мог улучшить?

-3
задан 11 October 2014 в 00:07
1 ответ

Меня не устраивает необходимость использования абсолютного пути для поиска скрипта dockutil.

Вы можете частично решить эту проблему, установив ресурс по умолчанию для вашего exec. В частности, вы можете указать путь. Возможно, установить что-то подобное?

Exec {
  path => ['/opt/boxen/repo/script/', '/usr/sbin', '/usr/bin', '/sbin', '/bin']
}

Если вы создали пользовательский факт для сообщения каталога вашего dockutils скрипта на удаленном хосте, вы можете переписать свою конфигурацию таким образом. Вы должны быть немного осторожны с этим. Удаленно возможно, что у вас может быть неверное / поврежденное значение факта.

define dock-app($app = $title) {
    exec { "Add $app to dock":
        command => "$::dockerpath/dockutil add",
    }
}
2
ответ дан 5 December 2019 в 21:56

Теги

Похожие вопросы