我在启动 Puppet 代理时遇到问题。我将使用带有 --onetime 参数的代理,因为我希望代理拉取其配置,而不是 Puppet Master 推送。
我在 Debian 主机上主控和代理均使用 Puppet 版本 2.73。
我所处的环境中必须记录与 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 身份执行相同操作时,没有任何问题。
我阅读了一些 puppet labs 文档(现在找不到),其中提到使用 sudo 命令运行代理可能无法实现。
所以我的问题是:是否可以通过运行 sudo 以非特权用户身份运行 puppet 代理?如果是这样,我必须对 sudoers 文件进行哪些更改(假设这是需要修改的内容)。
如果这不可能,有人可以建议一些替代方案:1)一次只在一台主机上运行 Puppet 代理,以便提取配置;2)记录此操作。
答案1
我不明白“一次一个主机”的要求。Puppet 完全有能力同时服务和记录多个 Puppet 代理的运行。
为了排除这是环境问题,请运行sudo -i <command>
。
无论如何,使用推送模式的 Puppet 可能更适合您的需求。Puppet 代理(您需要先重新配置)将监听来自 Puppetmaster 的连接,使其启动 Puppet 运行。
您可以通过运行puppet kick
puppetmaster 来做到这一点。
纸质记录由客户端的报告生成,该报告上传到主服务器,并由客户端和主服务器的 auditd 记录到 syslog 服务器(sudo 的日志记录不是那可靠)跟踪您发出的命令。