chef轻量级提供程序,具有两个共享相同代码而无需重复的操作

时间:2014-03-19 16:10:16

标签: ruby chef

我正在写一个使用bup进行备份的厨师lwrp。 所以我可以说我在provider / default.rb中有这个代码:

action :backupfiles do
  # create backup dir
  directory new_resource.backupdir do
    owner "nobody"
    group "nogroup"
    mode "0755"
    action :create
  end

  // some file backup specific code
end

action :backupmysql do
  # create backup dir
  directory new_resource.backupdir do
    owner "nobody"
    group "nogroup"
    mode "0755"
    action :create
  end

  // some mysql backup specific stuff
end

因此两个动作共享创建备份目录的代码。

创建共享操作或类似操作的最简单方法是什么,因此我不必在备份文件和:backupmysql中创建backupdir。 我只想包含两个操作相同的共享代码。

所以基本上我想要这种类型的布局

  • 备份 - 备份操作使用的通用内容。
  • backupmysql - 仅用于mysql备份的特定内容。
  • backupfiles - 仅用于文件/目录备份的特定内容。

1 个答案:

答案 0 :(得分:1)

您可以在操作之外定义一个调用公共资源的函数。它可能看起来像这样:

def backup_directory(path)
  directory path do
    owner "root"
    group "root"
    mode 0755 
    action :create
  end
end

然后您可以在操作中调用backup_directory new_resource.backupdir