Fragte eine similar question on this, aber erkannte, mein Problem ist mehr mit der Konzeption, wie dies funktionieren kann.Wie führe ich Rollen in der Testküche, ohne alles in die Berksdatei zu legen?
Ich habe eine Reihe von Artikeln gelesen, aber ich bin immer noch super verwirrt. Hier
ist, was ich jetzt tue:
Ich beantrage einen Satz von Basisrollen an alle meine Knoten (windows_base, linux_base, etc). Diese Rollen wenden Rezepte an, die Dinge wie die Zeitzone festlegen, sich mit AD verbinden und andere Konfigurationen ausführen, die auf allen Servern unabhängig von ihrem Zweck erforderlich sind.
Jetzt habe ich meine anderen Kochbücher, die Apps installieren und spezifische Konfigurationsänderungen für bestimmte Zwecke vornehmen. Während diese Kochbücher in der Regel "funktionieren" (dh keine Fehler werfen), ohne dass die Basisrollen zuerst ausgeführt werden müssen, können sie immer noch von den Basisrollen abhängen, um eine erste Serverkonfiguration auszuführen, und funktionieren möglicherweise nicht richtig, ohne dass sie zuerst angewendet werden.
Wenn ich also eines meiner Kochbücher in der Testküche teste, möchte ich manchmal eine Basisrolle in die Laufliste aufnehmen (vor den Kochbüchern, die ich teste).
Ich habe meine Rollen von meinem Server mit Messerdownload heruntergeladen und in der kitchen.yml über roles_path angegeben, aber anscheinend muss ich noch Testküche sagen, wo ich meine Kochbücher in die Rolle bekomme?
Jetzt können Sie die vorherige Frage sehen Ich fragte, es wurde vorgeschlagen, ich verwende Berkshelf, aber wenn ich das tun, muss ich alle Rezepte aus den Basisrollen in der Berksdatei des Kochbuchs, das ich gerade testen, angeben? Das macht für mich keinen Sinn, da ich dies nicht tun muss, wenn ich eine Rolle über den Chef-Server auf einen Knoten lege. Ich will auch nicht all diese Abhängigkeiten in meinem berksfile, denn wie ich schon sagte, hängen sie irgendwie von den Rollen ab, aber nicht unbedingt.
Wie verwende ich Rollen in Test Kitchen wie sie auf Chef Server verwendet werden - was bedeutet, dass ich nur eine Rolle auf eine Knoten-Run-Liste anwenden.
Ich sollte sagen, ich habe auch versucht, den Kochbuchpfad (cookbooks_path :) in kitchen.yml zu definieren, aber das hat Ether nicht funktioniert.
Das ist mein .kitchen.yml ist
---
driver:
name: hyperv
parent_vhd_folder: c:\HyperV\VHDs\
parent_vhd_name: 2012R2.vhdx
vm_switch: NAT
memory_startup_bytes: 2GB
provisioner:
name: chef_zero
roles_path: c:\.chef\roles
cookbooks_path: ..\
transport:
password: myPass123$
platforms:
- name: windows-2012r2
suites:
- name: default
run_list:
- role[linux_base]
attributes:
Also würde es funktionieren/Sinn machen, den 'cookbooks_path' in meiner' .kitchen.yml' auf 'C: \ Users \ me \ .bergshelf' (mein berkshelf-Ordner) zu setzen? Oder überschreibt Berkshelf 'cookbooks_path' in' .kitchen.yml'? – red888
Nein, der Berkshelf-Speicherordner ist nicht so organisiert, dass Chef ihn lesen kann. Kitchen führt 'berks vendor' für Sie in einen temporären Ordner, um die Dinge im richtigen Format auszugeben. – coderanger