[chef] Re: Re: testing for mounted fs, and trying shell_out


Chronological Thread 
  • From:
  • To:
  • Subject: [chef] Re: Re: testing for mounted fs, and trying shell_out
  • Date: Tue, 25 Sep 2012 14:43:07 -0700

On Wed, 26 Sep 2012, AJ Christensen wrote:

> You can't mix a module into the chef recipe DSL, the way it is evaluating
> is trying to find a Chef resource for 'include' statement.
> 
> Try to require then Chef::Mixin:: ShellOut.shell_out "foo"


cool... so my approach to the task using shell_out and begin/rescue is
sane, if not good? i'll try to get back to this soon to get it to work.
yay context-switching.
 
> The Higgs Boson logging messages always crack me up.

:>  .. yeah, it gives me something easy to grep for.

> Cheers,
> 
> AJ
> On Sep 26, 2012 8:18 AM, 
> < >
>  wrote:
> 
> >
> >
> > hello. i'd like to test that a dir path is separately mounted filesystem.
> > and if it is, place a config file there via a template. what are the best
> > ways to do that?
> >
> > just today i tried to poke at using shell_out, drawing from examples from
> > other cookbooks. but i'm failing at that. i'm also new to wielding
> > begin/rescue. my intention is for the chef-client run to fail if if the
> > mount point isn't mounted.
> >
> > is shell_out a decent way to test the mount? any advice?
> >
> > my recipe snippet and error:
> >
> > require 'chef/mixin/shell_out'
> > require 'chef/mixin/language'
> > include Chef::Mixin::ShellOut
> >
> > if node['ec2']
> >   begin
> >     ebs_mounted = true if shell_out("grep /ebs /proc/mounts 2>&1 | grep -q
> > md[1-9]")
> >     Chef::Log.info("HIGGS-BOSON: /ebs is mounted.")
> >   rescue
> >     Chef::Log.fatal("HIGGS-BOSON: /ebs is not mounted.")
> >     raise
> >   end
> > end
> >
> > [Tue, 25 Sep 2012 19:36:08 +0000] DEBUG: Re-raising exception: NameError -
> > Cannot find a resource for include on centos version 5.8
> > /opt/opscode/embedded/lib/ruby/gems/1.9.1/gems/chef-0.10.10/lib/chef/resource_platform_map.rb:129:in
> > `get'
> >
> > /opt/opscode/embedded/lib/ruby/gems/1.9.1/gems/chef-0.10.10/lib/chef/resource.rb:667:in
> > `resource_for_platform'
> >
> > /opt/opscode/embedded/lib/ruby/gems/1.9.1/gems/chef-0.10.10/lib/chef/resource.rb:684:in
> > `resource_for_node'
> >
> > /opt/opscode/embedded/lib/ruby/gems/1.9.1/gems/chef-0.10.10/lib/chef/mixin/recipe_definition_dsl_core.rb:58:in
> > `method_missing'
> >   /var/cache/chef/cookbooks/cupcake-percona/recipes/percona-setup.rb:14:in
> > `from_file'
> >
> > /opt/opscode/embedded/lib/ruby/gems/1.9.1/gems/chef-0.10.10/lib/chef/mixin/from_file.rb:30:in
> > `instance_eval'
> >
> > /opt/opscode/embedded/lib/ruby/gems/1.9.1/gems/chef-0.10.10/lib/chef/mixin/from_file.rb:30:in
> > `from_file'
> >
> > /opt/opscode/embedded/lib/ruby/gems/1.9.1/gems/chef-0.10.10/lib/chef/cookbook_version.rb:578:in
> > `load_recipe'
> >
> >
> >
> > i can place the config file under the right circumstances using only_if
> > within
> > a template resource block.  this does the right thing, but it is silent
> > about
> > it. i'd prefer it fail, or notify me. i guess i could set up a
> > chef_handler for
> > the notification, but i'd like to hear thoughts on my attempt with
> > shellout and
> > begin/rescue.
> >
> > template "#{node['thing']['conf_dir']}/config.conf" do
> >   source "config.conf.erb"
> >   owner "root"
> >   mode "0644"
> >   only_if "grep /ebs /proc/mounts 2>&1 | grep -q md[1-9]"
> > end
> >
> >
> > thanks,
> > kallen
> >
> >
> >



Archive powered by MHonArc 2.6.16.

§