2015-03-25 1 views
0
template "/etc/myfile.log" do 
    source "myfile.log" 
    owner root 
    group root 
    mode 644 
end 

Мой вопрос: как я могу создать выше файл в режиме добавления, в следующий раз, когда этот вышеприведенный ресурс запускается, он не должен переопределять содержимое, но он должен его добавить.В разделе «Шеф-повар» Как создать шаблон в режиме добавления

+0

Вы не можете. В чем проблема, которую вы пытаетесь решить? –

+0

@DracoAter Я устанавливаю базу данных oracle, мне нужно добавить файл-слушатель, чтобы я мог установить разные версии базы данных оракула на том же vm – user60679

+1

В этом случае вы должны посмотреть на [частичный шаблон] (https://docs.chef.io/resource_template.html#partial-templates), один «главный» шаблон с циклом внутри, включая частичный для каждой базы данных (с правильной опцией в соответствии с циклом). Я не использовал его сам, но могу написать ответ, если он действительно нужен – Tensibai

ответ

1

Хорошо, я сделаю что-то «простое» для идеи, настоящий оракул 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 

Надеется, что это дает указание чего прийти использовать в вашем конкретном случае

Смежные вопросы