繁体   English   中英

将 shell 脚本输出到厨师食谱 vaiable-backticks not wokring

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM