我知道如何使用 Puppet 中的资源排序来对内置类型(用户、组、cron……)或类进行排序,但我想知道如何针对类的特定实例进行排序。
例如,我使用 puppetlabs/apt 模块和 apt::source 定义类型来推送 wheezy/updates/... apt 源。我的代码如下
apt::source { 'debian_wheezy':
location => 'http://ftp.debian.org/debian/',
release => 'wheezy',
repos => 'main contrib non-free',
include_src => false,
}
apt::source { 'debian_wheezy_updates':
location => 'http://ftp.debian.org/debian/',
release => 'wheezy-updates',
repos => 'main contrib non-free',
include_src => false,
}
我想使用另一个模块来配置 HAProxy,但我需要定义另一个 apt::source 来配置 wheezy backports,因为 haproxy 在标准 wheezy 存储库中不可用。所以我想指出我的 haproxy 类依赖于定义 wheezy backports 的 apt::source 类型。
我尝试过一些天真的事情,比如
Class['apt::source'] -> Class['haproxy']
但从逻辑上来说这没有意义:我想指定一个 apt::source 的特定实例。
有人知道我该怎么做吗?
谢谢
答案1
当你声明 haproxy 类时你可以需要它,例如:
class { 'haproxy':
require => Apt::Source['debian_wheezy'],
}
答案2
您可以将相关apt::source
资源放入其自己的类中。例如:
我的公寓:
require myapt::default
require myapt::backports
myapt ::默认:
apt::source { 'debian_wheezy':
location => 'http://ftp.debian.org/debian/',
release => 'wheezy',
repos => 'main contrib non-free',
include_src => false,
}
apt::source { 'debian_wheezy_updates':
location => 'http://ftp.debian.org/debian/',
release => 'wheezy-updates',
repos => 'main contrib non-free',
include_src => false,
}
myapt::backports:
apt::source { 'debian_wheezy_backports':
location => 'http://ftp.debian.org/debian/',
release => 'wheezy-backports',
repos => 'main contrib non-free',
include_src => false,
}
myhaproxy:
require myapt::backports
class { 'haproxy': }