如何在puppet中安装两个名称相同但包含两个不同提供程序的程序包?

时间:2013-12-27 21:54:31

标签: packages puppet

我正在尝试安装两件事:

一个名为“mongo”的PHP-PECL模块,以及一个名为“mongo”的yum包。他们需要使用“name”变量来知道包的真实名称是什么,但使用此名称创建的别名puppet使得无法处理多个提供者。

我知道我必须给他们不同的资源名称,所以很自然地,我这样做了:

package { "php-mongo" :
    ensure   => installed,
    provider => 'pecl',
    name     => 'mongo'
}

package { "yum-mongo" :
    ensure   => installed,
    provider => 'yum',
    name     => 'mongo'
}

因为我收到错误:

Cannot alias Package[php-mongo] to ["mongo"] at /etc/puppet/environments/testing/modules/packages/manifests/install.pp:52; resource ["Package", "mongo"] already declared at /etc/puppet/environments/testing/modules/packages/manifests/install.pp:52

如何在不修补stdlib的情况下完成这项工作?我是否需要修改我的提供程序,因此如果我将其包含在名称中以避免冲突,他们可以删除前置的“php-”?这看起来很蠢!

经过研究,这是一个古老的老虫,但我找不到任何方法!

Bug 1398

谢谢!

1 个答案:

答案 0 :(得分:3)

另一种解决方法是使用Exec通过其各自的包管理实用程序安装其中一个包。显然这不是理想的,但它安装了两个软件包而没有名称冲突。