2017-10-25 2 views
0

나는 다음과 같은 코드가 있습니다요리사 조리법 주문 실행

include_recipe 'hashicorp-vault::default' 
conn = Faraday.new(:url => 'http://127.0.0.1:8200') 

res = conn.put do |req| 
    req.url '/v1/sys/init' 
    req.body = '{"secret_shares": 1, "secret_threshold": 1}' 
end 

문제는 그 요리사가 include_recipe 'hashicorp-vault::default'을 무시하고 금고가 설치되어 있지 않기 때문에이 충돌하므로, 먼저 다른 코드를 실행입니다.

우선 hashicorp-vault::default을 강제로 실행할 수 있습니까?

+0

당신의 문제에서 코드의 나머지 부분을 대신 컴파일 시간의 시간을 수렴 실행을 참조한다 coderanger's blog에 대한 자세한 정보를 찾을 수 있습니다 https://coderanger.net/two-pass – Tensibai

답변

2
당신은 볼트 조리법에 정의 된 자원을 통합 그냥 정의되지 않은, 그래서 시간을 수렴 코드를 이동해야

:

include_recipe 'hashicorp-vault::default' 

ruby_block 'get secret' do 
    block do 
    conn = Faraday.new(:url => 'http://127.0.0.1:8200') 
    node.run_state['res'] = conn.put do |req| 
     req.url '/v1/sys/init' 
     req.body = '{"secret_shares": 1, "secret_threshold": 1}' 
    end 
    end 
end 

그리고 조리법의 나머지

(또는 다른 이상 조리법을) 여기서 당신은이 비밀 사용을 원합니다 node.run_state['rest']이 특정 해시는 노드 객체의 일부로 저장되지 않으므로 비밀이 셰프 서버에 누설되지 않습니다.

이 동작하는 방식 요리사에게 조리법을 컴파일하고 그 안에서 자원을 수렴 때문에, 당신은