我有一个第一个问题,但显然,我以错误的方式做事,所以尝试这种新方法。我正在创建一个 systemd 服务文件来运行该服务的多个实例:
if ( (node[:platform] == "redhat" && node[:platform_version] >= "7"))
cookbook_file "/usr/lib/systemd/system/[email protected]" do
source "usr/lib/systemd/system/[email protected]"
owner "root"; group "root"; mode "0644"
end
end
实例(和名称)的数量配置到一个文件中,其中包含一个或多个条目,例如:
OPTIONS_0="--conf=/etc/sec/oracle.sec --input=/var/log/oracle.log "
OPTIONS_1="--conf=/etc/sec/jboss.sec --input=/var/log/jboss.log "
现在,我需要启用此文件中存在的 OPTIONS_X 数量的服务。 作为一个“bash-man”,我会 grep,但我想在 ruby 中一定存在一种正确的方法来做到这一点,这样最终它就会运行:
service "sec@0" do action [:enable, :start] end
service "sec@1" do action [:enable, :start] end
[...]
service "sec@X" do action [:enable, :start] end
谢谢你。
由于服务列表的基础来自文件,bash/shell 实用程序在获取所需的详细信息(即选项的计数)方面会更有效。这也意味着需要正确维护/更新该文件才能使该逻辑发挥作用。
类似:
grep OPTIONS_ path/to/file | wc -l
此计数可以存储在变量中,并且可以基于此启动服务。
count = `grep OPTIONS_ path/to/file | wc -l`
count.to_i.times do |num|
service "sec@#{num}" do
action [:enable, :start]
end
end