【问题标题】:Set cron environment variable with puppet使用 puppet 设置 cron 环境变量
【发布时间】:2013-10-24 19:22:46
【问题描述】:

我对使用 puppet cron 类型的 environment attribute 感到困惑。设置 PATH 似乎是一个奇怪的地方,因为如果我有多个要设置的 cron 作业,它们似乎会发生冲突。除了每个 cron 作业的特定任务之外,它不应该设置在一个对用户的所有 cron 作业都是全局的位置吗?

【问题讨论】:

    标签: cron crontab puppet


    【解决方案1】:

    Ben,在我看来,这对于 cron 作业非常有意义。考虑这个,作为一个例子:有一个名为 Composer 的工具用于 PHP 中的依赖项管理,并说我想通过 cron 安排对我的依赖项的自动更新。如果有许多依赖项和/或更新它们的时间太长,则该工具将超时,这就是它接受 COMPOSER_PROCESS_TIMEOUT 环境变量的原因。因此通过设置

    environment => 'COMPOSER_PROCESS_TIMEOUT=2000',
    

    我会有效地更改这种特殊情况的超时时间而不涉及其他任何内容。

    希望它是有意义的,并澄清了一点。

    【讨论】:

    • 我了解您为什么可能要为特定的 cron 作业设置环境变量,但我仍然不明白如何设置影响多个 cron 作业(如 PATH)的全局环境变量。这就是这个问题真正要问的部分。
    • Ben,再读一遍你的问题,我唯一能想到的就是:Cron { environment => 'PATH=/bin:/usr/bin:/usr/sbin ', } 这将为所有 cron 资源设置“环境”,我相信您可以通过连接到默认值来添加更多环境变量,如下所示: cron { "my-command" environment +> '...', }
    • 这不起作用:“所有资源规范都需要名称”。如果我指定一个名称,那么我得到:“-”:15:crontab 文件中的错误命令错误,无法安装。
    【解决方案2】:

    我不相信环境变量会相互冲突。 cron 资源似乎在命令执行时设置了变量。所以它不应该在其他 cron 作业期间说设置。

    例如。

    # Puppet Name: pe-mcollective-metadata
    0,15,30,45 * * * * /opt/puppet/sbin/refresh-mcollective-metadata
    # Puppet Name: report_baseline
    0 20 * * * PATH=/opt/puppet/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin /opt/puppet/bin/puppet inspect 1> /dev/null
    

    因此您可以在此处看到 refresh-mcollective-metadata 作业在运行时没有设置 PATH 变量,但 report_baseline 作业有。

    【讨论】:

    • 我也对此进行了测试,在 Ubuntu/Puppet 3.3 上,环境变量在之前作业的单独行中设置。
    猜你喜欢
    • 2013-03-04
    • 2012-10-05
    • 1970-01-01
    • 2012-05-21
    • 2015-10-21
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多