Class: Cleanfb::Clean
- Inherits:
-
Object
- Object
- Cleanfb::Clean
- Defined in:
- lib/cleanfb.rb
Instance Method Summary collapse
-
#remove ⇒ Object
Method to remove ALL files backed up on the Puppet masters filebucket from a specified agent.
- #restore ⇒ Object
Instance Method Details
#remove ⇒ Object
Method to remove ALL files backed up on the Puppet masters filebucket from a specified agent.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/cleanfb.rb', line 12 def remove() # return if no args return "Please supply a file" if ARGV[0].nil? || ARGV[0].empty? # return the help output if requested if ((ARGV.include? "-h") or (ARGV.include? "--help")) return "Remove backups of an agent from the Puppet master's filebucket.\nBackups are stored at /root/saved_configs/\n\n Usage: cleanfb <client> <options>\n\n options: -h or --help | help and information\n -y | defaults all input to yes\n" end arg = ARGV[0] # set ans to yes automatically if -y option if !ARGV.nil? and (ARGV.include? "-y") and ARGV.length > 1 ans = "y" arg = ARGV[1] if (ARGV.index("-y") == 0) # else prompt for answer else print "Remove #{arg} ? y|n: " ans = STDIN.gets.chomp end # if yes, retrieve the files and remove them if ans == "y" || ans == "yes" cmd = `puppet filebucket list -l|grep -i #{arg}` unless (ARGV.include? "-y") test = cmd.split(" ").last multi_match = false cmd.each_line do |line| if !line.include? test multi_match = true end end if multi_match print "Matched multiple hosts. Remove all? y|n: " ans = STDIN.gets.chomp unless ans == "y" || ans == "yes" return "Ending run" end end end unless cmd.nil? || cmd.empty? cmd.each_line do |line| path = "/opt/puppetlabs/puppet/cache/bucket" sum = line.split(" ")[0] start = (sum.scan /\w/).join("/") file = line.split(" ")[3].split("/").last name = file.split("_")[0] date = line.split(" ")[1] time = line.split(" ")[2] save_dir = "/root/saved_configs/" unless Dir.exist? save_dir Dir.mkdir(File.join(Dir.home("root"), "saved_configs"), 0700) end unless Dir.exist? "#{save_dir}/#{name}/" Dir.mkdir(File.join("#{save_dir}", "#{name}"), 0700) end path += "/" + start[0..15] + sum + "/" if File.exist? "#{path}/contents" puts "Storing " + path puts "at /root/saved_configs/#{name}/#{date}_#{time}_#{file}" cmd = `mv -f #{path}contents /root/saved_configs/#{name}/#{date}_#{time}_#{file}` cmd = `rm -rf #{path}` else puts "No file #{arg} found." end end else puts "No file #{arg} found." end end return end |
#restore ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/cleanfb.rb', line 102 def restore() # return if no args return "Please supply a file" if ARGV[0].nil? || ARGV[0].empty? # return the help output if requested if ((ARGV.include? "-h") or (ARGV.include? "--help")) return "Remove backups of an agent from the Puppet master's filebucket.\nBackups are stored at /root/saved_configs/\n\n Usage: cleanfb <client> <options>\n\n options: -h or --help | help and information\n -y | defaults all input to yes\n" end arg = ARGV[1] # set ans to yes automatically if -y option if !ARGV.nil? and (ARGV.include? "-y") and ARGV.length > 1 ans = "y" arg = ARGV[1] if (ARGV.index("-y") == 0) # else prompt for answer else print "Restore #{arg} ? y|n: " ans = STDIN.gets.chomp end # if yes, retrieve the files and remove them if ans == "y" || ans == "yes" file = arg sum = Digest::MD5.file file start = ("#{sum}".scan /\w/).join("/") path = "/opt/puppetlabs/puppet/cache/bucket" path += "/" + start[0..15] + sum + "/" if File.exist? "#{path}/contents" puts "Restoring " + path cmd = `mv -f #{file} #{path}contents` else puts "No file #{arg} found." end else puts "No file #{arg} found." end return end |