2016-07-10 5 views
0

나는 요리사 내에서 암호화 된 데이터의 가방을 사용하고 다음과 같이 나는 나의 요리사의 조리법 내에서 조건을 추가 할 : 그냥주방장에서 조리법이 조리 상태인지 확인하려면 어떻게해야합니까?

provisioner: 
    name: chef_zero 
    chef_omnibus_url: omni-url/chef/install.sh 
    roles_path: 'test/integration/default/roles' 
    data_bags_path: "test/integration/default/data_bags" 
    encrypted_data_bag_secret_key_path: "test/integration/default/encrypted_data_bag_secret" 

답변

0

다음과 같이 내가 kitchen.ymldata_bags_pathencrypted_data_bag_secret_key_path을 추가 한

If (test kitchen) then 
    encryptkey = data_bag_item("tokens", "encryptkey") 

If (not test kitchen) then 
    secret = Chef::EncryptedDataBagItem.load_secret("/etc/chef/encrypted_data_bag_secret") 
    encryptkey = Chef::EncryptedDataBagItem.load("tokens", "encryptkey", secret) 

두 가지 모두에 data_bag_item("tokens", "encryptkey")을 사용하십시오. 자동으로 암호 해독을 처리합니다.

+0

, 그것은 부엌 테스트하지 않고 제조법 서버 노드에서 직접 실행중인 경우, 노드는 비밀 암호 키에 대해 알고하는 방법. 암호 테스트를 할 때 암호화 키를'encrypted_data_bag_secret_key_path : test/integration/default/encrypted_data_bag_secret "'로'kitchen.yml'으로 지정했다는 것을 기억하십시오 – meallhour

+1

비밀 경로는'client.rb'에 설정되어 있습니다. 거기에 기본값이 있다는 것은 꽤 확신합니다. 주방장이 내부적으로 비밀을 읽어 들이고 있습니다. – coderanger

+0

'data_bag_item ("tokens", "encryptkey")를 사용할 때'오류 :/etc/chef/encrypted_data_bag_secret'에 비밀 번호가 지정되지 않고 비밀이 발견되지 않았습니다. ' – meallhour

1

kitchen.yaml의 속성을 사용하십시오.

suites: 
    - name: default 
    data_bags_path: 'databags' 
    run_list: 
     - recipe[x::y] 
    attributes: {'kitchen' : 'true' } 

레시피 안에는 노드 [ 'chef-mode']의 값을 사용하여 조건을 넣으십시오.

if node['kitchen'] == 'true' 
    #something 
else 
    #else 
end