- From:
- To: "Chef mailist" <
>
- Subject: [chef] Create ruby variable at chef runtime at specific position in a recipe
- Date: Sat, 03 Nov 2012 15:21:48 +0100
I have a recipe in which one resource creates a file. After that I want to
use my self written object from libraries to parse this file and extract some
values. This values then I want to use in the coming resources. But when I
use a ruby_block at the specific position in the recipe to create my object
that holds simply the values as a hash, the hash is empty in the next
resource. Here is a short example to explain.
package "some_special_package" # Produce the file "key_value_fil" in
"/path/to/the/file/i/want/to/parse"
ruby_block "Create my object" do
block do
my_hash_obj_with_the_key_value_pairs =
(MyObj.new("/path/to/the/file/i/want/to/parse/key_value_file")).parse_file #
returns a hash like: {:mypath => "/etc/some_other_dir"}
end
end
file "touch some other file" do
path "#{my_hash_obj_with_the_key_value_pairs[:mypath]}/file_to_touch"
action :touch
end
I know what is the reason for that. Chef runs in two phases and in the first
phase the object "MyObj" is created, but at this point the file does not
exist. So the generated hash is empty. In the second phase the access to
"my_hash_obj_with_the_key_value_pairs[:mypath]" returns nil and so on. In my
last try I used the "node.run_state" variable, but there is the same problem.
So someone how can help me?
Oleg
- [chef] Create ruby variable at chef runtime at specific position in a recipe, oleg . volotov, 11/03/2012
Archive powered by MHonArc 2.6.16.