[chef] simple run a shell command


Chronological Thread 
  • From: Manoj Thakkar < >
  • To: " " < >
  • Subject: [chef] simple run a shell command
  • Date: Tue, 29 Oct 2013 14:14:50 -0700

Thanks Daniel,

I think i found the issue, you were right i shall use only string if possible and thats what i did, 

i faced another issue though ,  the grep command below does not work as expected , the  string returns all the values instead of the one with the hostname of my machine, any clues whats wrong ?



host=`hostname -s`
node.set[:acc_deploy] = `cat /local_app/account-rest.properties | grep -i "#{host}" | cut -d":" -f2 `




On Tue, Oct 29, 2013 at 2:09 PM, Daniel Condomitti < " target="_blank"> > wrote:
I’m not entirely sure why that isn’t working but it could be due to that the node.set isn’t actually updating the node object until it’s outside of that ruby block. Change the node attribute access to either all strings or all symbols. Normally you can use strings and symbols interchangeably though you should use one consistently:

> chef > n.set[:blah] = 'test'
> => "test"
> chef > n[:blah]
> => "test"
> chef > n['blah']
> => “test"
>




On Tuesday, October 29, 2013 at 1:57 PM, Manoj Thakkar wrote:

> Thanks Daniel,
>
> its good to know that - in not allowed in symbol.
>
>
> i still get the same error though
>
>
> ruby_block "acc-deploy-host" do
> block do
> host=`hostname -s`
> node.set[:acc_deploy] = `cat /local_app/account-rest.properties | grep -i "#{host}" | cut -d":" -f2 `
> puts "value is #{node['acc_deploy']}"
> end
> end
> node['acc_deploy'].each do |x|
> puts #x
>
> end
>
> /var/chef/cache/cookbooks/base_tomcat/recipes/default.new.rb:
>
> 9: ruby_block "acc-deploy-host" do
> 10: block do
> 11: host=`hostname -s`
> 12: node.set[:acc_deploy] = `cat /local_app/account-rest.properties | grep -i "#{host}" | cut -d":" -f2 `
> 13: puts "value is #{node['acc_deploy']}"
> 14: end
> 15: end
> 16>> node['acc_deploy'].each do |x|
> 17: puts #x
> 18:
> 19: end
> 20:
>
>
> [2013-10-29T13:55:58-07:00] ERROR: Running exception handlers
> [2013-10-29T13:55:58-07:00] FATAL: Saving node information to /var/chef/cache/failed-run-data.json
> [2013-10-29T13:55:58-07:00] ERROR: Exception handlers complete
> Chef Client failed. 0 resources updated
> [2013-10-29T13:55:58-07:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
> [2013-10-29T13:55:58-07:00] FATAL: NoMethodError: undefined method `each' for nil:NilClass
>
>
>
>
>
> On Tue, Oct 29, 2013 at 1:52 PM, Daniel Condomitti < "> (mailto: "> )> wrote:
> > Dashes are not valid in symbol names unless you quote them. It’s interpreted as `:acc - deploy`. Just switch to underscores and you’ll be good.
> >
> >
> > On Tuesday, October 29, 2013 at 1:38 PM, Manoj Thakkar wrote:
> >
> > > Thanks Andrew,
> > >
> > > i pasted the wrong code , i fixed that _ vs "-" thing , but it still did not work ,same error
> > >
> > > Chef Client failed. 0 resources updated
> > > [2013-10-29T13:36:43-07:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
> > > [2013-10-29T13:36:43-07:00] FATAL: NoMethodError: undefined method `each' for nil:NilClass
> > > You have mail in /var/spool/mail/deploy
> > >
> > >
> > >
> > > cookbook_file "/local_app/account-rest.properties" do
> > > source "account-rest.properties"
> > > mode 0777
> > > owner "deploy"
> > > group "deploy"
> > > end
> > > ruby_block "acc-deploy-host" do
> > > block do
> > >
> > > host=`hostname -s`
> > > node.set[:acc-deploy] = `cat /local_app/account-rest.properties | grep -i "#{host}" | cut -d":" -f2 `
> > > puts "value is #{node[:acc-deploy]}"
> > > end
> > > action :create
> > > end
> > > node['acc-deploy'].each do |x|
> > > puts #x
> > >
> > > end
> > >
> > >
> > >
> > >
> > > On Tue, Oct 29, 2013 at 1:32 PM, Andrew Gross < "> (mailto: "> ) (mailto: "> )> wrote:
> > > > In the first case you use a dash node.set[:acc-deploy]
> > > > In the second case you are using underscore node['acc_deploy'].each
> > > >
> > > > Additionally I would recommend standardizing on symbols vs strings
> > > >
> > > > Hopefully that works.
> > > >
> > > >
> > > > On Tue, Oct 29, 2013 at 4:27 PM, Manoj Thakkar < "> (mailto: "> ) (mailto: "> )> wrote:
> > > > > i changed the code to this ,
> > > > >
> > > > > still does not work , what is wrong ?
> > > > >
> > > > >
> > > > > cookbook_file "/local_app/account-rest.properties" do
> > > > > source "account-rest.properties"
> > > > > mode 0777
> > > > > owner "deploy"
> > > > > group "deploy"
> > > > > end
> > > > > ruby_block "acc-deploy-host" do
> > > > > block do
> > > > >
> > > > > node.set[:acc-deploy] = `cat /local_app/account-rest.properties | grep -i "#{host}" | cut -d":" -f2 `
> > > > > puts "value is #{node["acc-deploy"]}"
> > > > > end
> > > > > action :create
> > > > > end
> > > > > node['acc_deploy'].each do |x|
> > > > >
> > > > > puts #x
> > > > >
> > > > > end
> > > > >
> > > > >
> > > > > On Tue, Oct 29, 2013 at 1:17 PM, Manoj Thakkar < "> (mailto: "> ) (mailto: "> )> wrote:
> > > > > > Hey,
> > > > > >
> > > > > > i have been trying to fix this for almost 30 minutes now , thought i shall better ask, please looks at the code snippet below, I am not able to access this simple variable what am i doing wrong ? please advise.
> > > > > >
> > > > > >
> > > > > > cookbook_file "/local_app/account-rest.properties" do
> > > > > > source "account-rest.properties"
> > > > > > mode 0777
> > > > > > owner "deploy"
> > > > > > group "deploy"
> > > > > > end
> > > > > > ruby_block "acc-deploy-host" do
> > > > > > block do
> > > > > > node.default["acc-deploy"] = `cat /local_app/account-rest.properties | grep -i "#{host}" | cut -d":" -f2 `
> > > > > > puts "value is #{node["acc-deploy"]}"
> > > > > > end
> > > > > > action :create
> > > > > > end
> > > > > > node[:acc_deploy].each do |x| ----- this does not work
> > > > > > puts #x
> > > > > >
> > > > > > end



  • [chef] simple run a shell command, Manoj Thakkar, 10/29/2013

Archive powered by MHonArc 2.6.16.

§