如何使用 Chef 菜谱来设置环境变量?
如何使用 Chef 菜谱来设置环境变量?
我需要使用 Chef 食谱设置环境变量。您能提供一个如何实现这一目标的示例吗?
How can you use a Chef recipe to set an environment variable?
I need to set an environment variable using a Chef recipe. Can you provide an example of how to accomplish this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果您需要严格在 Chef 进程内设置环境变量,则可以使用 ENV['foo'] = 'bar',因为它是一个 ruby 进程。
如果您需要为 执行提供程序 设置一个,Chef 会公开一个环境哈希:
如果您'如果您想设置一个持久的环境变量,那么您可能需要让 Chef 编辑
/etc/profile.d/chef.sh
、/etc/environment
、用户的配置文件, ETC。If you need an env var set strictly within the Chef process, you can use
ENV['foo'] = 'bar
' since it's a ruby process.If you need to set one for an execute provider, Chef exposes an environment hash:
If you're looking to set a persistent environment variable then you may want to have Chef edit
/etc/profile.d/chef.sh
,/etc/environment
, a users' profile, etc.如果您想使用 Chef 在系统上进行设置,请查看magic_shell 食谱。
If you want to set it on the system with Chef, checkout the magic_shell cookbook.
如果您想在
/etc/environment
中的系统级别进行设置,您可以直接按照以下示例进行设置,而无需添加额外的配方(这会为 Java 添加两个环境变量):If you want to set it at the system level in
/etc/environment
, you can do so directly per the following example without adding an additional recipe (this adds two env variables for Java):Windows 和 Linux 之间执行此操作的方法有所不同。最简单的方法是:
Windows
使用 windows_env 资源创建系统环境变量:
Linux
如果您只需要它来运行说明书及其子项,那么使用 Ruby ENV 资源。这不会是永久性的:
如果您需要它是永久性的(并使用bash):
在/etc/profile.d中创建一个脚本:
填写模板脚本:
<代码>#!/bin/bash
export CHEF_LICENSE='accept' # Chef Infra Client 15 需要
将模板资源放入您的菜谱中(您可能需要设置属性和所有者/组设置,我想让这个示例保持简单)
模板'/etc/profile.d/chef.sh'做
来源“chef.sh.erb”
end
这里有一些额外的资源供您阅读此处引用的不同资源:
模板资源
windows_env 资源
The way to do this is different between Windows and Linux. The easiest way would be:
Windows
Use the windows_env resource to create a System environment variable:
Linux
If you only need it for the cookbook run and its children, then use the Ruby ENV resource. This will NOT be permanent:
If you need it to be permanent (and use bash):
Create a script in /etc/profile.d:
Fill out the template script:
#!/bin/bash
export CHEF_LICENSE='accept' # Needed for Chef Infra Client 15
Put the template resource in your recipe (You may want to set attributes and owner/group settings, I wanted to keep this example simple)
template '/etc/profile.d/chef.sh' do
source 'chef.sh.erb'
end
Here are some additional resources to read up on the different resources referenced here:
template resource
windows_env resource
对于 Linux,最好的方法是使用
当您使用此命令时,配方旋转的每个子进程都将使用此 ENV 值。您可以使用 bash 资源并回显 Var 的值来验证它。
For Linux, the best way to it is by using
When you use this command, every sub process spun by the recipe will be using this ENV value. You can verify it using a bash resource and echoing the value of Var.