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