ruby - Puppet list - 'sudo' 命令?

标签 ruby manifest puppet vagrant

我在 Vagrant 中有一个 CentOS base box,我正在用一个 puppet manifest 站起来。以下是目前 list 中的内容:

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 退出。我在网上看过,但我没有找到了解决方案。有帮助吗?

========编辑========= 我阅读了答案并同意 - 谢谢大家。我只是在开发箱上使用它来搞乱,在我开始使用它之前我需要它是最新的。

最佳答案

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

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

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

关于ruby - Puppet list - 'sudo' 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14088651/

相关文章:

ruby - Ruby 中的 proc 和 lambda 有什么区别?

mysql - Datamapper 独特约束和偏执删除

ruby - 当 Ruby 正则表达式不适合在线时

linux - Puppet 主代理配置

ruby - Puppet 模板迭代和 yaml 文件

ruby - 在 Ruby/Sinatra 中解码 Facebook 的签名请求

javascript - Chrome 扩展程序在浏览器操作上注入(inject) javascript 和 Angular 被点击

Android 应用未显示在设备应用仪表板中

Android蓝牙权限未显示,仍描述为打开

vagrant - 如何通过 Vagrantfile 更改文件