[chef] Re: Re: Re: Conditional resource creation / script execution


Chronological Thread 
  • From: Daniel DeLeo < >
  • To:
  • Subject: [chef] Re: Re: Re: Conditional resource creation / script execution
  • Date: Wed, 13 Jan 2010 13:39:12 -0800

Sébastien,
Using creates is probably the best way:

  script "ssh-keygen" do
    creates "#{user_home}/.ssh/id_dsa.pub"
    # other attributes
  end

Script "inherits" from execute, so script can do everything execute can do.

If you prefer the not_if way, it's pretty similar:

  script "ssh-keygen" do
    not_if {File.exist? "#{user_home}/.ssh/id_dsa.pub"}
    # other attributes
  end

HTH, and feel free to join us on #chef in freenode if you'd like more
real-time help.

Dan DeLeo

2010/1/13 Sébastien Pierre 
< >:
> Thanks,
> I don't know much of Ruby, so how would I chain the script to this
> expression ?
>  -- Sébastien
>
> 2010/1/13 Joshua Miller 
> < >
>>
>> Something like this should work  ...
>>    not_if do File.exists?(HOME + "/.ssh/id_dsa.pub") end
>>
>>
>> Joshua
>>
>>
>>
>http://wiki.opscode.com/display/chef/Resources#Resources-Script
>>
>>
>> On Jan 13, 2010, at 12:56 PM, Sébastien Pierre wrote:
>>
>> Hello,
>> I would like to know how to write "conditional" parts for recipies.
>> For instance, I would like to check if there is a "~/.ssh/id_dsa.pub" file
>> and create it if necessary. Right now, the solution is rather inelegant
>> script "ssh-keygen" do
>> interpreter "bash"
>> user        "manage"
>> cwd         (HOME)
>> code        "mkdir ssh-temp"
>> code        "ssh-keygen -t dsa -f ssh-temp/id_dsa << EOF\n\nEOF"
>> code <<-EOH
>> if [ ! -f .ssh/id_dsa.pub ]; then
>> mv ssh-temp/* .ssh/
>> fi
>> rm -rf ssh-temp
>> EOH
>> end
>> while I would prefer
>> unless (File exists (HOME + "/.ssh/id_dsa.pub") script do
>> interpreter "bash"
>> user        "manage"
>> cwd         (HOME)
>> code        "ssh-keygen -t dsa -f ssh-temp/id_dsa << EOF\n\nEOF"
>> end
>> Is there a way to do this properly ?
>>  -- Sébastien
>
>



Archive powered by MHonArc 2.6.16.

§