puppet:类“实例”的执行顺序

puppet:类“实例”的执行顺序

我知道如何使用 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': }

相关内容