【问题标题】:chef lightweight provider with a two actions that share same code without duplicationChef 轻量级提供程序,具有两个共享相同代码且不重复的操作
【发布时间】:2014-03-25 11:14:14
【问题描述】:

我正在编写一个使用 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

所以这两个操作共享用于创建备份目录的代码。

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

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

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

【问题讨论】:

    标签: ruby chef-infra


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 2019-11-27
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多