Ich versuche, Puppet dazu zu bringen, meine Debian-Apt-Quellenliste zu verwalten, die Katalogkompilierung schlägt jedoch mit diesem Fehler fehl:
Fehler: Katalog konnte nicht vom Remote-Server abgerufen werden: Fehler 400 auf SERVER: ::apt::config_files ist kein Hash oder Array beim Zugriff mit Liste unter /etc/puppet/environments/production/modules/apt/manifests/setting.pp:45 auf Knoten [Hostname]
Ich habe keine Ahnung, wo ich ::apt::config_files bereitstellen soll oder was ich darin ablegen muss. Meine Manifeste enthalten Folgendes:
# 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'
Übersehe ich hier etwas Offensichtliches? Ich habe die Dokumentation unter durchgesehendie SchmiedeUnddieser Puppetlabs-Beitragund einige andere Treffer bei Google.
Ich habe es auch include apt
in apt.pp versucht, aber ohne Erfolg.
Antwort1
Es stellte sich heraus, dass das Problem im Namespace lag.
Damit dies funktioniert, muss das MODUL „apt“ aufgerufen werden. Durch die Angabe von include apt
oder class { 'apt': }
in der Klasse profiles::apt
versucht es, sich selbst einzubinden oder aufzurufen. Die Änderung auf class { '::apt': }
(absoluter Name) behebt das Problem.