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