2016-07-08 23 views
0

在厨师,属性看起来如下:如何把每个数组元素,在双引号

default['cluster']['ipaddress'] = ["10.211.130.108", "10.211.242.203"] 

在厨师的食谱,我已经把每个数组元素,在双引号,使用map

json_nodes = node['consul']['cluster']['ipaddress'].map { |s| "#{s.to_s}:8300" } 

bash 'configuring file.json' do 
    code <<-EOH 
    echo #{json_nodes} > "/home/user1/file.json" 
    EOH 
end 

我得到的文件/home/user1/file.json内输出如下:

[10.211.130.108:8300, 10.211.242.203:8300] 

钍Ë输出应该有双引号,如下所示:

["10.211.130.108:8300", "10.211.242.203:8300"] 
+0

输出是真的如你所描述的,不'“10.211.130.108:8300,10.211.242.203:8300”'? – StephenKing

+0

你如何在厨师“输出”这个? – StephenKing

+0

我编辑了我的问题。请帮助我。谢谢@StephenKing – meallhour

回答

1

如何:

json_nodes = node['cluster']['ipaddress'].map { |s| "#{s.to_s}:8300" } 

我没有你的数据,但这里是从我的控制台例如:

[3] pry(main)> arr = [1,2,3,4,5] 
=> [1, 2, 3, 4, 5] 
[4] pry(main)> arr.map { |s| "#{s.to_s}:3000" } 
=> ["1:3000", "2:3000", "3:3000", "4:3000", "5:3000"] 

注当我把.join放到最后时,它将它们全部串联在一个字符串中。

[8] pry(main)> arr.map { |s| "#{s.to_s}:3000" }.join(',') 
=> "1:3000,2:3000,3:3000,4:3000,5:3000" 
+0

我没有看到双引号。输出仍然是'[10.211.130.108:8300,10.211.242.203:8300]' – meallhour

+0

你还在做结尾的.join(',')吗?如果是这样,那将把所有元素连接成逗号分隔的字符串。如果你想要数组的元素被双引号,我的答案应该工作。 – andrunix

+0

它不工作。你能帮我最近发布的答案 – meallhour

0

此代码对你在你自己的答案指定的。这有点奇怪,但你正在瞄准的字符串看起来像一个数组声明。

a = ['10.211.130.108','10.211.242.203'] 
a.map! { |s| "\"#{s}:8300\"" } 
result = "[#{a.join(',')}]" 
puts result 
# Output: ["10.211.130.108:8300","10.211.242.203:8300"] 
+0

我没有看到双引号。输出仍为'[10.211.130.108:8300,10.211.242.203:8300]' – meallhour

+0

我编辑了我的答案,请再试一次。 – BrunoFacca

+0

通过用'each'替换'map',我仍然没有得到双引号。请检查你的结局。 – meallhour

1

事情变得容易很多,当你使用厨师的方式(并不称为bash ..)。你的问题转化为在厨师解决它:

file "/home/user1/file.json" do 
    content node['consul']['cluster']['ipaddress'].map { |s| "#{s}:8300" }.to_s 
end 

如果您需要非root所有权和读权限,看看在owner and mode options of the file resource

-1

我能够用得到双引号如下:

json_nodes = node['cluster']['ipaddress'].map { |s| "\"#{s.to_s}:8300\"" } 
+0

当然,但如果你仍然使用'bash'资源,那么你只是完全错误地使用Chef。你不应该这样做,那么你不会遇到这个引用问题,因为你不必逃避bash命令。 – StephenKing

相关问题