.profile not getting executed on chef client -
i have following recipe on chef-server:
# insert environment variables in .profile execute "set-env-path" command "echo 'export java_home=/home/node/jdk1.6.0_45' >> /home/node/.profile && echo 'export path=$path:$java_home/bin' >> /home/node/.profile" end # execute .profile execute "execute .profie" command ". $home/.profile" end
when running recipe on client, environment variables gets inserted .profile not getting set.
node@node-virtual-machine:~$ sudo chef-client [2014-04-07t14:59:57+05:30] info: forking chef instance converge... starting chef client, version 11.10.4 [2014-04-07t14:59:57+05:30] info: *** chef 11.10.4 *** [2014-04-07t14:59:57+05:30] info: chef-client pid: 24177 [2014-04-07t14:59:57+05:30] info: run list [recipe[remote_file]] [2014-04-07t14:59:57+05:30] info: run list expands [remote_file] [2014-04-07t14:59:57+05:30] info: starting chef run node-virtual-machine [2014-04-07t14:59:57+05:30] info: running start handlers [2014-04-07t14:59:57+05:30] info: start handlers complete. [2014-04-07t14:59:58+05:30] info: http request returned 404 object not found: resolving cookbooks run list: ["remote_file"] [2014-04-07t14:59:58+05:30] info: loading cookbooks [remote_file] synchronizing cookbooks: [2014-04-07t14:59:58+05:30] info: storing updated cookbooks/remote_file/recipes/default.rb in cache. - remote_file compiling cookbooks... converging 2 resources recipe: remote_file::default * execute[set-env-path] action run[2014-04-07t14:59:58+05:30] info: processing execute[set-env-path] action run (remote_file::default line 39) [2014-04-07t14:59:58+05:30] info: execute[set-env-path] ran - execute echo 'export java_home=/home/node/jdk1.6.0_45' >> /home/node/.profile && echo 'export path=$path:$java_home/bin' >> /home/node/.profile * execute[set-env-path2] action run[2014-04-07t14:59:58+05:30] info: processing execute[set-env-path2] action run (remote_file::default line 44) [2014-04-07t14:59:58+05:30] info: execute[set-env-path2] ran - execute . $home/.profile [2014-04-07t14:59:58+05:30] info: chef run complete in 0.511487679 seconds running handlers: [2014-04-07t14:59:58+05:30] info: running report handlers running handlers complete [2014-04-07t14:59:58+05:30] info: report handlers complete chef client finished, 2/2 resources updated in 1.150640709 seconds node@node-virtual-machine:~$ echo $java_home node@node-virtual-machine:
why .profile file not getting executed on chef client, why environment variables not getting set via chef?
when chef runs execute
resources (including bash
, script
, etc), executed in subshell. setting environment subshell, not chef client process. if need set environment variables, you'll need use ruby block , env
hash:
ruby_block 'set environment' block env['my_variable'] = 'my_value' end end
Comments
Post a Comment