Я знаю, как можно использовать упорядочение ресурсов в 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, потому что haproxy недоступен в стандартном репозитории wheezy. Итак, я хочу указать, что мой класс haproxy зависит от моего типа apt :: source, определяющего бэкпорты wheezy.
Я пробовал что-то наивное вроде
Class['apt::source'] -> Class['haproxy']
но логически это не имеет смысла: я хочу указать один конкретный экземпляр apt :: source.
Кто-нибудь знает, как я могу это сделать?
Спасибо
Когда вы объявляете класс haproxy, вы можете потребовать его, например:
class { 'haproxy':
require => Apt::Source['debian_wheezy'],
}
Вы можете поставить соответствующие apt::source
ресурс в собственном классе. Пример:
myapt:
require myapt::default
require myapt::backports
myapt :: default:
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': }