linux - Chef 未创建环境变量

标签 linux chef-infra chef-recipe rhel7

我正在尝试使用 chef 在 rhel 机器中创建一些新的环境变量。

该 block 成功执行,但在尝试回显该值时,我得到黑色结果。

脚本 1:

execute 'JAVA_HOME' do
      command 'export JAVA_HOME='+node['java']['home']
    end

脚本 2:

bash 'env_test' do
      code <<-EOF
      echo $chef
    EOF
      environment ({ 'chef' => 'chef' })
    end

还试了一下文档中提到的:

ENV['LIBRARY_PATH'] = node['my']['lib']

请让我知道我哪里出错了..

最佳答案

所以关于环境变量你需要知道的是它们只在一个方向上工作(父进程到子进程)所以子命令中的 exportexecute 之后什么都不做> 资源完成。不过,第二个和第三个示例都有效,第二个示例仅针对 bash 资源进行设置,第三个示例针对 Chef 进程及其生成的所有内容进行设置。请记住,您需要使用 -l debug 运行才能查看 Chef 运行的子命令的输出。

关于linux - Chef 未创建环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49380982/

相关文章:

c++ - Qt选择矩形位置

Linux - 推荐的用于打开文件的应用程序

linux - Chef cron 作业未运行

ruby - Chef 错误在资源 `start` 上执行操作 'service[httpd]'

linux - wget 命令在 linux 中工作但在 windows 中不工作

linux - cmake 2.8.11 中的 AArch64 支持

ssl - 如何为 chef-manage 禁用 SSL?

unit-testing - 对 Chef 提供程序进行单元测试

vagrant - 使用 Chef 显示远程文件进度

linux - 如何使 Chef Recipe 在 SUSE 操作系统的 Chef 中具有幂等性