我对 Puppet 完全陌生,所以如果这个问题不够规范,我很抱歉,哈哈。我正在尝试使用 Boxen 设置我的新 Macbook Pro。我找到了一个脚本这将帮助我操作 dock 中的内容。我不确定如何运行它,所以我只是将它复制到script
我的 Boxen repo 目录中。然后,我尝试按如下方式使用它:
# 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',
}
}
然后我将按如下方式使用它manifests/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
脚本。在 node 中是否有等效项__dirname
,您可以在其中获取当前所在文件的目录? - 有没有更好的方法来询问软件包
webstorm
将被安装到哪里,而不是硬编码路径? - 还有比这个更好的地方可以
dockutils
存放脚本吗?
谢谢!
然而却给了我一个负面评价:介意留下一些反馈以便我可以改进吗?
答案1
我不太喜欢使用绝对路径来查找 dockutil 脚本。
您可以通过为执行程序设置资源默认值来部分解决此问题。具体来说,您可以设置路径。也许可以设置类似这样的内容?
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",
}
}