2

我对 puppet 很陌生,只是想了解输出告诉我什么。我有一个非常简单的 init.pp 文件来配置 shdders 文件:

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 文件

4

1 回答 1

6
  1. 路径是从资源的位置生成的(其中资源是文件、包、服务等)。在你的情况下:

    • Stage[main]是此资源的默认“阶段”。 阶段允许您将资源分成块,因此阶段 A 中的所有内容都在阶段 B 之前执行(例如,安装包之前的存储库配置等)。“主”阶段是默认设置。
    • Sudo是包含您的资源的类的名称。
    • Package[sudo]是您的资源之一的全名。像这样引用时,类型 ,Package总是大写的。是sudo名称,或称谓。有时标题与资源的实际位置不匹配(例如,文件“foo”实际上位于“/foo/bar”)。
    • ensure是资源的属性或属性。Puppet 通过检查资源上的每个属性并使用提供程序(特定于操作系统的代码)将其从当前值(例如“不存在”)更改为清单中的值(“存在”)来工作。

    当您嵌套语言结构(例如定义)时,路径可能会变得更加复杂 - 但它们都遵循相同的模式。

  2. Puppet 正在寻找一个完全命名为sudo. 可能是您有一个 /etc/sudoers 文件,但该包未命名为 sudo。

    尝试运行puppet resource package以查看 Puppet 可以在您的操作系统上看到哪些包(您没有提到它)。您可以添加--debug它,它还将显示 Puppet 正在运行的命令以获取信息,这可能会帮助您确定它找到了哪个包管理器。

于 2011-11-14T19:50:57.003 回答