Chef 中的多个环境?

Chef 中的多个环境?

我正在寻找一些想法/指南,以使用 Chef 中的环境来指定特定于每个环境(如开发、QA 和 PROD)的属性。

因此,我们希望能够在所有环境中使用相同的说明书,但通过这些属性传递一些特定于环境的变量。

有没有人遇到过这种场景。谢谢!

答案1

这是我们如何在多个环境中使用相同的食谱,但传递特定于环境的不同变量!

1. 创建一个包含以下内容的 env.rb 并通过 Knife 命令上传它。

name "dev"
description "This is for Development Environment"
cookbook "cookbook1", "= 0.1.0"
default_attributes "dev" => { "proxy-server" => "proxydev.internal.com" }

2. 编写一个调用该属性以将其作为变量传递的配方:

ruby_block "configure proxy" do 
  block do
   file = Chef::Util::FileEdit.new "/tmp/proxy/server"
   file.insert_line_if_no_match "^proxy", "proxy: #{node["#{dev}"]["proxy-server"]}"
   file.write_file
  end
end

3. 然后使用此“dev”环境引导您的节点,并将上述配方包含在运行列表中。

结果:最后在节点上,文件“/tmp/proxy/server”应包含如下条目:

proxy: proxydev.internal.com

这对我们有用!

相关内容