summaryrefslogtreecommitdiffstats
path: root/roles/docker_img_puppet/files/puppet_container/start.rb
diff options
context:
space:
mode:
authorThomas Wiest <twiest@gmail.com>2014-10-29 12:23:41 -0400
committerThomas Wiest <twiest@gmail.com>2014-10-29 12:23:41 -0400
commite1f362d24763a28c383468248517e4dbb5036de4 (patch)
tree6b063a310bb71cae17f3b6a910dca5ac1584f829 /roles/docker_img_puppet/files/puppet_container/start.rb
parentfd788c250c1fbdc5cc188aa29812c65ebafecc59 (diff)
parent525b741b6fbb178b11c6a2b3ccd4bf9ff9e98e0c (diff)
downloadopenshift-e1f362d24763a28c383468248517e4dbb5036de4.tar.gz
openshift-e1f362d24763a28c383468248517e4dbb5036de4.tar.bz2
openshift-e1f362d24763a28c383468248517e4dbb5036de4.tar.xz
openshift-e1f362d24763a28c383468248517e4dbb5036de4.zip
Merge pull request #18 from twiest/pr
Added Docker image build stuff
Diffstat (limited to 'roles/docker_img_puppet/files/puppet_container/start.rb')
-rwxr-xr-xroles/docker_img_puppet/files/puppet_container/start.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/roles/docker_img_puppet/files/puppet_container/start.rb b/roles/docker_img_puppet/files/puppet_container/start.rb
new file mode 100755
index 000000000..f1dd940ba
--- /dev/null
+++ b/roles/docker_img_puppet/files/puppet_container/start.rb
@@ -0,0 +1,86 @@
+#!/usr/bin/env ruby
+
+require 'fileutils'
+
+CTR_CONFIG_FLAG = '/shared/var/run/ctr-ipc/flag/ctr_configured'
+
+
+class Start
+ def self.setup_shared_dirs()
+ puts '_'
+ puts 'Setting up dirs in shared volume'
+ puts '--------------------------------'
+ mtab = File.read('/etc/mtab')
+
+ shared_dirs = mtab.grep(/ \/shared\//).collect { |line| line.split(' ')[1] }
+
+ shared_dirs.each do |sh_dir|
+ orig_dir = sh_dir.gsub(/^\/shared/,'')
+
+ next if File.symlink?(orig_dir)
+
+ if File.exist?(orig_dir)
+ cmd = "cp -vaf #{orig_dir} #{File.dirname(sh_dir)}"
+ puts "Running: #{cmd}"
+ system(cmd)
+
+ cmd = "rm -vrf #{orig_dir}"
+ puts "Running: #{cmd}"
+ system(cmd)
+ end
+
+ FileUtils.ln_s(sh_dir, orig_dir, {:verbose => true})
+ end
+ puts 'Done.'
+ puts '_'
+ end
+
+ def self.run_puppet_agent()
+ puts '_'
+ puts 'Running Puppet Agent'
+ puts '--------------------'
+ exitcode = nil
+ 1.upto(3) do |ctr|
+ unless ctr == 1
+ puts '_'
+ puts "Previous puppet run failed with exit code [#{exitcode}], running again..."
+ puts '_'
+ end
+
+ system("bash -c 'time /usr/bin/puppet agent -t'")
+ exitcode = $?.exitstatus
+ puts "Exit Code [#{exitcode}]"
+
+ break if exitcode == 0 || exitcode == 2
+ end
+
+ raise "Puppet run failed, retries exhausted." if exitcode != 0 && exitcode != 2
+
+ puts 'Done.'
+ puts '_'
+
+ puts '_'
+ puts 'Creating ctr_configured flag'
+ FileUtils.mkdir_p(File.dirname(CTR_CONFIG_FLAG))
+ FileUtils.touch(CTR_CONFIG_FLAG)
+ puts 'Done.'
+ puts '_'
+ end
+
+ def self.exec_puppetd()
+ puts '_'
+ puts 'Exec-ing puppet daemon'
+ puts '---------------------'
+ puts "Starting puppet agent..."
+ exec("bash -c '/usr/bin/puppet agent --no-daemonize --detailed-exitcodes --verbose'")
+ end
+end
+
+if __FILE__ == $0
+ $stdout.sync = true
+ $stderr.sync = true
+
+ Start.setup_shared_dirs()
+ Start.run_puppet_agent()
+ Start.exec_puppetd()
+end