我正在尝试让 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::apt
class { '::apt': }