Passer des variables entre le chef des ressources

je voudrais vous montrer mon cas d'utilisation, puis de discuter des solutions possibles:

Problème:
j'ai 2 recettes, "a" et "b".. "un" installe un programme sur mon système de fichiers (par exemple au "/usr/local/bin/stuff.sh" et la recette "b" doit exécuter ce et faire quelque chose avec le la sortie.

donc la recette de "une" ressemble à quelque chose comme:

execute "echo 'echo stuff' > /usr/local/bin/stuff.sh" 

(le script juste écho(es) "trucs" sur la sortie standard stdout)

et de la recette "b" ressemble à quelque chose comme:

include_recipe "a"
var=`/usr/local/bin/stuff.sh` 

(notez les backquotes, var doit contenir stuff)

et maintenant, j'ai besoin de faire quelque chose avec elle, par exemple, créer un utilisateur avec ce nom d'utilisateur. donc au script "b" - je ajouter

user "#{node[:var]}"

Comme il arrive, cela ne fonctionne pas.. apparemment le chef exécute tout ce qui n'est pas une ressource, et seulement alors, exécute les ressources de sorte que dès que je lance le script chef se plaint qu'il ne peut pas compiler, car il tente d'abord d'exécuter le "var=..." à la ligne-recette de "b" et échoue en raison de la "exécuter ...", une recette n'a pas couru encore et donc "stuff.sh" script n'existe pas encore.
Inutile de dire, c'est très ennuyeux car il rompt le "Chef dirige tout dans l'ordre, de haut en bas" qui m'a été promis quand j'ai commencé à l'utiliser.
Cependant, je ne suis pas très pointilleux j'ai donc commencé à chercher d'autres solutions à ce problème, donc:

Problème B: j'ai couru à travers l'idée de "ruby_block". apparemment, c'est une ressource de sorte qu'il sera évalué, ainsi que les autres ressources. J'ai dit ok, alors j'aimerais créer le script, obtenir la sortie dans un "ruby_block" et puis la passer à "l'utilisateur". donc recette "b" ressemble maintenant à:

include_recipe "a"

ruby_block "a_block" do
  block do
    node.default[:var] = `/usr/local/bin/stuff.sh`
  end
end

user "#{node[:var]}"

Cependant, il s'avère que la variable (var) n'a pas été passé de "ruby_block" à "utilisateur" et il reste vide. Peu importe ce que la jonglerie, j'ai essayé de le faire avec elle, je n'ai pas réussi (ou peut-être que je n'ai tout simplement pas trouvé la bonne jonglerie méthode)

De la chef/ruby maîtres autour de: Comment puis-je résoudre le Problème? Comment puis-je résoudre le Problème B?

OriginalL'auteur ShinySpiderdude | 2013-07-17