尝试使用 Puppet 管理 apt 源失败

尝试使用 Puppet 管理 apt 源失败

我正在尝试让 Puppet 管理我的 Debian apt sources.list,但是目录编译失败并出现以下错误:

错误:无法从远程服务器检索目录:服务器上出现错误 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::aptclass { '::apt': }

相关内容