[chef] Re: Re: How do I modify a local variable through ruby_block?


Chronological Thread 
  • From: AJ Christensen < >
  • To:
  • Subject: [chef] Re: Re: How do I modify a local variable through ruby_block?
  • Date: Sat, 23 Jun 2012 16:04:27 +1200

Some people use the node.run_state hash to store stuff like this in.

Why must you modify the scope-local variable in the ruby block?

--AJ

On 23 June 2012 15:56, Adam Jacob 
< >
 wrote:
> The issue here is that Chef builds a collection of resources, which it
> then iterates over. The block in the ruby block is not evaluated until
> much later. What exactly are you trying to accomplish?
>
> Adam
>
> On Fri, Jun 22, 2012 at 3:04 PM, Daniel S. Kim 
> < >
>  wrote:
>> Hello all,
>>
>> I am having hard time with a variable modification. See the snippet below:
>>
>> subdir = ""
>>
>> ruby_block "read target archive directory name" do
>>   block do
>>     Dir.foreach("/snapshot/#{dbSnapshotId}") do |f|
>>       unless(f.to_s.eql? ".")
>>         unless (f.to_s.eql? "..")
>>           Chef::Log.info("Timestamp: " + f.to_s)
>>           subdir = f.to_s
>>           node[:RestoreSubdir] = subdir
>>           node.save
>>         end
>>       end
>>     end
>>   end
>>   action :create
>> end
>>
>>
>> After the ruby_block, subdir is still an empty string. However, Chef::Log
>> shows a value otherwise. I also tried these other method in order to get
>> this String outside the ruby_block scope:
>> 1. script resource => variable modification undone once out of scope
>> 2. ruby_block resource => variable modification undone once out of scope
>> 3. separate recipe with ruby code => ruby code still runs 1st before
>> mounting the drive
>> 4. separate recipe with ruby_block/script => still cannot see the variable
>> modification once out of scope
>> 5. node.save within ruby_block => save doesn't occur until chef-client is
>> done running all the resources
>> 6. databag.save within ruby_block => save doesn't occur until chef-client 
>> is
>> done running all the resources
>>
>>
>> Any suggestion?
>>
>>
>>
>>
>> Regard,
>>
>> --
>> Daniel S. Kim
>>
>
>
>
> --
> Opscode, Inc.
> Adam Jacob, Chief Customer Officer
> T: (206) 619-7151 E: 
> 



Archive powered by MHonArc 2.6.16.

§