gpt4 book ai didi

linux - Puppet:设置环境变量和启动应用程序 - 变量未定义

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:25 26 4
gpt4 key购买 nike

我正在使用 Puppet 来配置我的 Vagrant 盒子。在一些其他任务中,main.pp 文件正在创建 /etc/environments 文件,然后守护我正在运行的 node.js 应用程序。节点应用程序需要一些环境变量,但它们返回未定义。

相关的 main.pp 片段:

class environment {
file { "/etc/environment":
ensure => present,
source => 'puppet:///modules/environment/dev.env'
}
}

class application {
exec { "Daemonize API" :
cwd => "/vagrant/api",
command => "npm run watch",
onlyif => ["test -d /vagrant/api/node_modules"],
path => ["/bin", "/usr/bin"],
require => Package['nodejs']
}
}

环境类设置的一个变量特别是 NODE_ENV 到开发。

如果我vagrant sshecho $NODE_ENV,返回development,但是应用console.logs 未定义

如果我终止守护进程并重新启动应用程序,一切都会再次变得洁净。

我怎样才能得到它,以便在提供时正确设置环境变量,并且当应用程序被守护进程时,它可以在启动时访问它们?

最佳答案

运行您的 exec 的 shell 似乎不支持 /etc/environment

有两种方法可以解决这个问题。

明确使用环境

写一个封装脚本来做一个

. /etc/environment

在正确调用 npm 之前。

通过 list 设置所需的变量

environment 参数传递给 exec,如下所示:

exec { 'Daemonize API':
environment => [ 'NODE_ENV=development, ],
...
}

This answer可能是相关的。

关于linux - Puppet:设置环境变量和启动应用程序 - 变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28929438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com