Puppet apt 모듈 사용

Puppet apt 모듈 사용

저는 Puppet의 완전 초보자인데 apt-module을 통해 패키지를 설치하려고 할 때 문제가 있습니다.

class newrelic {
        apt::source {
                'newrelic':location => 'http://apt.newrelic.com/debian/',
                repos => 'non-free',
                key => '548C16BF',
                key_source => 'https://download.newrelic.com/548C16BF.gpg',
                include_src => false,
                release => 'newrelic',
        }
        package {
                'newrelic-sysmond':ensure => 'present',
                notify => Service['newrelic-sysmond'],
                require => Class['apt::source'],
        }
        service {
                'newrelic-sysmond':ensure => 'running',
                enable => true,
                hasrestart => true,
                hasstatus => true,
                require => Exec['newrelic_config'],
        }
        exec {
                'newrelic_config':path => '/bin:/usr/bin',
                command => "/usr/sbin/nrsysmond-config --set license_key=xxxxxxx",
                user => 'root',
                group => 'root',
                require => Package['newrelic-sysmond'],
                notify => Service['newrelic-sysmond'],
        }
}

내가 받은 오류는 다음과 같습니다.

Warning: Scope(Class[Apt::Update]): Could not look up qualified variable '::apt::always_apt_update'; class ::apt has not been evaluated
Warning: Scope(Class[Apt::Update]): Could not look up qualified variable 'apt::update_timeout'; class apt has not been evaluated
Warning: Scope(Class[Apt::Update]): Could not look up qualified variable 'apt::update_tries'; class apt has not been evaluated
Notice: Compiled catalog for host.domain.local in environment production in 0.33 seconds
Error: Could not find dependency Class[Apt::Source] for Package[newrelic-sysmond] at /home/jeroen/puppet/modules/newrelic/manifests/init.pp:16

내 모듈에서 내가 뭘 잘못하고 있는지 아시나요?

답변1

include apt선언 앞에 클래스 맨 위에 추가해야 합니다 . 더 높은 범위가 무엇인지 모르기 때문에 apt::source찾을 수 없다는 오류가 발생합니다 .apt::thingsapt

에서는 include apt다양한 기본값을 사용합니다. 이를 변경하려면 대신 다음과 같은 선언을 사용해야 합니다.

class { 'apt':
    always_apt_update => true,
}

...예를 들어. 자세한 내용은위조 페이지.

또한 귀하의 요구사항이 잘못되었습니다. 이름도 지정해야 하므로 Apt::Source['newrelic']대신 이어야 한다고 생각합니다 Class['apt::source'].

관련 정보