Хорошо, я сделаю что-то «простое» для идеи, настоящий оракул conf слишком длинный для здесь.
Использование атрибутов для определения DB (вы можете использовать databag тоже)
Attribute.rb
default['databases']['first']['codepage'] = "utf8"
default['databases']['first']['basedir'] = "/var/data/db1"
default['databases']['second']['codepage'] = "utf8"
default['databases']['second']['basedir'] = "/var/data/db2"
DB.erb
#Section <%= @dbname %>
<%= @dbname %>.codepage = "<%= @props['codepage'] %>"
<%= @dbname %>.path = "<%= @props['basedir'] %>"
#End of section for <%= @dbname %>
Master.erb
#Any configuration needing to be there as common
default.codepage = "cp1252"
default.path = "/var/data/default"
<%- node['databases'].each do |db,properties|
<%= render "DB.erb", :variables => {:dbname => db, :props => properties } %>
<%- end.unless node['databases'].nil? %>
r будет перебирать атрибут для визуализации шаблона DB.erb внутри себя с переданными свойствами.
Полученный файл будет:
default.codepage = "cp1252"
default.path = "/var/data/default"
#Section first
first.codepage = "utf8"
first.path = "/var/data/db2"
#End of section for first
#Section second
second.codepage = "utf8"
second.path = "/var/data/db2"
#End of section for second
Надеется, что это дает указание чего прийти использовать в вашем конкретном случае
Вы не можете. В чем проблема, которую вы пытаетесь решить? –
@DracoAter Я устанавливаю базу данных oracle, мне нужно добавить файл-слушатель, чтобы я мог установить разные версии базы данных оракула на том же vm – user60679
В этом случае вы должны посмотреть на [частичный шаблон] (https://docs.chef.io/resource_template.html#partial-templates), один «главный» шаблон с циклом внутри, включая частичный для каждой базы данных (с правильной опцией в соответствии с циклом). Я не использовал его сам, но могу написать ответ, если он действительно нужен – Tensibai