2016-07-10 11 views
0

Ich bin mit verschlüsselten Daten Taschen innerhalb Chef und ich möchte eine Bedingung in meinem Chef Rezept wie folgt hinzufügen:Wie eine Bedingung innerhalb Chefrezept zur Verfügung stellen, um zu sehen, ob es unter Testküche läuft?

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) 

Ich habe data_bags_path und encrypted_data_bag_secret_key_path innerhalb kitchen.yml wie folgt hinzugefügt:

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" 

Antwort

0

Nur Verwenden Sie data_bag_item("tokens", "encryptkey") für beide. Es kümmert sich automatisch um die Entschlüsselung.

+0

Aber, wenn es nicht Küche Test ist und das Rezept direkt auf dem Server-Knoten läuft, dann, wie der Knoten über den geheimen Verschlüsselungsschlüssel wissen wird. Denken Sie daran, dass ich im Falle eines Küchentests den Verschlüsselungsschlüssel als 'verschlüsselter_Daten_Bag_Secret_Key_Pfad:" test/integration/default/verschlüsselter_Daten_Bag_Secret "' in 'kitchen.yml' festlegt. – meallhour

+1

Der Pfad zum geheimen Schlüssel ist in Ihrem 'client.rb' konfiguriert, aber Sie habe da die Vorgabe bin ich mir ziemlich sicher. Chef übernimmt das interne Laden des Geheimnisses für Sie. – coderanger

+0

Ich bekomme diesen Fehler 'FEHLER: Kein Geheimnis angegeben und kein Geheimnis gefunden bei/etc/chef/encrypted_data_bag_secret', wenn ich' data_bag_item ("Token", "encryptkey") ' – meallhour

1

Verwenden Sie die Attribute in Ihrer Küche.yaml.

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

Innerhalb Ihres Rezepts, wenn Bedingung mit dem Wert von Knoten ['Chef-Modus'] setzen.