我们正在编写一个木偶清单,该清单将在Mac OS X中安装解压缩和其他一些工具,木偶清单如下所示。
$packages = ['lsof','unzip','sysstat','telnet', 'git', 'less', 'tree', 'zip']
package {
$packages:
ensure => installed,
provider => 'brew',
}
但当我运行这个程序时,它会给出如下错误,
Error: Failed to apply catalog: Parameter provider failed on Package[lsof]: Invalid package provider 'brew' at /home/rajeevan/appfactory/modules/wso2base/manifests/packages.pp:9
Wrapped exception:
Invalid package provider 'brew'
Wrapped exception:
Invalid package provider 'brew'
然后我们执行命令
brew install unzip
只是为了确保解压工具被安装,但它没有。
我在谷歌上搜索了一下,找到了一个解决方案
$ brew tap homebrew/dupes
$ brew install unzip
这很好,但就木偶而言,如何在我的木偶清单中做到这一点?
我自己在谷歌上的快速搜索表明,如果你使用boxen自制软件模块,你可以编写这样的清单:
homebrew::tap { 'homebrew/dupes': }
->
package {
$packages:
ensure => installed,
provider => 'homebrew',
}
如果不能做到这一点,您可能会回到exec
类型。
exec { 'brew tap homebrew/dupes': ... }
->
package {
...
}
但是,您可以为exec
声明合适的查询,以确定它何时需要运行,或者它是否已经同步。