木偶清单 - 'sudo'命令?

时间:2012-12-30 05:53:10

标签: 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

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

====== EDIT ========= 我读了答案,我同意 - 谢谢你们。我只是在开发盒上使用它来乱搞,我需要它在我开始工作之前保持最新状态。

3 个答案:

答案 0 :(得分:11)

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

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

但是,我强烈建议您不要对puppet使用任何类型的非条件exec。这将在每次木偶运行时运行。作为Forrest already said,它不是傀儡的设计目标。我不会使用puppet来yum update,我的exec总是有createsonlyifrefreshonlyunless来确保它们只在需要时运行。

答案 1 :(得分:3)

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

答案 2 :(得分:0)

更新"路径"属性帮助我。 sudo和apt-get命令在 / usr / bin / 路径

中可用
exec { 'autoclean':
        command   => 'apt-get autoclean',
        path      => '/usr/local/bin/:/bin/:/usr/bin/',
        cwd       => '/home',
} 

我的木偶版本:5.5.1

相关问题