github.com/swiftstack/proxyfs@v0.0.0-20201223034610-5434d919416e/cookbooks/swift/recipes/configs.rb (about)

     1  # Copyright (c) 2015 SwiftStack, Inc.
     2  #
     3  # Licensed under the Apache License, Version 2.0 (the "License");
     4  # you may not use this file except in compliance with the License.
     5  # You may obtain a copy of the License at
     6  #
     7  #    http://www.apache.org/licenses/LICENSE-2.0
     8  #
     9  # Unless required by applicable law or agreed to in writing, software
    10  # distributed under the License is distributed on an "AS IS" BASIS,
    11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    12  # implied.
    13  # See the License for the specific language governing permissions and
    14  # limitations under the License.
    15  
    16  # rsync
    17  
    18  rsync_service = "rsync"
    19  if node[:platform_family].include?("rhel")
    20    rsync_service = "rsyncd"
    21  end
    22  
    23  template "/etc/rsyncd.conf" do
    24    source "etc/rsyncd.conf.erb"
    25    notifies :restart, "service[#{rsync_service}]"
    26    variables({
    27      :swift_user => node['swift_user'],
    28      :swift_group => node['swift_group'],
    29    })
    30  end
    31  
    32  # TODO:  I suppose this should be a file rather than a template
    33  template "/etc/default/#{rsync_service}" do
    34    source "etc/default/#{rsync_service}.erb"
    35    notifies :restart, "service[#{rsync_service}]"
    36    not_if { ::File.exist?("/etc/default/#{rsync_service}") }
    37    variables({
    38    })
    39  end
    40  
    41  execute "enable-rsync" do
    42    command "sed -i 's/ENABLE=false/ENABLE=true/' /etc/default/#{rsync_service}"
    43    not_if "grep ENABLE=true /etc/default/#{rsync_service}"
    44    action :run
    45  end
    46  
    47  [
    48    "#{rsync_service}",
    49    "memcached",
    50    "rsyslog",
    51  ].each do |daemon|
    52    service daemon do
    53      action :start
    54    end
    55  end
    56  
    57  # swift
    58  
    59  directory "/etc/swift" do
    60    owner "#{node['swift_user']}"
    61    group "#{node['swift_group']}"
    62    action :create
    63  end
    64  
    65  template "/etc/swift/swift.conf" do
    66    source "/etc/swift/swift.conf.erb"
    67    owner "#{node['swift_user']}"
    68    group "#{node['swift_group']}"
    69    variables({
    70      :storage_policies => node['storage_policies'],
    71      :ec_policy => node['ec_policy'],
    72      :ec_replicas => node['ec_replicas'],
    73    })
    74  end
    75  
    76  # TODO: refactor with the above
    77  template "/etc/swift/base.conf-template" do
    78    source "etc/swift/base.conf-template.erb"
    79    owner "#{node['swift_user']}"
    80    group "#{node['swift_group']}"
    81    variables({
    82      :swift_user => node['swift_user'],
    83      :swift_group => node['swift_group'],
    84    })
    85  end
    86  
    87  [
    88    'test.conf',
    89    'dispersion.conf',
    90    'bench.conf',
    91    'container-sync-realms.conf'
    92  ].each do |filename|
    93    cookbook_file "/etc/swift/#{filename}" do
    94      source "etc/swift/#{filename}"
    95      owner "#{node['swift_user']}"
    96      group "#{node['swift_group']}"
    97    end
    98  end
    99  
   100  # proxies
   101  
   102  directory "/etc/swift/proxy-server" do
   103    owner "#{node['swift_user']}"
   104    group "#{node['swift_group']}"
   105  end
   106  
   107  template "/etc/swift/proxy-server/default.conf-template" do
   108    source "etc/swift/proxy-server/default.conf-template.erb"
   109    owner "#{node['swift_user']}"
   110    group "#{node['swift_group']}"
   111    variables({
   112      :post_as_copy => node['post_as_copy'],
   113    })
   114  end
   115  
   116  [
   117    "proxy-server",
   118    "proxy-noauth",
   119  ].each do |proxy|
   120    proxy_conf_dir = "etc/swift/proxy-server/#{proxy}.conf.d"
   121    directory proxy_conf_dir do
   122      owner "#{node['swift_user']}"
   123      group "#{node['swift_group']}"
   124      action :create
   125    end
   126    link "/#{proxy_conf_dir}/00_base.conf" do
   127      to "/etc/swift/base.conf-template"
   128      owner "#{node['swift_user']}"
   129      group "#{node['swift_group']}"
   130    end
   131    link "/#{proxy_conf_dir}/10_default.conf" do
   132      to "/etc/swift/proxy-server/default.conf-template"
   133      owner "#{node['swift_user']}"
   134      group "#{node['swift_group']}"
   135    end
   136    cookbook_file "#{proxy_conf_dir}/20_settings.conf" do
   137      source "#{proxy_conf_dir}/20_settings.conf"
   138      owner "#{node['swift_user']}"
   139      group "#{node['swift_group']}"
   140    end
   141  end
   142  
   143  ["object", "container", "account"].each_with_index do |service, p|
   144    service_dir = "etc/swift/#{service}-server"
   145    directory "/#{service_dir}" do
   146      owner "#{node['swift_user']}"
   147      group "#{node['swift_group']}"
   148      action :create
   149    end
   150    if service == "object" then
   151      template "/#{service_dir}/default.conf-template" do
   152        source "#{service_dir}/default.conf-template.erb"
   153        owner "#{node['swift_user']}"
   154        group "#{node['swift_group']}"
   155        variables({
   156          :sync_method => node['object_sync_method'],
   157          :servers_per_port => node['servers_per_port'],
   158        })
   159      end
   160    else
   161      cookbook_file "/#{service_dir}/default.conf-template" do
   162        source "#{service_dir}/default.conf-template"
   163        owner "#{node['swift_user']}"
   164        group "#{node['swift_group']}"
   165      end
   166    end
   167    (1..node['nodes']).each do |i|
   168      bind_ip = "127.0.0.1"
   169      bind_port = "60#{i}#{p}"
   170      if service == "object" && node['servers_per_port'] > 0 then
   171        # Only use unique IPs if servers_per_port is enabled.  This lets this
   172        # newer vagrant-swift-all-in-one work with older swift that doesn't have
   173        # the required whataremyips() plumbing to make unique IPs work.
   174        bind_ip = "127.0.0.#{i}"
   175  
   176        # This config setting shouldn't really matter in the server-per-port
   177        # scenario, but it should probably at least be equal to one of the actual
   178        # ports in the ring.
   179        bind_port = "60#{i}6"
   180      end
   181      conf_dir = "#{service_dir}/#{i}.conf.d"
   182      directory "/#{conf_dir}" do
   183        owner "#{node['swift_user']}"
   184        group "#{node['swift_group']}"
   185      end
   186      link "/#{conf_dir}/00_base.conf" do
   187        to "/etc/swift/base.conf-template"
   188        owner "#{node['swift_user']}"
   189        group "#{node['swift_group']}"
   190      end
   191      link "/#{conf_dir}/10_default.conf" do
   192        to "/#{service_dir}/default.conf-template"
   193        owner "#{node['swift_user']}"
   194        group "#{node['swift_group']}"
   195      end
   196      template "/#{conf_dir}/20_settings.conf" do
   197        source "#{service_dir}/settings.conf.erb"
   198        owner "#{node['swift_user']}"
   199        group "#{node['swift_group']}"
   200        variables({
   201           :srv_path => "/srv/node#{i}",
   202           :bind_ip => bind_ip,
   203           :bind_port => bind_port,
   204           :recon_cache_path => "/var/cache/swift/node#{i}",
   205        })
   206      end
   207    end
   208  end
   209  
   210  # object-expirer
   211  directory "/etc/swift/object-expirer.conf.d" do
   212    owner "#{node['swift_user']}"
   213    group "#{node['swift_group']}"
   214    action :create
   215  end
   216  link "/etc/swift/object-expirer.conf.d/00_base.conf" do
   217    to "/etc/swift/base.conf-template"
   218    owner "#{node['swift_user']}"
   219    group "#{node['swift_group']}"
   220  end
   221  cookbook_file "/etc/swift/object-expirer.conf.d/20_settings.conf" do
   222    source "etc/swift/object-expirer.conf.d/20_settings.conf"
   223    owner "#{node['swift_user']}"
   224    group "#{node['swift_group']}"
   225  end
   226  
   227  # container-reconciler
   228  directory "/etc/swift/container-reconciler.conf.d" do
   229    owner "#{node['swift_user']}"
   230    group "#{node['swift_group']}"
   231    action :create
   232  end
   233  link "/etc/swift/container-reconciler.conf.d/00_base.conf" do
   234    to "/etc/swift/base.conf-template"
   235    owner "#{node['swift_user']}"
   236    group "#{node['swift_group']}"
   237  end
   238  cookbook_file "/etc/swift/container-reconciler.conf.d/20_settings.conf" do
   239    source "etc/swift/container-reconciler.conf.d/20_settings.conf"
   240    owner "#{node['swift_user']}"
   241    group "#{node['swift_group']}"
   242  end