[chef] Re: Re: Easier symlink management?


Chronological Thread 
  • From: Peter Norton < >
  • To:
  • Subject: [chef] Re: Re: Easier symlink management?
  • Date: Fri, 28 Oct 2011 16:01:51 -0400

Thanks, I'll look at how LWRPs work.  I didn't realize they were there
to be customized in this manner.

-Peter

On Fri, Oct 28, 2011 at 2:34 PM, Andrea Campi
< >
 wrote:
> An LWRP can do what you want; looking at your example you would have a 
> "symlink_dir" resource, and "source", "dest" etc would be providers.
> In your action you need to define your logic (iterating over all your files 
> and calling the standard link provider do perform the actual link).
>
> Read up on LWRPs in the wiki, or just look at the existing providers in the 
> chef gem.
>
> For an example of passing a block and calling it, see 
> https://github.com/opscode/chef/blob/master/chef/lib/chef/resource/ruby_block.rb
>  and the matching 
> https://github.com/opscode/chef/blob/master/chef/lib/chef/provider/ruby_block.rb
>
> Andrea
>
>
> On Oct 28, 2011, at 7:17 PM, Peter Norton 
> < >
>  wrote:
>
>> I'm migrating installations over to chef that currently do a lot of
>> symlinking.  The actual symlinks make sense, but don't adhere to the
>> rails/capistrano layout deployed in the chef documentation for the
>> deploy mechanism.  It seems to me that the deploy mechanism is more
>> than I want - I'd like to be able to do
>>
>> symlink_dir "foo" do
>>  user myuser
>>  group mygroup
>>  obj_types [ 'd', 'l', 'f' ]
>>  source /source/filesystem/path
>>  dest /destination/filesystem/path
>> end
>>
>> and have all files, directories, and symlinks be symlinked from
>> src->dst. Instead it seems that I have to do this:
>>
>>  bash "create_bin_symlinks" do
>>    # Binary symlinks don't get directories linked in.
>>    user 'user'
>>    group 'group'
>>    cwd dst_dir
>>    code <<-EOBASH
>>    for item in $(ls #{src_dir}) ; do
>>      if [ -x #{src_dir}/$item ] && [ ! -d #{src_dir}/$item ] ; then
>>        [ -h #{dst_dir}/$item ] || ln -s #{src_dir}/$item #{dst_dir}/
>>      fi
>>    done
>>    EOBASH
>>  end
>>
>> and tailor this a bit for each file type that I want, which means I'll
>> be littering a dozen cookbooks and 3x that recipes with this sort of
>> thing.
>>
>> How could I add to the DSL to create the feature I described here?  In
>> fact, how could I do it such that the obj_types could be augmented by
>> passing in a callback to a filter function so instead of just types I
>> could use any property of the file to determine whether or not to make
>> the symlink in the source and dest?
>>
>> Thanks,
>>
>> -Peter
>



Archive powered by MHonArc 2.6.16.

§