Puppet이 내 Debian apt source.list를 관리하도록 하려고 하는데 다음 오류로 인해 카탈로그 컴파일이 실패합니다:
오류: 원격 서버에서 카탈로그를 검색할 수 없습니다. 서버의 오류 400: ::apt::config_files는 /etc/puppet/environments/production/modules/apt/manifests/setting에서 목록을 사용하여 액세스할 때 해시 또는 배열이 아닙니다. 노드 [호스트 이름]의 pp:45
::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의 다른 히트작도 있습니다.
apt.pp에서도 시도했지만 include apt
소용이 없었습니다.
답변1
네임스페이스가 문제인 것으로 나타났습니다.
이것이 작동하려면 MODULE 'apt'를 호출해야 합니다. 클래스에 include apt
or 를 지정하여 자신을 포함하거나 호출하려고 합니다. (절대 이름) 으로 변경하면 문제가 해결됩니다.class { 'apt': }
profiles::apt
class { '::apt': }