github.com/swiftstack/ProxyFS@v0.0.0-20210203235616-4017c267d62f/cookbooks/proxyfs_swift/recipes/default.rb (about)

     1  # Copyright (c) 2015-2021, NVIDIA CORPORATION.
     2  # SPDX-License-Identifier: Apache-2.0
     3  
     4  # rsync
     5  
     6  rsync_service = "rsync"
     7  if node[:platform_family].include?("rhel")
     8    rsync_service = "rsyncd"
     9  end
    10  
    11  template "/etc/rsyncd.conf" do
    12    source "etc/rsyncd.conf.erb"
    13    notifies :restart, "service[#{rsync_service}]"
    14    variables({
    15      :swift_user => node['swift_user'],
    16      :swift_group => node['swift_group'],
    17    })
    18  end
    19  
    20  # TODO:  I suppose this should be a file rather than a template
    21  template "/etc/default/#{rsync_service}" do
    22    source "etc/default/#{rsync_service}.erb"
    23    notifies :restart, "service[#{rsync_service}]"
    24    not_if { ::File.exist?("/etc/default/#{rsync_service}") }
    25    variables({
    26    })
    27  end
    28  
    29  execute "enable-rsync" do
    30    command "sed -i 's/ENABLE=false/ENABLE=true/' /etc/default/#{rsync_service}"
    31    not_if "grep ENABLE=true /etc/default/#{rsync_service}"
    32    action :run
    33  end
    34  
    35  [
    36    "#{rsync_service}",
    37    "memcached",
    38    "rsyslog",
    39  ].each do |daemon|
    40    service daemon do
    41      action :start
    42    end
    43  end
    44  
    45  ruby_block "update_proxy_server_pipeline" do
    46    block do
    47      proxy_server_conf = "/etc/swift/proxy-server.conf"
    48  
    49      if File.file?(proxy_server_conf)
    50        file = Chef::Util::FileEdit.new(proxy_server_conf)
    51        file.search_file_replace(/^( *pipeline\s*=.*?)\s+dlo\s+(?:pfs\s+)?(.*)$/, '\1 dlo pfs \2')
    52        file.insert_line_if_no_match(/filter.pfs/, "")
    53        file.insert_line_if_no_match(/filter.pfs/, "[filter:pfs]")
    54        file.insert_line_if_no_match(/egg.pfs_middleware/, "use = egg:pfs_middleware#pfs")
    55        file.insert_line_if_no_match(/proxyfsd_host/, "proxyfsd_host = 127.0.0.1")
    56        file.insert_line_if_no_match(/proxyfsd_port/, "proxyfsd_port = 12345")
    57        file.insert_line_if_no_match(/bypass_mode/, "bypass_mode = read-write")
    58        file.write_file
    59      end
    60    end
    61  end
    62  
    63  proxy_conf_dir = "etc/swift/proxy-server/proxy-noauth.conf.d"
    64  %w[ etc/swift/proxy-server etc/swift/proxy-server/proxy-noauth.conf.d ].each do |path|
    65    directory path do
    66      owner "#{node['swift_user']}"
    67      group "#{node['swift_group']}"
    68      action :create
    69    end
    70  end
    71  template "/#{proxy_conf_dir}/00_base.conf" do
    72    source "etc/swift/base.conf-template.erb"
    73    owner "#{node['swift_user']}"
    74    group "#{node['swift_group']}"
    75    variables({
    76      :swift_user => node['swift_user'],
    77      :swift_group => node['swift_group'],
    78    })
    79  end
    80  template "/#{proxy_conf_dir}/10_default.conf" do
    81    source "etc/swift/proxy-server/default.conf-template.erb"
    82    owner "#{node['swift_user']}"
    83    group "#{node['swift_group']}"
    84    variables({
    85      :post_as_copy => node['post_as_copy'],
    86    })
    87  end
    88  cookbook_file "#{proxy_conf_dir}/20_settings.conf" do
    89    source "#{proxy_conf_dir}/20_settings.conf"
    90    owner "#{node['swift_user']}"
    91    group "#{node['swift_group']}"
    92  end
    93  
    94  ruby_block "update_noauth_proxy_server_pipeline" do
    95    block do
    96      noauth_proxy_server_conf = "/etc/swift/proxy-server/proxy-noauth.conf.d/20_settings.conf"
    97  
    98      if File.file?(noauth_proxy_server_conf)
    99        file = Chef::Util::FileEdit.new(noauth_proxy_server_conf)
   100        file.search_file_replace(/ dlo /, " dlo meta ")
   101        file.insert_line_if_no_match(/filter.meta/, "")
   102        file.insert_line_if_no_match(/filter.meta/, "[filter:meta]")
   103        file.insert_line_if_no_match(/egg.meta_middleware/, "use = egg:meta_middleware#meta")
   104        file.write_file
   105      end
   106    end
   107  end
   108  
   109  # start main
   110  
   111  cookbook_file "/usr/lib/systemd/system/swift.service" do
   112    source "usr/lib/systemd/system/swift.service"
   113    # notifies :restart, 'service[swift]'
   114    only_if { ::File.directory?("/usr/lib/systemd/system/") }
   115  end
   116  
   117  # Enable Swift to start at bootup on Centos
   118  #
   119  #
   120  if node[:platform_family].include?("rhel")
   121    execute "Enable Swift to start at bootup on Centos" do
   122    command "/usr/bin/systemctl enable swift.service"
   123    end
   124  end
   125  
   126  cookbook_file "/etc/init/swift.conf" do
   127    source "etc/init/swift.upstart"
   128    # notifies :restart, 'service[swift]'
   129    only_if { ::File.directory?("/etc/init") }
   130  end
   131  
   132  execute "startmain" do
   133    command "swift-init start main"
   134  end