2016-09-23 10 views
0

Ich habe eine Umgebung eingerichtet mit Test-Kitchen v1.5.0, Vagrant v1.8.1. Ich habe ein Rezept, das Cheftresor verwendet, um unsere verschlüsselten Passwörter zu entschlüsseln, die wir in unserer Datei data_bags_path/passwords/pilot.json finden.Chef Vault mit Test-Küche, Vagrant und Chef-Zero Provisioner

Ich verwende die Lösung hier https://github.com/chef/chef-vault/issues/58, die daxgames gegen Ende der Seite bietet.

Mein .kitchen.yml:

--- 
driver: 
    name: vagrant 

provisioner: 
    name: chef_zero 
    require_chef_omnibus: 12.14.77 
    roles_path: ../../roles 
    environments_path: ../../environments 
    data_bags_path: ../../data_bags 
    client_rb: 
    environment: lgrid2-dev 
    node_name: "ltylapp400a" 
    client_key: "/etc/chef/ltylapp400a.pem" 

platforms: 
    - name: centos-6.8 
    driver: 
    synced_folders: 
     - ["/Users/212466756/.chef", "/etc/chef", "disabled:false"] 

suites: 
    - name: ltylapp400a 
    run_list: 
     - role[lgrid-db] 
    attributes: 
     chef_client: 

Ein Ausschnitt aus meinem Rezept, das mit Koch-Gewölbe Angebote:

case node["customer_conf"]["status"] 
when 'pilot' 
    passwords = ChefVault::Item.load('passwords', 'pilot') 
when 'production' 
    passwords = ChefVault::Item.load('passwords', node[:hostname][1..3]) 
end 

Meine Verzeichnisstruktur für relevant data_bags:

data_bags 
    --passwords 
    --pilot.json 
    --pilot_keys.json 

Der Fehler, den ich bekomme ist, dass mein client.pem das vagrant gen Bei /etc/chef/ltylapp400a.pem kann der Inhalt dieser Datenbank nicht entschlüsselt werden. Chef schlagen vor, dass ich Messergewölbe refresh laufen lasse, bin ich nicht zu meinem Chefserver auf meiner lokalen Maschine verbunden, also, wenn ich dieses laufe, gibt es einen Fehler über, keinen Chefserver zu haben, zum sich zu verbinden. Meine Frage ist, wie kann ich meinen neuen Schlüssel, der vagrant erzeugt hat, der pilot_keys.json hinzufügen, so dass es in der Lage ist, diese data_bag zu entschlüsseln?

Die detaillierteren Antworten sind besser ich bin immer noch etwas Neues Koch, Test-Küche, etc ...

Antwort

0

ich in der Lage war, diese Funktion zu erhalten, unter meine Ergebnisse und Schlussfolgerungen sind. Wie oben erwähnt, war mein Problem, dass ich die datacbag nicht entschlüsseln konnte, da ich den neuen Schlüssel, den vagrant zur Datei pilot_key.json erstellt hatte, nicht hinzufügen konnte, da ich nicht mit dem Chefserver verbunden war und keine Messergewölbe-Aktualisierung ausführen konnte. aktualisieren. Ich musste den Schlüssel client.pem von einem Server holen, der bereits Zugriff auf die Datei pilot.json data_bag hatte. Ich habe unseren Utility-Server-Schlüssel verwendet, da er in naher Zukunft nicht zerstört wird.

Also auf meinem lokalen PC Ich habe ein .chef/ Verzeichnis unter meinem Home-Verzeichnis, habe ich die client.pem Schlüssel ich aus dem Utility-Server kopiert und ich synchronisieren diese mit der /tmp/Küche/ der fungiert als /etc/chef Verzeichnis in der Test-Küche-Umgebung.

--- 
driver: 
    name: vagrant 

provisioner: 
    name: chef_zero 
    require_chef_omnibus: 12.14.77 
    roles_path: ../../roles 
    environments_path: ../../environments 
    data_bags_path: ../../data_bags 
    client_rb: 
    node_name: "utilityServer" 
    client_key: "/tmp/kitchen/client.pem"  #The Chef::Vault needs a client.pem file to authenticate back to the data_bag to decrypt it, this needs to be stored at /tmp/kitchen/client.pem 
    environment: dev 
    no_proxy: 10.0.2.2 

platforms: 
    - name: centos-6.8 
    driver: 
    synced_folders: 
    - ["~/.chef","/tmp/kitchen/","disabled:false"] # Allows the vagrant box to have access to your .chef directory in your home directory. This is where you will store the client.pem for authentication. 

suites: 
    - name: lzzzdbx400a 
    run_list: 
     - role[lgrid-db] 
attributes: 

Die data_bags/Passwörter/pilot_key.json wie folgt aussieht:

{ 
"id": "pilot_keys", 
"admins": [ 
    "utilityServer" 
], 
"clients": [ 
    "webserver", 
    "database" 
], 
"search_query":"*:*" 
"utilityServer":"key", 
"webserver":"key", 
"database": "key" 
} 

Da der utilityServer Schlüssel bereits in der Lage war, die Passwörter/Pilot data_bag es während der nächsten durch feine lief decrpyt Zeit, ich lief Küche konvergieren.

0

Während zuvor Kämpfe mit Küche und Chef-Vault ich die Methode synced_folders verwendet, um auf Schlüssel zuzugreifen. Bei diesem Thema habe ich eine andere Lösung gefunden.

Küche Unterstützung Um diese Arbeit in der Küche zu machen, nur eine Tasche Klartext Daten setzen in die data_bags Ordner, der die Küche laufen (wahrscheinlich im Test/Integration/data_bags) auf bezieht. Dann fallen die Vault-Befehle zurück, um diese Dummy-Daten zu verwenden, wenn Sie chef_vault_item zu abrufen.

Referenz: http://hedge-ops.com/chef-vault-tutorial/