Puppet で Debian apt のソース リストを管理しようとしていますが、カタログのコンパイルが次のエラーで失敗します。
エラー: リモート サーバーからカタログを取得できませんでした: サーバーでエラー 400 が発生しました: ノード [hostname] の /etc/puppet/environments/production/modules/apt/manifests/setting.pp:45 でリストを使用してアクセスしたときに、::apt::config_files はハッシュまたは配列ではありません
::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でも試してみましたが、うまくいきませんでした。
答え1
名前空間が問題だったことが判明しました。
これを機能させるには、MODULE 'apt' を呼び出す必要があります。クラス でinclude apt
または を指定すると、それ自体をインクルードするか、呼び出すことが試行されます。(絶対名) に変更すると、問題は解決します。class { 'apt': }
profiles::apt
class { '::apt': }