2011-11-14 112 views
2

我對傀儡很新,只是想了解輸出告訴我什麼。我有一個非常簡單的init.pp文件用於配置顫抖文件:破譯傀儡輸出

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 

我有2個問題:

1)如何解釋此路徑:/Stage[main]/Sudo/Package[sudo]/ensure

2)爲什麼它告訴我目前的價值不存在?我在的/ etc/sudoers的

回答

6
  1. 的路徑來自所述資源(其中資源是一個文件,包,服務等)的位置所產生的sudoers文件。在你的情況下:

    • Stage[main]是此資源的默認「階段」。 Stages可讓您將資源分成塊,因此階段A中的所有內容都在階段B之前執行(例如在安裝軟件包之前的存儲庫配置等)。 「主」階段是默認階段。
    • Sudo是包含您的資源的類的名稱。
    • Package[sudo]是您的其中一個資源的全名。類型,Package,總是大寫,如此引用。 sudo是名稱或標題。有時標題與資源的真實位置不匹配(例如,您可能在「/ foo/bar」處實際存在文件「foo」)。
    • ensure是資源的屬性或屬性。 Puppet通過檢查資源上的每個屬性並使用提供者(操作系統特定代碼)將其從當前值(例如「缺席」)更改爲清單中的值(「現在」)來工作。

    當您嵌套語言結構(如定義)時,路徑會變得更加複雜 - 但它都遵循相同的模式。

  2. Puppet正在尋找一個名爲sudo的軟件包。這可能是因爲你有一個/ etc/sudoers文件,但這個軟件包沒有命名爲sudo。

    嘗試運行puppet resource package以查看Puppet可以在您的操作系統上看到哪些軟件包(您沒有提及它)。您可以添加--debug,它還會顯示Puppet正在運行的命令以獲取信息,這可能會幫助您確定找到哪個程序包管理器。

+0

非常感謝!這是一個很好的迴應!比我找到的任何文件都更徹底。出於好奇,你從哪裏獲得你的傀儡知識? – ennuikiller

+1

很高興幫助。主要是自學,儘管幾年前現在。對於開始,我會建議新版學習木偶教程(http://docs.puppetlabs.com/learning/),但解釋了一些有用的概念。還有兩本相當新的書,Pro Puppet和Puppet Cookbook,都應該是好的。 –