start.rb 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #!/usr/bin/env ruby
  2. require 'fileutils'
  3. CTR_CONFIG_FLAG = '/shared/var/run/ctr-ipc/flag/ctr_configured'
  4. class Start
  5. def self.setup_shared_dirs()
  6. puts '_'
  7. puts 'Setting up dirs in shared volume'
  8. puts '--------------------------------'
  9. mtab = File.read('/etc/mtab')
  10. shared_dirs = mtab.grep(/ \/shared\//).collect { |line| line.split(' ')[1] }
  11. shared_dirs.each do |sh_dir|
  12. orig_dir = sh_dir.gsub(/^\/shared/,'')
  13. next if File.symlink?(orig_dir)
  14. if File.exist?(orig_dir)
  15. cmd = "cp -vaf #{orig_dir} #{File.dirname(sh_dir)}"
  16. puts "Running: #{cmd}"
  17. system(cmd)
  18. cmd = "rm -vrf #{orig_dir}"
  19. puts "Running: #{cmd}"
  20. system(cmd)
  21. end
  22. FileUtils.ln_s(sh_dir, orig_dir, {:verbose => true})
  23. end
  24. puts 'Done.'
  25. puts '_'
  26. end
  27. def self.run_puppet_agent()
  28. puts '_'
  29. puts 'Running Puppet Agent'
  30. puts '--------------------'
  31. exitcode = nil
  32. 1.upto(3) do |ctr|
  33. unless ctr == 1
  34. puts '_'
  35. puts "Previous puppet run failed with exit code [#{exitcode}], running again..."
  36. puts '_'
  37. end
  38. system("bash -c 'time /usr/bin/puppet agent -t'")
  39. exitcode = $?.exitstatus
  40. puts "Exit Code [#{exitcode}]"
  41. break if exitcode == 0 || exitcode == 2
  42. end
  43. raise "Puppet run failed, retries exhausted." if exitcode != 0 && exitcode != 2
  44. puts 'Done.'
  45. puts '_'
  46. puts '_'
  47. puts 'Creating ctr_configured flag'
  48. FileUtils.mkdir_p(File.dirname(CTR_CONFIG_FLAG))
  49. FileUtils.touch(CTR_CONFIG_FLAG)
  50. puts 'Done.'
  51. puts '_'
  52. end
  53. def self.exec_puppetd()
  54. puts '_'
  55. puts 'Exec-ing puppet daemon'
  56. puts '---------------------'
  57. puts "Starting puppet agent..."
  58. exec("bash -c '/usr/bin/puppet agent --no-daemonize --detailed-exitcodes --verbose'")
  59. end
  60. end
  61. if __FILE__ == $0
  62. $stdout.sync = true
  63. $stderr.sync = true
  64. Start.setup_shared_dirs()
  65. Start.run_puppet_agent()
  66. Start.exec_puppetd()
  67. end