Hintergrund: Unsere Systeme sind so eingerichtet, dass ich nur das lokale Kochprotokoll sehen kann und keinen Zugriff auf die Chef-Serverkonsole oder andere Systemadministratorberechtigungen haben werde. Daher muss ich lokal loggen, wenn ich sehen möchte, ob oder warum etwas fehlgeschlagen ist.Chef - Installationsblock ausführen, basierend auf variablen Bedingungen
Ich kann Sie fragen hören "Wenn Sie dem Pkg oder Chef nicht vertrauen, es richtig zu installieren, dann ..." Meine Antwort ist, dass, während Sie richtig sind, ich immer noch durch die gelegentliche Anomalie abgedeckt werden soll.
Mein Ziel ist es, ein Paket zu installieren, zu überprüfen, ob es korrekt installiert ist, als weiter zum nächsten Paket.
Auf die Frage:
Ich mag eine Variable setzen, die für die Existenz eines Verzeichnisses überprüft, die durch das erste Paket mit dem folgenden Code erstellt wurde:
mycond = ::File.directory?('/opt/MyPkg/conf')
Chef::Log.fatal("MyPkg package not installed ? conf dir is missing") unless mycond
die nächste Stufe In dem Rezept wird der nächste Installationsblock überprüft, um zu sehen, ob die Variable gesetzt wurde.
yum_package 'OtherPkg' do
action :install
only_if { mycond }
end
Meine Frage ist, da die only_if
ausfällt, ich frage mich, ob es etwas falsch mit der Art und Weise war ich die Einstellung der mycond
Variable? Perhapes {} Klammern werden irgendwo im Code benötigt?
Total Chef Neuling also bitte genau mit Ihrer Antwort.
Danke!
Voll Code unten:
yum_package 'MyPkg' do
flush_cache [ :before ]
action :install
end
mycond = ::File.directory?('/opt/MyPkg/conf')
Chef::Log.fatal("MyPkg package not installed ? conf dir is missing") unless mycond
yum_package 'OtherPkg' do
action :install
only_if { mycond }
end
Wie kann ich es auch in das lokale Protokoll schreiben? – eramm
Ich würde wahrscheinlich eine Protokoll-Ressource dafür verwenden. – coderanger