Chef-환경 변수

환경 변수는 Chef 레시피가 특정 노드에서 성공적으로 실행되도록하는 주요 방법입니다. 수동으로 설정하거나 셸 스크립트를 사용하는 등 여러 가지 방법이 있습니다. 레시피를 통해 설정하는 것은 여기서 수행해야하는 작업입니다.

이렇게하려면 여기에 쿡북이 있어야합니다. test_cookbook과 test_cookbook이 포함 된 실행 목록을 사용합니다.

Chef 레시피를 사용하여 환경 변수 설정

Step 1 − 환경 변수로 요리 책의 기본 레시피를 업데이트합니다.

vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb  
ENV['MESSAGE'] = 'Testing environment variable update with chef !'  
execute 'print value of environment variable $MESSAGE' do 
   command 'echo $MESSAGE > /tmp/message' 
end

Step 2 − 업데이트 된 요리 책을 서버에 업로드합니다.

vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook 
Uploading my_cookbook [0.1.0]

Step 3 − Chef 클라이언트를 실행하여 임시 파일 생성.

user@server:~$ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-01-25T15:01:57+00:00] INFO: Processing execute[print 
value of environment variable $MESSAGE] action run 
(my_cookbook::default line 11) 
[2013-01-25T15:01:57+00:00] INFO: execute[print value of 
environment variable $MESSAGE] ran successfully 
...TRUNCATED OUTPUT...

변수 검증

user@server:~$ cat /tmp/message 
Hello from Chef

작업 방법

Ruby는 ENV를 통해 현재 환경 변수를 노출합니다. –a 환경 변수를 읽고 수정하기위한 해시입니다.

리소스 실행

execute 리소스를 사용하여 쿡북의 Chef 기본 레시피 내에서 동일한 작업을 수행 할 수 있습니다.

mma@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb  
execute 'print value of environment variable $MESSAGE' do 
   command 'echo $MESSAGE > /tmp/message' 
   environment 'MESSAGE' => 'Hello from the execute resource' 
end

Note− ENV를 사용하여 환경 변수를 설정하면 전체 Chef 실행 중에 해당 변수를 사용할 수 있습니다. 반대로 실행 리소스에 전달하면 리소스에서 실행하는 명령 하나에 만 사용할 수 있습니다.