2012-12-30 56 views
6

我在流浪汉中有一个CentOS基础盒子,我用木偶清单站立起来。下面是在清单什么是迄今:木偶清单 - 'sudo'命令?

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 

但是,当我说vagrant up,我得到sudocmd yum update退出了1我看了网络上的错误,但我还没有找到一个解决方案这还没有。任何帮助?

========编辑========= 我阅读答案,我同意 - 谢谢你们。我只是在开发箱上使用它来解决这个问题,我需要在开始工作之前对其进行更新。

回答

3

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

11

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

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

不过,我强烈建议您不要使用任何类型的非条件exec傀儡。每次傀儡运行时都会运行。由于Forrest already said,这不是什么木偶设计的。我不会使用木偶作为yum update,而我的exec总是有creates,onlyif,refreshonlyunless以确保它们只在需要时运行。