7

我在 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,我收到一个错误,sudocmdyum update以 1 退出。我在网上查看过,但我还没有找到解决方案。有什么帮助吗?

========EDIT========= 我阅读了答案并同意-谢谢大家。我只是在开发盒上使用它来搞乱,我需要它是最新的,然后才开始研究它。

4

3 回答 3

11

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

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

但是,我强烈建议您不要对execpuppet 使用任何类型的非条件。每次 puppet 运行时都会运行。正如Forrest 已经说过的,这不是 puppet 的设计目的。我不会将 puppet 用于 a yum update,而我exec的 s 总是有creates, onlyifrefreshonly或者unless确保它们仅在需要时运行。

于 2012-12-31T05:49:04.360 回答
3

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

于 2012-12-30T22:39:24.543 回答
0

更新“路径”属性对我有帮助。sudo 和 apt-get 命令在/usr/bin/路径中可用

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

我的木偶版本:5.5.1

于 2018-04-24T23:28:09.940 回答