我是Puppet的绝对初学者,当我尝试通过apt模块安装软件包时遇到了问题。
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
任何想法我在模块中做错了什么?
在apt::source声明之前,你需要在你的类的顶部添加include apt :错误是说它找不到apt::things因为它不知道更高范围的apt是什么。
include apt将使用各种默认值,如果你想改变它们,你需要使用一个声明,如:
class { 'apt': always_apt_update => true, }
…例如。 有关伪造页面的更多信息。
另外,你的要求是错误的:你也需要指定名称,所以我认为它应该是Apt::Source['newrelic']而不是Class['apt::source'] 。