26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/chef/knife/butler_prepare.rb', line 26
def run
test_config = config_fetch
Chef::Log.debug("cosmic HOST: #{test_config['driver']['customize']['host']}")
Chef::Log.debug("cosmic NETWORK_NAME: #{test_config['driver']['customize']['network_name']}")
o = [('a'..'z'), ('A'..'Z')].map(&:to_a).flatten
str_random = (0...8).map { o[rand(o.length)] }.join
butler_data = {}
butler_data['server_name'] = "butler-#{str_random}"
str_random = (0...4).map { [rand(10)] }.join
butler_data['port_exposed_winrm'] = str_random
str_random = (0...4).map { [rand(10)] }.join
butler_data['port_exposed_zipdata'] = str_random
File.open('.butler.yml', 'w') {|f| f.write butler_data.to_yaml }
server_create = Knifecosmic::CosmicServerCreate.new
server_create.name_args = [butler_data['server_name']]
server_create.config[:cosmic_networks] = [test_config['driver']['customize']['network_name']]
server_create.config[:cosmic_template] = test_config['platforms'].first['driver_config']['box']
server_create.config[:bootstrap] = false
server_create.config[:public_ip] = false
server_create.config[:cosmic_service] = test_config['driver']['customize']['service_offering_name']
server_create.config[:cosmic_password] = true
server_create.config[:cosmic_url] = "https://#{test_config['driver']['customize']['host']}/client/api"
server_create.config[:cosmic_api_key] = test_config['driver']['customize']['api_key']
server_create.config[:cosmic_secret_key] = test_config['driver']['customize']['secret_key']
puts "Creating VM..."
server_create.run
server_details = server_create.server
puts "Done!...details:"
puts server_details
puts "IP OF SERVER: #{server_details['public_ip']}"
puts "End of detalis"
butler_data['server_ip'] = server_details['public_ip']
butler_data['server_password'] = server_details['passwordenabled'] ? server_details['password'] : test_config['driver']['customize']['vm_password']
File.open('.butler.yml', 'w') {|f| f.write butler_data.to_yaml }
sleep(5)
forwardingrule_create = Knifecosmic::CosmicForwardruleCreate.new
forwardingrule_create.name_args = [butler_data['server_name'], "#{butler_data['port_exposed_winrm']}:5985:TCP"]
forwardingrule_create.config[:vrip] = test_config['driver']['customize']['pf_ip_address']
forwardingrule_create.config[:cosmic_url] = "https://#{test_config['driver']['customize']['host']}/client/api"
forwardingrule_create.config[:cosmic_api_key] = test_config['driver']['customize']['api_key']
forwardingrule_create.config[:cosmic_secret_key] = test_config['driver']['customize']['secret_key']
puts "Creating forwarding rule..."
forwardingrule_details = forwardingrule_create.run
puts "Done!"
forwardingrule_create = Knifecosmic::CosmicForwardruleCreate.new
forwardingrule_create.name_args = [butler_data['server_name'], "#{butler_data['port_exposed_zipdata']}:5999:TCP"]
forwardingrule_create.config[:vrip] = test_config['driver']['customize']['pf_ip_address']
forwardingrule_create.config[:cosmic_url] = "https://#{test_config['driver']['customize']['host']}/client/api"
forwardingrule_create.config[:cosmic_api_key] = test_config['driver']['customize']['api_key']
forwardingrule_create.config[:cosmic_secret_key] = test_config['driver']['customize']['secret_key']
puts "Creating forwarding rule..."
forwardingrule_details = forwardingrule_create.run
puts "Done!"
firewall_rule = Knifecosmic::CosmicFirewallruleCreate.new
firewall_rule.config[:cosmic_url] = "https://#{test_config['driver']['customize']['host']}/client/api"
firewall_rule.config[:cosmic_api_key] = test_config['driver']['customize']['api_key']
firewall_rule.config[:cosmic_secret_key] = test_config['driver']['customize']['secret_key']
firewall_rule.name_args = [butler_data['server_name']]
test_config['driver']['customize']['pf_trusted_networks'].split(",").each do |cidr|
firewall_rule.name_args.push("5985:5985:TCP:#{cidr}")
end
firewall_rule.config[:public_ip] = test_config['driver']['customize']['pf_ip_address']
firewall_rule.run
firewall_rule = Knifecosmic::CosmicFirewallruleCreate.new
firewall_rule.config[:cosmic_url] = "https://#{test_config['driver']['customize']['host']}/client/api"
firewall_rule.config[:cosmic_api_key] = test_config['driver']['customize']['api_key']
firewall_rule.config[:cosmic_secret_key] = test_config['driver']['customize']['secret_key']
firewall_rule.name_args = [butler_data['server_name']]
test_config['driver']['customize']['pf_trusted_networks'].split(",").each do |cidr|
firewall_rule.name_args.push("5999:5999:TCP:#{cidr}")
end
firewall_rule.config[:public_ip] = test_config['driver']['customize']['pf_ip_address']
firewall_rule.run
puts "Waiting for WinRM......"
wait_for_port_open(test_config['driver']['customize']['pf_ip_address'], butler_data['port_exposed_winrm'])
puts "WinRM available!"
sleep(2)
end
|