如何在 CHEF 配方的 shell 脚本中使用节点属性
How to use node attributes in a shell script in CHEF recipe
我创建了一个新的 CHEF Cookbook,并在属性文件夹中将以下值添加到默认 attribute.rb 文件
********
node.default['main']['a2'] = "hello world"
********
在厨师食谱中,我想回显或创建一个名为 "hello world"
的新文件
配方有以下几行:
食谱名称:: a2
# Recipe:: default<br>
#<br>
# Copyright (c) 2018 The Authors, All Rights Reserved.<br>
execute 'just_test' do <br>
command 'touch /tmp/a2345' <br>
end <br>
execute 'just_test1' do <br>
command "touch /tmp/node['main']['a2']" <br>
end <br>
execute 'just_test2' do <br>
command "echo node['main']['a2']" <br>
end <br>
虽然配方成功,但我没有看到 "hello world"
的文件
recipe: a2::default
* execute[just_test] action run
- execute touch /tmp/a2345
* execute[just_test1] action run
- execute touch /tmp/node['main']['a2']
* execute[just_test2] action run
- execute echo node['main']['a2']
[2018-04-03T15:52:18+00:00] WARN: Skipping final node save because override_runlist was given
在 tmp 目录中创建了以下文件
a2345节点[主][a2]
我们如何在 CHEF 食谱中进行属性替换???
是否有替代方案来实现此功能
谢谢
- 你不应该使用 execute 来创建一个空文件,使用 file resource.
- Chef 写在 Ruby 和 follows Ruby string interpolation 中。因此,在您的情况下应该是
"touch /tmp/#{node['main']['a2']}"
- 外部双引号很重要。
- 您是否尝试过我们的official documentation?。你可以在那里了解这个和其他有用的 'cases'.
我创建了一个新的 CHEF Cookbook,并在属性文件夹中将以下值添加到默认 attribute.rb 文件
********
node.default['main']['a2'] = "hello world"
********
在厨师食谱中,我想回显或创建一个名为 "hello world"
配方有以下几行:
食谱名称:: a2
# Recipe:: default<br>
#<br>
# Copyright (c) 2018 The Authors, All Rights Reserved.<br>
execute 'just_test' do <br>
command 'touch /tmp/a2345' <br>
end <br>
execute 'just_test1' do <br>
command "touch /tmp/node['main']['a2']" <br>
end <br>
execute 'just_test2' do <br>
command "echo node['main']['a2']" <br>
end <br>
虽然配方成功,但我没有看到 "hello world"
的文件recipe: a2::default
* execute[just_test] action run
- execute touch /tmp/a2345
* execute[just_test1] action run
- execute touch /tmp/node['main']['a2']
* execute[just_test2] action run
- execute echo node['main']['a2']
[2018-04-03T15:52:18+00:00] WARN: Skipping final node save because override_runlist was given
在 tmp 目录中创建了以下文件
a2345节点[主][a2]
我们如何在 CHEF 食谱中进行属性替换??? 是否有替代方案来实现此功能
谢谢
- 你不应该使用 execute 来创建一个空文件,使用 file resource.
- Chef 写在 Ruby 和 follows Ruby string interpolation 中。因此,在您的情况下应该是
"touch /tmp/#{node['main']['a2']}"
- 外部双引号很重要。 - 您是否尝试过我们的official documentation?。你可以在那里了解这个和其他有用的 'cases'.