chef-infra - Chef : Setting environment variables

标签 chef-infra

我需要在我的 Centos/7 机器上设置操作系统环境变量。

我已经在我的 variables.rb 文件上尝试过使用它:

host = 'locahost'
port = 9201

ENV['LV_ES_HOST'] = host
ENV['LV_ES_PORT'] = '#{port}'

尽管如此,在 shell 上:

$ echo $LV_ES_HOST

$
  1. 如何设置操作系统环境变量?
  2. 是否可以设置仅对用户可见的操作系统环境变量?

我需要一个操作系统可用的环境变量,以便我的 jee 应用程序能够读取其值。

我在我的计算机上运行多个 jee 容器,并且应用程序运行时需要获取 LC_ES_HOST 环境变量。

最佳答案

另一个问题并没有真正解释根本问题。 Unix 环境变量在 fork() 期间从父进程继承到子进程。因此,当您在 Chef 代码中通过 ENV 设置内容时,它确实会影响 Chef 下的子进程,就像通过 execute 资源运行的内容一样。但是,当您通过 SSH 登录时,您的 shell 不是 chef-client 的子进程,因此这些变量不可见。不幸的是,Unix 没有针对全局环境变量的通用解决方案,因此您需要选择众多折衷方案之一,这些折衷方案已在另一个问题中列出。

关于chef-infra - Chef : Setting environment variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42645178/

相关文章:

chef-infra - 如何使用 Chef 配置服务器?

chef-infra - 如何在 Chef 中扩展轻量级提供程序

automation - 如何管理持续部署的环境变量

deployment - Chef自动更新配置

node.js - 是否有基于 Node.js 的替代 Puppet 或 Chef?

java - 如果使用 Chef 更改了文件,如何删除目录?

ubuntu - 厨房没有检测到 Vagrant 插件 `kitchen-vagrant`

java - Docker 停止容器自动重新启动

chef-infra - 带有测试厨房的 Chef 日志

chef-infra - Chef Knife 网站下载返回ContentLengthMismatch错误