ruby
  • chef
  • chef-recipe
  • 2016-09-27 5 views 0 likes 
    0

    シェフの開発:)の新機能では、属性からの変数値がrubyブロックで表示されないようです。ruby​​_blockのノード属性とレシピ変数にアクセスする方法

    installer = node['jdk']['installer'] 
    
    ruby_block "tar-folder-name" do 
         block do 
           command = 'tar -tvf /tmp/#{installer}.tar.gz | head -1 | awk \'{print $NF}\'' 
           command_out = shell_out(command) 
           node.default['tar_folder'] = command_out.stdout 
         end 
         action :run 
    end 
    

    私は、変数値ハードコーディングするときには動作します:

    command = 'tar -tvf /tmp/jdk-7u85-linux-x64.tar.gz | head -1 | awk \'{print $NF}\'' 
    

    私はruby_blockにノード属性を使用することができますどのように? また、rubyブロック外のrubyブロックの変数値を使用するにはどうすればよいですか?情報として、node.tar_folderを使用しようとすると、rubyブロックで抽出された値がありません。

    ありがとうございます。

    +0

    属性/ default.rbファイルに設定されている属性はデフォルトです['jdk'] ['installer'] = 'jdk-7u85-linux-x64' – hamdani

    答えて

    0

    二重引用符が必要です。 Rubyの一重引用符は、補間構文#{foo}をサポートしていません。

    +0

    ありがとうございます。 Rubyブロック外のRubyブロック属性値にアクセスして、後でそのレシピで使用する方法#{node.default ['tar_folder']}を試しましたが、空です。 – hamdani

    +0

    あなたはおそらくbs収束問題をコンパイルするために動いています。 https://coderanger.net/two-pass/をご覧ください。 – coderanger

    関連する問題