[英]Output of a shell script to chef recipe vaiable-backticks not wokring
嗨,我正在尝试将 shell 脚本的输出设置为厨师食谱中的变量,但我看不到该变量设置不正确; 我已经通过三种方式尝试过:
1.) 直接设置如下:
password = "`/home/#{OWNER}/fox/get_secretsmanager_pwd.sh '#{KEYSTORE_NAME}' 'password'`"
2.) 尝试了以下方法:
ruby_block 'Get ' do
block do
node.set['test']['password'] = "`/home/#{OWNER}/fox/get_secret_pwd.sh '#{KEYSTORE_NAME}' 'password' `"
Chef::Log.info("password: #{node['test']['password']}")
end
action :run
end
3.) 也按以下方式尝试过:
ruby_block 'Get ' do
block do
Chef::Resource::RubyBlock.send(:include, Chef::Mixin::ShellOut)
command = "`/home/#{OWNER}/fox/get_secrets_pwd.sh '#{KEYSTORE_NAME}' 'password' `"
command_out = shell_out(command)
node.set['test']['password'] = command_out.stdout
Chef::Log.info("password2: #{node['test']['password']}")
end
action :run
end
此脚本 (/home/#{OWNER}/fox/get_secrets_pwd.sh '#{KEYSTORE_NAME}' 'password' ) 将从数据库返回文本。
这是由不会引发错误的微妙语法问题引起的。 您为节点属性分配了一个固定字符串,而不是命令的输出,因为您引用了反引号!
您的代码可能还有其他问题,但如果您更改:
node.set['test']['password'] = "`/home/#{OWNER}/fox/get_secret_pwd.sh '#{KEYSTORE_NAME}' 'password' `"
到:
node.set['test']['password'] =
`/home/#{OWNER}/fox/get_secret_pwd.sh '#{KEYSTORE_NAME}' 'password')`
那么它应该正确地将命令的输出分配给节点属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.