木偶清单 - 'sudo'命令?

Geo*_* K. 7 ruby manifest puppet vagrant

我在Vagrant有一个CentOS基础盒,我正站起来用木偶清单.到目前为止,这是清单中的内容:

class base {
    exec { "sudocmd":
        path => ["/usr/bin/","/usr/sbin/","/bin"],
        command => "sudo yum update -y",
    }

    package { "man":
        ensure => present,
    }

    package { "bind":
        ensure => present,
    }

    package { "bind-utils":
        ensure => present,
    }
}

include base
Run Code Online (Sandbox Code Playgroud)

但是,当我说vagrant up,我得到一个错误,sudocmd yum update退出1.我已经在网上看了,但我还没有找到解决方案.有帮助吗?

========编辑=========我读了答案,我同意 - 谢谢你们.我只是在开发盒上使用它来乱搞,我需要它在我开始做它之前是最新的.

fre*_*eit 11

使用puppet,您不需要使用sudo,只需yum直接运行命令即可.通常,命令默认以root身份运行,但您可以指定用户.

exec { "sudocmd":
    path => ["/usr/bin/","/usr/sbin/","/bin"],
    command => "yum update -y",
    user => root,
}
Run Code Online (Sandbox Code Playgroud)

但是,我强烈建议你不要使用任何一种非条件exec的木偶.这将在每次木偶运行时运行.正如福雷斯特已经说过的那样,这不是傀儡的设计目标.我不会用的傀儡了yum update,而我exec总是有creates,onlyif,refreshonlyunless以确保它们仅在需要时运行.


For*_*est 3

因此,Puppet 并不是真正要执行 yum 更新之类的任务。它是一个配置管理工具,并不能完全取代此类任务。此外,您还会遇到很多问题。如果 Puppet 被守护进程怎么办?这会对我们的生产环境产生负面影响吗?如果用户意外运行 Puppet 并且它更新了破坏我们脚本(JDK、MySQL、PHP 等)的包,会发生什么情况。据我所知,这个问题没有解决方案,因为它实际上并不被认为是一个问题。Scott Pack 在Serverfault上对类似问题提供了非常描述性的答案。