2016-10-31 9 views
0

私は以下のシェフレシピを作成しています。しかし、私のshell_out呼び出しは、展開された変数の16進値を返すだけです。変数内のfindコマンドの値を取得するにはどうすればいいですか?シェフのシェルアウトは16進数の値を与えます

はここにここに::私のレシピから

so = nil 

bash "getPath" do 
    Chef::Resource::RubyBlock.send(:include, Chef::Mixin::ShellOut) 
    command = "find \/ -path \\*ohai\/plugins" 
    so = shell_out(command) 
end 

listOfFiles = ["#{so}\cert.rb","#{so}\key.rb","#{so}\perms.rb","#{so}\propertiesFiles.rb","#{so}\warFiles.rb","#{so}\yum.rb"] 
templates = { 1 => "cert.rb", 2 => "key.rb", 3 => "perms.rb", 4 => "propertiesFiles.rb", 5 => "warFiles.rb", 6 => "yum.rb" } 
i = 1 

listOfFiles.each do |remote| 
    template "#{remote}" do 
    source 'cert.rb' #this is going to be a variable once I figure out how to call it from the "templates" hash. Just doing a static file for troubleshooting purposes now 
    owner 'root' 
    group 'root' 
    mode '0644' 
    action :create 
    end 
end 

関連するコードsnipetあるシェフ、クライアント実行出力の一部です:ほとんどが

- create new file #<Mixlib::ShellOut:0x00000004dd88b8>yum.rb 
- update content in file #<Mixlib::ShellOut:0x00000004dd88b8>yum.rb from none to fccd51 
--- #<Mixlib::ShellOut:0x00000004dd88b8>yum.rb  2016-10-31 11:52:40.652276263 -0400 
+++ ./.chef-#<Mixlib::ShellOut:0x00000004dd88b8>yum20161031-8408-1svdruo.rb 2016-10-31 11:52:40.652276263 -0400 
@@ -1 +1,17 @@ 
+# 
+# Cookbook Name:: inventory 
+# Recipe:: default 
+# 
+# Copyright (c) 2016 me, All Rights Reserved. 
+ 
+Ohai.plugin(:Cert) do 
+ provides 'certFiles' 
+ 
+ collect_data(:linux) do 
+ certFiles Mash.new 
+ so = shell_out("find \/ -name \"*.crt\"") 
+ certFiles[:values] = so.stdout 
+ end 
+end 
+ 
- change mode from '' to '0644' 
- change owner from '' to 'root' 
- change group from '' to 'root' 
- restore selinux security context 
    * ohai[reload] action reloadPuTTYPuTTYPuTTYPuTTYPuTTY 
- re-run ohai and merge results into node attributes 

Running handlers: 
Running handlers complete 
Chef Client finished, 8/20 resources updated in 05 seconds 
[[email protected] plugins]# PuTTYPuTTYPuTTYPuTTYPuTTY^C 

答えて

2

so = shell_out(command) # Returns a Mixlib::ShellOut object 
output = so.stdout  # Returns stdout of your command, as String 
関連する問題