我对木偶很新,只是想了解输出告诉我的内容。我有一个非常简单的init.pp文件来配置shudders文件:
class sudo {
package { sudo:
ensure => present,
}
if $operatingsystem == "Ubuntu" {
package { "sudo-ldap":
ensure => present,
require => Package["sudo"],
}
}
file { "/etc/sudoers":
owner => "root",
group => "wheel",
mode => 0440,
source => "puppet:///modules/sudo/sudoers",
require => Package["sudo"],
}
但是每当我运行以下命令时:
sudo puppet agent --server=my-imac.local --no-daemonize --verbose --onetime --noop
我得到以下输出:
info: Caching catalog for susan-hirschs-imac.local
info: Applying configuration version '1321294018'
notice: /Stage[main]/Sudo/Package[sudo]/ensure: current_value absent, should be present (noop)
notice: Class[Sudo]: Would have triggered 'refresh' from 1 events
notice: Stage[main]: Would have triggered 'refresh' from 1 events
notice: Finished catalog run in 0.07 seconds
我有两个问题:
1)我如何解释这条路径:/Stage[main]/Sudo/Package[sudo]/ensure
2)为什么它告诉我当前的价值不存在?我在/ etc / sudoers
有一个sudoers文件答案 0 :(得分:6)
路径是从资源的位置生成的(资源是文件,包,服务等)。在你的情况下:
Stage[main]
是此资源的默认“阶段”。 Stages允许您将资源分成块,因此阶段A中的所有内容都在阶段B之前执行(例如,在安装包之前的存储库配置等)。 “主要”阶段是默认阶段。Sudo
是包含您资源的类的名称。Package[sudo]
是您的某个资源的全名。当这样引用时,类型Package
总是大写。 sudo
是名称或标题。有时标题与资源的实际位置不匹配(例如,您可以将文件“foo”实际上放在“/ foo / bar”)。ensure
是资源的属性或属性。 Puppet通过检查资源上的每个属性并使用提供程序(特定于操作系统的代码)将其从当前值(例如“缺席”)更改为清单中的属性(“present”)来工作。当您嵌套语言结构(例如定义)时,路径会变得更复杂,但它们都遵循相同的模式。
Puppet正在寻找一个名为sudo
的软件包。可能是您有/ etc / sudoers文件,但该包未命名为sudo。
尝试运行puppet resource package
以查看Puppet在您的操作系统上可以看到的软件包(您没有提及它)。您可以添加--debug
,它还会显示Puppet正在运行的命令以获取信息,这可能有助于您找出它找到的软件包管理器。