Class: VagrantPlugins::ScriptRock::Provisioner
- Inherits:
-
Object
- Object
- VagrantPlugins::ScriptRock::Provisioner
show all
- Defined in:
- lib/vagrant-scriptrock/provisioner.rb
Defined Under Namespace
Classes: GuardrailPrivateKeyInstallError
Instance Method Summary
collapse
Constructor Details
#initialize(machine, config) ⇒ Provisioner
Returns a new instance of Provisioner.
11
12
13
14
15
16
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 11
def initialize(machine, config)
@debug = false
@machine = machine
@root_config = machine.config
puts "provision initialize config" if @debug
end
|
Instance Method Details
#cleanup ⇒ Object
129
130
131
132
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 129
def cleanup
puts "provision cleanup" if @debug
guardrail_delete
end
|
18
19
20
21
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 18
def configure(root_config)
puts "provision configure" if @debug
@root_config = root_config
end
|
27
28
29
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 27
def
return { "Authorization" => "Token token=\"#{@root_config.scriptrock.api_key}#{@root_config.scriptrock.secret_key}\"" }
end
|
#guardrail_create ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 47
def guardrail_create
url = "#{@root_config.scriptrock.connect_url}/api/v1/nodes.json"
response = HTTParty.post(url, :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
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 100
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.message}"
end
end
|
#guardrail_delete ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 80
def guardrail_delete
begin
node = guardrail_lookup_and_show
if node == nil
puts "ScriptRock: node with name '#{guardrail_name}' not found"
else
url = "#{@root_config.scriptrock.connect_url}/api/v1/nodes/#{node["id"]}.json"
response = HTTParty.delete(url, :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.message}"
end
end
|
#guardrail_lookup_and_show ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 31
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 => )
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 => )
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
23
24
25
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 23
def guardrail_name
return "#{@root_config.scriptrock.name_prefix} #{@machine.name}"
end
|
#guardrail_update(node) ⇒ Object
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 64
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 => , :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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# File 'lib/vagrant-scriptrock/provisioner.rb', line 112
def provision
puts "provision provision" if @debug
puts "Checking for and possibly installing Guardrail public key in ~/.ssh/authorized_keys..."
pk = @root_config.scriptrock.ssh_pubkey
key_install_script = "mkdir -p ~/.ssh && " +
"(grep -q -s '#{pk}' ~/.ssh/authorized_keys || echo '#{pk}' >> ~/.ssh/authorized_keys) && "+
"grep -q -s '#{pk}' ~/.ssh/authorized_keys"
@machine.communicate.tap do |comm|
comm.execute(key_install_script, error_class: GuardrailPrivateKeyInstallError)
end
guardrail_create_update
end
|