Chef의 여러 환경?

Chef의 여러 환경?

개발, QA, PROD와 같은 각 환경에 특정한 속성을 지정하기 위해 Chef의 환경을 사용하는 방법에 대한 몇 가지 아이디어/지침을 찾고 있습니다.

따라서 우리는 모든 환경에서 동일한 명령을 사용할 수 있기를 원하지만 이러한 속성을 통해 일부 환경별 변수를 전달합니다.

이 시나리오를 접한 사람이 있습니까? 감사해요!

답변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

이것은 우리에게 효과적입니다!

관련 정보