Ich fand tatsächlich einen Weg, dies zu tun, indem ich eine zweite Chefkonvergenz durchführte, nachdem ich ein paar Dinge in einem Rezept durchgegangen war. Ich bin überrascht zu sehen, dass jemand anderes dies braucht.
Dies ist mein Bericht über den Re-Konvergenz-Hack
Nachfolgend finden Sie das, was ich glaube, um dies zu erreichen. Bitte lesen Sie auch den Blogpost.
#some parts of your recipe can go up here #Initialize a new chef client object client = Chef::Client.new client.run_ohai #you probably only need this if you need to get new data client.load_node client.build_node #Intialize a new run context to evaluate later run_context = if client.events.nil? Chef::RunContext.new(client.node, {}) else Chef::RunContext.new(client.node, {}, client.events) end #Initialize a chef resource that downloads the remote file r = Chef::Resource::Execute.new("build_info", run_context) r.cwd node[:source_folder] + "/tools" r.command "php buildInfo.php /etc/chef/serverInfo.json" r.run_action(:run) #Converge and run the new resources runner = Chef::Runner.new(run_context) runner.converge #Since the file is now created from the above hack, Chef will be able to read it node.override.merge!(JSON.parse(File.read("/etc/chef/serverInfo.json")))