
我在啟動 Puppet 代理程式時遇到問題。我將使用具有 --onetime 參數的代理,因為我希望代理拉取其配置而不是 Puppet Master 推送。
我在 Debian 主機上使用 Puppet 2.73 版本作為 master 和 agent。
我所處的環境必須記錄與 puppet 代理執行有關的每個使用者操作,因此 sudo 似乎是啟動 Puppet 代理程式的明顯選擇。
但是,當以 sudo 身分啟動 Puppet 代理程式時,我收到一些錯誤:
user@puppetagent$ sudo puppet agent --onetime
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/hostname
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/hostname
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/dnsdomainname
/usr/lib/ruby/vendor_ruby/puppet/util.rb:215: command not found: /bin/hostname
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
/usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s
Could not prepare for execution: could not create PID file: /var/run/puppet/agent.pid
當我以 root 身分執行相同的操作時,沒有任何問題。
我讀了一些木偶實驗室文件(我現在找不到),其中提到使用 sudo 命令運行代理可能是不可能的。
所以我的問題:是否可以透過運行 sudo 以非特權用戶身份運行木偶代理?如果是這樣,我必須對 sudoers 檔案進行什麼樣的更改(假設這是需要修改的內容)。
如果這是不可能的,任何人都可以建議一些替代方案:1)一次僅在一台主機上運行木偶代理,以便拉取配置;2)記錄此操作。
答案1
我沒有得到「一次一個主機」的要求。 Puppet 完全能夠同時服務和記錄多個 Puppet 代理程式運作。
只是為了排除這是環境問題,請運行sudo -i <command>
.
無論如何,在推送模式下使用 Puppet 可能更適合您的需求。 puppet 代理程式(您需要先重新配置)將偵聽來自 puppetmaster 的連接,使其啟動 puppet 運行。
您可以透過puppet kick
在 puppetmaster 上運行來完成此操作。
書面記錄是由上傳到 master 的客戶端報告產生的,並且auditd(在客戶端和 master 上)記錄到 syslog 伺服器(sudo 的日誌記錄不是那可靠)追蹤您發出的命令。