我正在尝试自动化Oracle dataguard实施。我们需要将文件从主节点传输到辅助节点。
如果有人做过这样的实施,并且有任何最好的方法,请帮助我。
答案 0 :(得分:0)
这取决于文件内容的确切含义。
如果您有静态文件,则可以将文件放在
下的食谱中<cookbookname>\files\default
并使用cookbook_file资源
将它们移动到配方中的节点上cookbook_file 'filename.ext' do
path 'path\to\where\the\file\will\be
action :create_if_missing
end
操作:create_if_missing只会在路径不存在的情况下将文件放在那里。
关于cookbook_file的更多文档:https://docs.chef.io/resource_cookbook_file.html
如果您的文件需要是动态的,以便它包含基于您正在运行的服务器的不同内容,那么您需要一个模板资源和附带的模板文件。
模板文件进入
<cookbookname>\templates\default
他们需要被命名为
<filename>.<fileextension>.erb
并且它们的格式完全正如您的文件需要格式化,但您放入的变量值除外。变量用
表示<% ruby code to evaluate here %>
或
<%= value to interpolate here %>
换句话说,你可以使用do
<% if condition %>
This will only show up in your created file if the condition is true
<% end %>
或者你可以做
mysitename = <%= @sitename %>
这将导致您的食谱替换&lt;%=%&gt;带有@sitename值的标签。
通过在食谱中执行以下操作来使用模板
template 'path/file/will/be/placed/at' do
variables(
variable_name_1: variable_value,
variable_name_2: variable_value,
...
variable_name_n: variable_value
)
end
路径应以与您要使用的模板相同的文件名减去.erb扩展名。请注意,variable_names不以@开头,但是当您在模板文件中使用它们时,您需要在它们前面加上@。
https://docs.chef.io/resource_template.html
上有关模板的更多信息希望这有帮助。