Created
January 18, 2013 22:54
-
-
Save adamkrone/4569408 to your computer and use it in GitHub Desktop.
Vagrant Chef Node Manager
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| $chefserver = "http://chef.thirdwave.local:4000" | |
| $home = File.expand_path("~") | |
| $user = ENV["USER"] | |
| $time = (Time.now.getutc).to_i | |
| $i = 0 | |
| $j = 0 | |
| $k = 0 | |
| def getNode | |
| box = $boxes[$i] | |
| if $multivm | |
| if File.exist?(".node-#{box}") | |
| puts "[node] Loading node for #{box}..." | |
| $i += 1 | |
| return File.read(".node-#{box}") | |
| else | |
| node = "#{box}-#{$user}-#{$time}" | |
| puts "[node] Using Chef Node: #{node}" | |
| $i += 1 | |
| return node | |
| end | |
| else | |
| if File.exist?(".node") | |
| puts "[node] Loading node for #{box}..." | |
| return File.read(".node") | |
| else | |
| node = "#{box}-#{$user}-#{$time}" | |
| puts "[node] Using Chef Node: #{node}" | |
| return node | |
| end | |
| end | |
| end | |
| def setNode | |
| box = $boxes[$j] | |
| if $multivm | |
| if !File.exist?(".node-#{box}") | |
| File.open ".node-#{box}", "w" do |file| | |
| node = "#{box}-#{$user}-#{$time}" | |
| puts "[node] Saving node to .node-#{box}..." | |
| file.write(node) | |
| end | |
| end | |
| $j += 1 | |
| else | |
| if !File.exist?(".node") | |
| File.open ".node", "w" do |file| | |
| node = "#{box}-#{$user}-#{$time}" | |
| puts "[node] Saving node to .node..." | |
| file.write(node) | |
| end | |
| end | |
| end | |
| end | |
| class NodeRegister | |
| def initialize app, env | |
| @app = app | |
| end | |
| def call env | |
| setNode | |
| end | |
| end | |
| class NodeReload | |
| def initialize app, env | |
| @app = app | |
| end | |
| def call env | |
| setNode | |
| end | |
| end | |
| class NodeRemove | |
| def initialize app, env | |
| @app = app | |
| end | |
| def call env | |
| box = $boxes[$k] | |
| if $multivm | |
| if File.exist?(".node-#{box}") | |
| puts "[node] Removing .node-#{box} file..." | |
| File.delete(".node-#{box}") | |
| end | |
| $k += 1 | |
| else | |
| if File.exist?(".node") | |
| puts "[node] Removing .node file..." | |
| File.delete(".node") | |
| end | |
| end | |
| end | |
| end | |
| Vagrant.actions[:up].insert_after(Vagrant::Action::VM::Boot, NodeRegister) | |
| Vagrant.actions[:start].insert_after(Vagrant::Action::VM::Boot, NodeReload) | |
| Vagrant.actions[:destroy].insert_after(Vagrant::Action::VM::Destroy, NodeRemove) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment