gpt4 book ai didi

ruby - 使用 sed 递归查找和替换

转载 作者:太空宇宙 更新时间:2023-11-03 17:53:02 24 4
gpt4 key购买 nike

我正在使用 Chef Recipe 来更新我节点上的配置文件。文件的内容如下所示:

server server1.domain.com
server server2.domain.com

我在我的属性文件中定义了一个 ruby​​ 数组,如下所示:

default['servers'] = %w(xyz.domain.com abc.domain.com)

我想递归地使用 sed 来替换文件中的服务器值,这样我的文件就这样更新了:

server xyz.domain.com
server abc.domain.com

我在我的 Recipe 中尝试了以下 ruby​​ 循环:

(node['servers']).each_with_index do |ntserver,index|
bash "server set" do

code <<-EOH
sed -i 's|server .*|server #{node['servers'].at(index)}|' /etc/ntp.conf
EOH

end
end

但是运行chef-client并分别应用更改后,配置文件的内容如下:

server abc.domain.com
server abc.domain.com

我是 sed 命令的新手,所以不知道哪里出错了。任何帮助将不胜感激。

最佳答案

按照设计,您不应使用 Chef 修改文件。相反,您用 cookbook_file 覆盖了整个文件资源,或者,如果您需要将一些动态值插入到文件中,请使用 template资源。

关于ruby - 使用 sed 递归查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20424552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com