[chef] Re: Easier symlink management?


Chronological Thread 
  • From: Andrea Campi < >
  • To: " " < >
  • Cc: " " < >
  • Subject: [chef] Re: Easier symlink management?
  • Date: Fri, 28 Oct 2011 20:34:25 +0200

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.

§