Class: VagrantPlugins::ScriptRock::Provisioner
- Inherits:
-
Object
- Object
- VagrantPlugins::ScriptRock::Provisioner
- Defined in:
- lib/vagrant-scriptrock/provisioner.rb
Instance Method Summary collapse
- #cleanup ⇒ Object
- #configure(root_config) ⇒ Object
- #guardrail_auth_headers ⇒ Object
- #guardrail_create ⇒ Object
- #guardrail_create_update ⇒ Object
- #guardrail_delete ⇒ Object
- #guardrail_lookup_and_show ⇒ Object
- #guardrail_name ⇒ Object
- #guardrail_update(node) ⇒ Object
-
#initialize(machine, config) ⇒ Provisioner
constructor
A new instance of Provisioner.
- #provision ⇒ Object
Constructor Details
#initialize(machine, config) ⇒ Provisioner
7 8 9 10 11 12 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 7 def initialize(machine, config) @debug = false @machine = machine @root_config = machine.config puts "provision initialize config" if @debug end |
Instance Method Details
#cleanup ⇒ Object
119 120 121 122 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 119 def cleanup puts "provision cleanup" if @debug guardrail_delete end |
#configure(root_config) ⇒ Object
14 15 16 17 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 14 def configure(root_config) puts "provision configure" if @debug @root_config = root_config end |
#guardrail_auth_headers ⇒ Object
23 24 25 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 23 def guardrail_auth_headers return { "Authorization" => "Token token=\"#{@root_config.scriptrock.api_key}#{@root_config.scriptrock.secret_key}\"" } end |
#guardrail_create ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 43 def guardrail_create url = "#{@root_config.scriptrock.connect_url}/api/v1/nodes.json" response = HTTParty.post(url, :headers => guardrail_auth_headers, :body => { :node => { "name" => guardrail_name, "node_type" => "SV", }, }) responseJson = JSON.parse(response.body) if response.code == 201 puts "ScriptRock: created new node, id #{responseJson["id"]} name #{guardrail_name}" return responseJson else throw "ScriptRock Guardrail create node error code #{response.code} body: #{response.body}" end end |
#guardrail_create_update ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 94 def guardrail_create_update begin node = guardrail_lookup_and_show if node == nil node = guardrail_create end guardrail_update(node) rescue => e puts "Error contacting guardrail api: #{e.class}: #{e.}" end end |
#guardrail_delete ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 76 def guardrail_delete begin node = guardrail_lookup_and_show if node != nil url = "#{@root_config.scriptrock.connect_url}/api/v1/nodes/#{node["id"]}.json" response = HTTParty.delete(url, :headers => guardrail_auth_headers) if response.code == 204 puts "ScriptRock: deleted node, id #{node["id"]} name #{guardrail_name}" return true else throw "ScriptRock Guardrail delete node error code #{response.code} body: #{response.body}" end end rescue => e puts "Error contacting guardrail api: #{e.class}: #{e.}" end end |
#guardrail_lookup_and_show ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 27 def guardrail_lookup_and_show url = "#{@root_config.scriptrock.connect_url}/api/v1/nodes/lookup.json?name=#{CGI.escape(guardrail_name)}" response = HTTParty.get(url, :headers => guardrail_auth_headers) if response.code == 200 responseJson = JSON.parse(response.body) url = "#{@root_config.scriptrock.connect_url}/api/v1/nodes/#{responseJson["node_id"]}.json" response = HTTParty.get(url, :headers => guardrail_auth_headers) responseJson = JSON.parse(response.body) if response.code == 200 puts "ScriptRock: node already exists, id #{responseJson["id"]} name #{guardrail_name}" return responseJson end end return nil end |
#guardrail_name ⇒ Object
19 20 21 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 19 def guardrail_name return "vagrant #{@machine.name} #{@machine.id}" end |
#guardrail_update(node) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 60 def guardrail_update(node) url = "#{@root_config.scriptrock.connect_url}/api/v1/nodes/#{node["id"]}.json" ssh_info = @machine.ssh_info node = { :medium_type => 3, :description => "#{@machine.name} (vagrant)", :medium_hostname => "#{@root_config.scriptrock.first_hop} ssh://#{ssh_info[:username]}@#{ssh_info[:host]}:#{ssh_info[:port]}".strip, } response = HTTParty.put(url, :headers => guardrail_auth_headers, :body => { :node => node }) if response.code == 204 return true else throw "ScriptRock Guardrail update node error code #{response.code} body: #{response.body}" end end |
#provision ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/vagrant-scriptrock/provisioner.rb', line 106 def provision puts "provision provision" if @debug # insert the guardrail public key onto the target node if it is not already present @machine.communicate.tap do |comm| pk = @root_config.scriptrock.ssh_pubkey comm.execute("mkdir -p ~/.ssh && grep -q -s '#{pk}' ~/.ssh/authorized_keys || echo '#{pk}' >> ~/.ssh/authorized_keys") end # add this node to guardrail if not already present, then update to use the current credentials + forwarded port guardrail_create_update end |