【问题标题】:Applying owner / group recursively in Chef在 Chef 中递归地应用所有者/组
【发布时间】:2014-10-04 06:10:24
【问题描述】:

我在 Chef 中有一段 ruby​​ 代码,它递归地创建一些目录

 # Deploy config files from files
  unless instance[:directories].nil?
    instance[:directories].each do |dir|
      unless File.directory?("#{dir[:source_dir]}")
        remote_directory "#{dir[:path]}" do
          source "#{dir[:source_dir]}"
          owner "#{config[:owner]}"
          group "#{config[:group]}"
          recursive true
          notifies :run, "execute[change permissions]", :immediately
          notifies :restart, "service[#{instance[:name]}]"
        end
      end
    end
  end

根据规范,remote_directory 资源仅将所有者/组权限应用于指定路径中的叶节点,而不应用于创建的中间节点。

我计划在创建路径并递归应用权限时通知执行命令。如何传递参数(在本例中为 #{dir[:path]})以执行如下命令。

  execute "change permissions" do
    command "chown -R #{config[:owner]}:#{config[:group]} #{path}"
    user "root"
    action :nothing
  end

【问题讨论】:

    标签: ruby chef-infra


    【解决方案1】:

    你没有。在远程目录资源中包含执行资源:

    unless instance[:directories].nil?
        instance[:directories].each do |dir|
          unless File.directory?("#{dir[:source_dir]}")
            path = dir[:path]
    
            remote_directory path do
              source dir[:source_dir]
              owner config[:owner]
              group config[:group]
              recursive true
              notifies :run, "execute[change-permission-#{path}]", :immediately
              notifies :restart, "service[#{instance[:name]}]"
            end
    
            execute "change-permission-#{path}" do
              command "chown -R #{config[:owner]}:#{config[:group]} #{path}"
              user "root"
              action :nothing
            end
          end
        end
      end
    

    【讨论】:

      猜你喜欢
      • 2014-07-18
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      相关资源
      最近更新 更多