github.com/swiftstack/ProxyFS@v0.0.0-20210203235616-4017c267d62f/cookbooks/swift/recipes/configs.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  # swift
    46  
    47  directory "/etc/swift" do
    48    owner "#{node['swift_user']}"
    49    group "#{node['swift_group']}"
    50    action :create
    51  end
    52  
    53  template "/etc/swift/swift.conf" do
    54    source "/etc/swift/swift.conf.erb"
    55    owner "#{node['swift_user']}"
    56    group "#{node['swift_group']}"
    57    variables({
    58      :storage_policies => node['storage_policies'],
    59      :ec_policy => node['ec_policy'],
    60      :ec_replicas => node['ec_replicas'],
    61    })
    62  end
    63  
    64  # TODO: refactor with the above
    65  template "/etc/swift/base.conf-template" do
    66    source "etc/swift/base.conf-template.erb"
    67    owner "#{node['swift_user']}"
    68    group "#{node['swift_group']}"
    69    variables({
    70      :swift_user => node['swift_user'],
    71      :swift_group => node['swift_group'],
    72    })
    73  end
    74  
    75  [
    76    'test.conf',
    77    'dispersion.conf',
    78    'bench.conf',
    79    'container-sync-realms.conf'
    80  ].each do |filename|
    81    cookbook_file "/etc/swift/#{filename}" do
    82      source "etc/swift/#{filename}"
    83      owner "#{node['swift_user']}"
    84      group "#{node['swift_group']}"
    85    end
    86  end
    87  
    88  # proxies
    89  
    90  directory "/etc/swift/proxy-server" do
    91    owner "#{node['swift_user']}"
    92    group "#{node['swift_group']}"
    93  end
    94  
    95  template "/etc/swift/proxy-server/default.conf-template" do
    96    source "etc/swift/proxy-server/default.conf-template.erb"
    97    owner "#{node['swift_user']}"
    98    group "#{node['swift_group']}"
    99    variables({
   100      :post_as_copy => node['post_as_copy'],
   101    })
   102  end
   103  
   104  [
   105    "proxy-server",
   106    "proxy-noauth",
   107  ].each do |proxy|
   108    proxy_conf_dir = "etc/swift/proxy-server/#{proxy}.conf.d"
   109    directory proxy_conf_dir do
   110      owner "#{node['swift_user']}"
   111      group "#{node['swift_group']}"
   112      action :create
   113    end
   114    link "/#{proxy_conf_dir}/00_base.conf" do
   115      to "/etc/swift/base.conf-template"
   116      owner "#{node['swift_user']}"
   117      group "#{node['swift_group']}"
   118    end
   119    link "/#{proxy_conf_dir}/10_default.conf" do
   120      to "/etc/swift/proxy-server/default.conf-template"
   121      owner "#{node['swift_user']}"
   122      group "#{node['swift_group']}"
   123    end
   124    cookbook_file "#{proxy_conf_dir}/20_settings.conf" do
   125      source "#{proxy_conf_dir}/20_settings.conf"
   126      owner "#{node['swift_user']}"
   127      group "#{node['swift_group']}"
   128    end
   129  end
   130  
   131  ["object", "container", "account"].each_with_index do |service, p|
   132    service_dir = "etc/swift/#{service}-server"
   133    directory "/#{service_dir}" do
   134      owner "#{node['swift_user']}"
   135      group "#{node['swift_group']}"
   136      action :create
   137    end
   138    if service == "object" then
   139      template "/#{service_dir}/default.conf-template" do
   140        source "#{service_dir}/default.conf-template.erb"
   141        owner "#{node['swift_user']}"
   142        group "#{node['swift_group']}"
   143        variables({
   144          :sync_method => node['object_sync_method'],
   145          :servers_per_port => node['servers_per_port'],
   146        })
   147      end
   148    else
   149      cookbook_file "/#{service_dir}/default.conf-template" do
   150        source "#{service_dir}/default.conf-template"
   151        owner "#{node['swift_user']}"
   152        group "#{node['swift_group']}"
   153      end
   154    end
   155    (1..node['nodes']).each do |i|
   156      bind_ip = "127.0.0.1"
   157      bind_port = "60#{i}#{p}"
   158      if service == "object" && node['servers_per_port'] > 0 then
   159        # Only use unique IPs if servers_per_port is enabled.  This lets this
   160        # newer vagrant-swift-all-in-one work with older swift that doesn't have
   161        # the required whataremyips() plumbing to make unique IPs work.
   162        bind_ip = "127.0.0.#{i}"
   163  
   164        # This config setting shouldn't really matter in the server-per-port
   165        # scenario, but it should probably at least be equal to one of the actual
   166        # ports in the ring.
   167        bind_port = "60#{i}6"
   168      end
   169      conf_dir = "#{service_dir}/#{i}.conf.d"
   170      directory "/#{conf_dir}" do
   171        owner "#{node['swift_user']}"
   172        group "#{node['swift_group']}"
   173      end
   174      link "/#{conf_dir}/00_base.conf" do
   175        to "/etc/swift/base.conf-template"
   176        owner "#{node['swift_user']}"
   177        group "#{node['swift_group']}"
   178      end
   179      link "/#{conf_dir}/10_default.conf" do
   180        to "/#{service_dir}/default.conf-template"
   181        owner "#{node['swift_user']}"
   182        group "#{node['swift_group']}"
   183      end
   184      template "/#{conf_dir}/20_settings.conf" do
   185        source "#{service_dir}/settings.conf.erb"
   186        owner "#{node['swift_user']}"
   187        group "#{node['swift_group']}"
   188        variables({
   189           :srv_path => "/srv/node#{i}",
   190           :bind_ip => bind_ip,
   191           :bind_port => bind_port,
   192           :recon_cache_path => "/var/cache/swift/node#{i}",
   193        })
   194      end
   195    end
   196  end
   197  
   198  # object-expirer
   199  directory "/etc/swift/object-expirer.conf.d" do
   200    owner "#{node['swift_user']}"
   201    group "#{node['swift_group']}"
   202    action :create
   203  end
   204  link "/etc/swift/object-expirer.conf.d/00_base.conf" do
   205    to "/etc/swift/base.conf-template"
   206    owner "#{node['swift_user']}"
   207    group "#{node['swift_group']}"
   208  end
   209  cookbook_file "/etc/swift/object-expirer.conf.d/20_settings.conf" do
   210    source "etc/swift/object-expirer.conf.d/20_settings.conf"
   211    owner "#{node['swift_user']}"
   212    group "#{node['swift_group']}"
   213  end
   214  
   215  # container-reconciler
   216  directory "/etc/swift/container-reconciler.conf.d" do
   217    owner "#{node['swift_user']}"
   218    group "#{node['swift_group']}"
   219    action :create
   220  end
   221  link "/etc/swift/container-reconciler.conf.d/00_base.conf" do
   222    to "/etc/swift/base.conf-template"
   223    owner "#{node['swift_user']}"
   224    group "#{node['swift_group']}"
   225  end
   226  cookbook_file "/etc/swift/container-reconciler.conf.d/20_settings.conf" do
   227    source "etc/swift/container-reconciler.conf.d/20_settings.conf"
   228    owner "#{node['swift_user']}"
   229    group "#{node['swift_group']}"
   230  end