2014-12-09 7 views
1

개발 환경에는 클라우드의 더 큰 공유 리소스에 대한 쿼리를 실행하는 로컬 VM이 포함됩니다.시험용 주방 - 로컬 사용자 로그인을 Chef 속성으로 전달하려면 어떻게해야합니까?

로컬 사용자의 로그인이 SSH 및 DB 연결을 정의하는 데 사용되는 Chef 역할로 속성으로 전달되는 방식으로 설정되었습니다.

현재 Vagrant 파일에서 Ruby를 사용하여 로그인을 제거하고 vm.provision을 사용하여 게스트 VM의 파일 시스템에/tmp 파일을 만듭니다. 로컬 VM의 Chef 역할은 해당 파일의 내용을 읽고이 값을 속성으로 전달합니다.

Vagrantfile : 요리사 실행하는 동안

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

(snip) 

require 'etc' 
user = Etc.getlogin 

(snip) 

analytics.vm.provision :shell, inline: "echo #{user} > /tmp/remote_user" 

는/tmp를/REMOTE_USER의 내용을 읽습니다 다음

remote_user = File.open("/tmp/remote_user", "r").read.strip 
sandbox = "_#{remote_user}" 

default_attributes "remote_user" => remote_user, 
    "sandbox" => sandbox, 

는 다음과 같이 현재 사용자의 로그인을 추가하는 더 좋은 방법이 있나요 지역 요리사에 대한 속성이 실행됩니까?

그렇지 않은 경우 .kitchen.yml에있는 이전 Vagrantfile의 기능을 어떻게 복제 할 수 있습니까?

답변

2

테스트 부엌 ERB를 통해 .kitchen.yml 처리, 그래서 당신은 단지 당신의 ERB 파일이 뭔가를 넣을 수 있습니다 :

attributes: 
    foo: <%= ENV['STUFF'] %> 

을 그리고 node['foo']$STUFF 포함됩니다. 귀하의 경우 STUFF를 USER로 전환하십시오.

+0

다른 방법으로, 당신은 속성을 할 수있는 : foo는 <% ='whoami' %> 은 사용자 이름으로 바로 이동합니다. –