我对木偶很新,只是想了解输出告诉我的内容.我有一个非常简单的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"],
}
Run Code Online (Sandbox Code Playgroud)
但是每当我运行以下命令时:
sudo puppet agent --server=my-imac.local --no-daemonize --verbose --onetime --noop
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
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
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
1)我该如何解释这条路径: /Stage[main]/Sudo/Package[sudo]/ensure
2)为什么告诉我当前的价值不存在?我在/ etc/sudoers上有一个sudoers文件
路径是从资源的位置生成的(资源是文件,包,服务等).在你的情况下:
Stage[main]是此资源的默认"阶段". 阶段允许您将资源分成块,因此阶段A中的所有内容都在阶段B之前执行(例如,在安装包之前的存储库配置等)."主"阶段是默认阶段.Sudo 是包含您的资源的类的名称.Package[sudo]是您的一个资源的全名.Package当这样称为时,类型始终大写.这sudo是名称或标题.有时标题与资源的实际位置不匹配(例如,您可以将文件"foo"实际上放在"/ foo/bar").ensure是资源的属性或属性.Puppet通过检查资源上的每个属性并使用提供程序(特定于操作系统的代码)将其从当前值(例如"缺席")更改为清单中的一个("存在")来工作.当您嵌套语言结构(例如定义)时,路径会变得更复杂 - 但它们都遵循相同的模式.
Puppet正在寻找一个完全命名的包sudo.可能是您有/ etc/sudoers文件,但该包未命名为sudo.
尝试运行puppet resource package以查看Puppet在您的操作系统上可以看到的包(您没有提到它).您可以添加--debug它,它还将显示Puppet正在运行的命令以获取信息,这可能有助于您找出它找到的软件包管理器.