Я пытаюсь заставить Puppet управлять моим Debian apt sources.list, однако компиляция каталога завершается с ошибкой:
Ошибка: не удалось получить каталог с удаленного сервера: ошибка 400 на СЕРВЕРЕ: :: apt :: config_files не является хешем или массивом при доступе к нему со списком в / etc / puppet / environment / production / modules / apt / manifest / setting. pp: 45 на узле [hostname]
Я понятия не имею, где мне предоставить :: apt :: config_files или что мне нужно в него вставить. Мои манифесты содержат следующее:
# site.pp
node <hostname> {
include roles::myrole
}
# myrole.pp
class roles::myrole.pp {
include profiles::apt
}
# apt.pp
class profiles::apt {
# Get our apt sources out of Hiera.
$hiera_apt_sources = hiera_hash(apt_sources)
# Create our apt sources.
create_resources(apt::source, $hiera_apt_sources)
}
# hieradata (yaml)
apt_sources:
'debian_stable':
location: 'ftp.be.debian.org/debian/'
release: 'stable'
repos: 'main contrib non-free'
'debian_security':
location: 'security.debian.org'
release: 'updates'
repos: 'main contrib non-free'
Я упустил что-то очевидное? Я просмотрел документацию на кузница и этот пост Puppetlabs и некоторые другие хиты в Google.
Я тоже пытался include apt
в apt.pp, но безрезультатно.
Оказывается, проблема была в пространстве имен.
Для того, чтобы это сработало, мне нужно вызвать МОДУЛЬ 'apt'. Указав include apt
или class { 'apt': }
в классе profiles::apt
, он пытается включить или вызвать себя. Переход на class { '::apt': }
(абсолютное имя) устраняет проблему.