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