Puppet で apt ソースを管理しようとして失敗しました

Puppet で apt ソースを管理しようとして失敗しました

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 aptapt.ppでも試してみましたが、うまくいきませんでした。

答え1

名前空間が問題だったことが判明しました。

これを機能させるには、MODULE 'apt' を呼び出す必要があります。クラス でinclude aptまたは を指定すると、それ自体をインクルードするか、呼び出すことが試行されます。(絶対名) に変更すると、問題は解決します。class { 'apt': }profiles::aptclass { '::apt': }

関連情報