我想将命令输出转换为chef属性.有人可以帮助我如何在执行资源或bash资源中设置它.
ruby_block "something" do
block do
#tricky way to load this Chef::Mixin::ShellOut utilities
Chef::Resource::RubyBlock.send(:include, Chef::Mixin::ShellOut)
command = 'cat #{fileName}'
command_out = shell_out(command)
node.set['my_attribute'] = command_out.stdout
end
action :create
end
Run Code Online (Sandbox Code Playgroud)
如何在上面的代码中使用属性..
我正在尝试更改一个资源中的属性,并希望在另一个资源中使用更新的值,但更新的值没有反映在另一个资源中。请帮我
代码
node[:oracle][:asm][:disks].each_key do |disk|
Chef::Log.info("I am in #{cookbook_name}::#{recipe_name} and current disk count #{node[:oracle][:asm][:test]}")
bash "beforeTest" do
code <<-EOH
echo #{node[:oracle][:asm][:test]}
EOH
end
ruby_block "test current disk count" do
block do
node.set[:oracle][:asm][:test] = "#{node[:oracle][:asm][:test]}".to_i+1
end
end
bash "test" do
code <<-EOH
echo #{node[:oracle][:asm][:test]}
EOH
end
end
Run Code Online (Sandbox Code Playgroud)
我试图更新的值是存储在 node[:oracle][:asm][:test]
我想使用shell脚本输出来验证保护条件下的资源.我使用下面的代码仍然无法正常工作.
bash "stampDisksuccess" do
code <<-EOH
whoami
EOH
user 'root'
not_if {"`sudo sh /home/scripts/getStampedDisk.sh test`" == ''}
end
Run Code Online (Sandbox Code Playgroud)
无论脚本(getStampedDisk.sh)返回空白消息还是某些数据,bash资源都会被执行.我期待它在脚本返回空白数据时不应该运行.
如果有任何遗漏,请纠正我.
在创建用户时,我们可以在他所属的 gid 中指定组,如果此用户属于多个组,我们如何在厨师中指定
user 'random' do
supports :manage_home => true
comment 'Random User'
uid 1234
gid 'users'
end
Run Code Online (Sandbox Code Playgroud)
如果用户资源不提供此选项,我们如何才能以最佳方式实现。