rs-api-tools 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/.DS_Store +0 -0
- data/bin/rs-clone-deployment +58 -0
- data/bin/rs-clone-rightscript +79 -0
- data/bin/rs-clone-server +2 -0
- data/bin/rs-describe-alerts +42 -0
- data/bin/rs-describe-attached-vols +83 -0
- data/bin/rs-describe-deployment +85 -0
- data/bin/rs-describe-deployments +42 -0
- data/bin/rs-describe-ec2-ebs-snapshots +41 -0
- data/bin/rs-describe-ec2-ebs-volumes +42 -0
- data/bin/rs-describe-ec2-security-groups +42 -0
- data/bin/rs-describe-keys +42 -0
- data/bin/rs-describe-multi-cloud-images +42 -0
- data/bin/rs-describe-rightscript +81 -0
- data/bin/rs-describe-rightscripts +42 -0
- data/bin/rs-describe-server +97 -0
- data/bin/rs-describe-server-array +80 -0
- data/bin/rs-describe-server-arrays +42 -0
- data/bin/rs-describe-server-self +67 -0
- data/bin/rs-describe-server-templates +42 -0
- data/bin/rs-describe-servers +42 -0
- data/bin/rs-fetch-rightscripts +126 -0
- data/bin/rs-get-array-instances +64 -0
- data/bin/rs-get-server-input +2 -0
- data/bin/rs-get-server-monitoring +64 -0
- data/bin/rs-get-server-sketchy-data +42 -0
- data/bin/rs-launch-deployment +2 -0
- data/bin/rs-launch-server +2 -0
- data/bin/rs-ping-active-servers +44 -0
- data/bin/rs-reboot-deployment +2 -0
- data/bin/rs-reboot-server +75 -0
- data/bin/rs-relaunch-deployment +2 -0
- data/bin/rs-relaunch-server +74 -0
- data/bin/rs-run-all-boot-executables +94 -0
- data/bin/rs-run-rightscript +98 -0
- data/bin/rs-search-tags +69 -0
- data/bin/rs-start-deployment +2 -0
- data/bin/rs-start-server +75 -0
- data/bin/rs-stop-deployment +2 -0
- data/bin/rs-stop-server +2 -0
- data/bin/rs-terminate-all +2 -0
- data/bin/rs-terminate-deployment +2 -0
- data/bin/rs-terminate-self +70 -0
- data/bin/rs-terminate-server +90 -0
- data/bin/rs-update-input +71 -0
- data/bin/rs-update-inputs +71 -0
- data/bin/rs-update-server-array +63 -0
- metadata +194 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# rs-ping-active-servers
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'getoptlong'
|
7
|
+
require 'rest_connection'
|
8
|
+
|
9
|
+
def usage
|
10
|
+
puts("rs-ping-active-servers")
|
11
|
+
exit
|
12
|
+
end
|
13
|
+
|
14
|
+
opts = GetoptLong.new(
|
15
|
+
[ '--private', '-p', GetoptLong::OPTIONAL_ARGUMENT ]
|
16
|
+
)
|
17
|
+
|
18
|
+
private_ip = false
|
19
|
+
|
20
|
+
opts.each do |opt, arg|
|
21
|
+
case opt
|
22
|
+
when '--private'
|
23
|
+
private_ip = true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
puts 'Finding operational servers...'
|
28
|
+
servers = Server.find(:all) {|server| server.state =~ /operational/ }
|
29
|
+
|
30
|
+
ip_address = String.new
|
31
|
+
private_ip_address = false
|
32
|
+
|
33
|
+
servers.each {|server|
|
34
|
+
server.settings
|
35
|
+
if private_ip
|
36
|
+
ip_address = server.private_ip_address
|
37
|
+
else
|
38
|
+
ip_address = server.ip_address
|
39
|
+
end
|
40
|
+
puts ''
|
41
|
+
puts "-- Server: '#{server.nickname}'; AWS ID: #{server.aws_id}; IP: "+ip_address
|
42
|
+
system("ping -c 3 #{ip_address}")
|
43
|
+
puts ''
|
44
|
+
}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# rs-reboot-server
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'getoptlong'
|
7
|
+
|
8
|
+
def usage
|
9
|
+
puts("usage: rs-reboot-server [--name <server_nickname> | --id <server_id>]")
|
10
|
+
puts(" [[--verbose]]")
|
11
|
+
end
|
12
|
+
|
13
|
+
def usage_exit
|
14
|
+
usage; exit
|
15
|
+
end
|
16
|
+
|
17
|
+
def help
|
18
|
+
usage
|
19
|
+
puts ''
|
20
|
+
puts 'Reboots a RightScale server.'
|
21
|
+
puts ''
|
22
|
+
puts "examples: rs-reboot-server --name 'Sandbox'"
|
23
|
+
puts ''
|
24
|
+
exit
|
25
|
+
end
|
26
|
+
|
27
|
+
opts = GetoptLong.new(
|
28
|
+
[ '--name', '-n', GetoptLong::OPTIONAL_ARGUMENT ],
|
29
|
+
[ '--id', '-i', GetoptLong::OPTIONAL_ARGUMENT ],
|
30
|
+
[ '--help', '-h', GetoptLong::OPTIONAL_ARGUMENT ],
|
31
|
+
[ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
|
32
|
+
)
|
33
|
+
|
34
|
+
server_name = false
|
35
|
+
server_id = false
|
36
|
+
show_help = false
|
37
|
+
verbose = false
|
38
|
+
|
39
|
+
opts.each do |opt, arg|
|
40
|
+
case opt
|
41
|
+
when '--name'
|
42
|
+
server_name = arg
|
43
|
+
when '--id'
|
44
|
+
server_id = arg
|
45
|
+
when '--help'
|
46
|
+
show_help = true
|
47
|
+
when '--verbose'
|
48
|
+
verbose = true
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
help if show_help
|
53
|
+
|
54
|
+
require 'json'
|
55
|
+
require 'rest_connection'
|
56
|
+
|
57
|
+
usage_exit if !(server_name || server_id)
|
58
|
+
|
59
|
+
# get server
|
60
|
+
if server_name
|
61
|
+
puts "Finding server: '%#{server_name}%'"
|
62
|
+
server = Server.find(:first) { |s| s.nickname =~ /#{server_name}/ }
|
63
|
+
puts "Found server, '#{server.nickname}'."
|
64
|
+
puts server.to_yaml if verbose
|
65
|
+
elsif server_id
|
66
|
+
server = Server.find(server_id.to_i)
|
67
|
+
else
|
68
|
+
usage_exit
|
69
|
+
end
|
70
|
+
|
71
|
+
# reboot server
|
72
|
+
server.reboot()
|
73
|
+
#puts "Running RightScript, '#{right_script.name}' on server, '#{server.nickname}'."
|
74
|
+
#state = server.run_executable(right_script)
|
75
|
+
#state.wait_for_completed
|
@@ -0,0 +1,74 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# rs-relaunch-server
|
4
|
+
|
5
|
+
require 'getoptlong'
|
6
|
+
|
7
|
+
def usage
|
8
|
+
puts("usage: rs-relaunch-server [--name <server_nickname> | --id <server_id>]")
|
9
|
+
puts(" [[--verbose]]")
|
10
|
+
end
|
11
|
+
|
12
|
+
def usage_exit
|
13
|
+
usage; exit
|
14
|
+
end
|
15
|
+
|
16
|
+
def help
|
17
|
+
usage
|
18
|
+
puts ''
|
19
|
+
puts 'Relaunches a RightScale server.'
|
20
|
+
puts ''
|
21
|
+
puts "examples: rs-relaunch-server --name 'Sandbox'"
|
22
|
+
puts ''
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
|
26
|
+
opts = GetoptLong.new(
|
27
|
+
[ '--name', '-n', GetoptLong::OPTIONAL_ARGUMENT ],
|
28
|
+
[ '--id', '-i', GetoptLong::OPTIONAL_ARGUMENT ],
|
29
|
+
[ '--help', '-h', GetoptLong::OPTIONAL_ARGUMENT ],
|
30
|
+
[ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
|
31
|
+
)
|
32
|
+
|
33
|
+
require 'rubygems'
|
34
|
+
|
35
|
+
server_name = false
|
36
|
+
server_id = false
|
37
|
+
show_help = false
|
38
|
+
verbose = false
|
39
|
+
|
40
|
+
opts.each do |opt, arg|
|
41
|
+
case opt
|
42
|
+
when '--name'
|
43
|
+
server_name = arg
|
44
|
+
when '--id'
|
45
|
+
server_id = arg
|
46
|
+
when '--help'
|
47
|
+
show_help = true
|
48
|
+
when '--verbose'
|
49
|
+
verbose = true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
help if show_help
|
54
|
+
|
55
|
+
require 'json'
|
56
|
+
require 'rest_connection'
|
57
|
+
|
58
|
+
usage_exit if !(server_name || server_id)
|
59
|
+
|
60
|
+
# get server
|
61
|
+
if server_name
|
62
|
+
puts "Finding server: '%#{server_name}%'"
|
63
|
+
server = Server.find(:first) { |s| s.nickname =~ /#{server_name}/ }
|
64
|
+
puts "Found server, '#{server.nickname}'."
|
65
|
+
puts server.to_yaml if verbose
|
66
|
+
elsif server_id
|
67
|
+
server = Server.find(server_id.to_i)
|
68
|
+
else
|
69
|
+
usage_exit
|
70
|
+
end
|
71
|
+
|
72
|
+
# reboot server
|
73
|
+
puts "Relaunching server, '#{server.nickname}'."
|
74
|
+
server.relaunch()
|
@@ -0,0 +1,94 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# rs-run-all-boot-executables
|
4
|
+
|
5
|
+
def usage
|
6
|
+
puts("rs-run-all-boot-executables")
|
7
|
+
puts(" usage: rs-run-all-boot-executables [--id <server_id>] [--api [<api_version>]]")
|
8
|
+
end
|
9
|
+
|
10
|
+
def usage_exit
|
11
|
+
usage; exit
|
12
|
+
end
|
13
|
+
|
14
|
+
def help
|
15
|
+
usage
|
16
|
+
puts ''
|
17
|
+
puts 'Runs all boot scripts (RightScripts/Recipes) on a RightScale server, synchronously.'
|
18
|
+
puts ''
|
19
|
+
puts "examples: rs-run-all-boot-execuables --id 1234 --api 1.5 --verbose"
|
20
|
+
puts ''
|
21
|
+
puts 'Note: Use --api 1.5 for non-EC2 servers.'
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
|
25
|
+
require 'getoptlong'
|
26
|
+
|
27
|
+
server_id = false
|
28
|
+
api_version = false
|
29
|
+
show_help = false
|
30
|
+
verbose = false
|
31
|
+
|
32
|
+
opts = GetoptLong.new(
|
33
|
+
[ '--id', '-i', GetoptLong::REQUIRED_ARGUMENT ],
|
34
|
+
[ '--api', '-a', GetoptLong::OPTIONAL_ARGUMENT ],
|
35
|
+
[ '--xml', '-x', GetoptLong::OPTIONAL_ARGUMENT ],
|
36
|
+
[ '--json', '-j', GetoptLong::OPTIONAL_ARGUMENT ],
|
37
|
+
[ '--help', '-h', GetoptLong::OPTIONAL_ARGUMENT ],
|
38
|
+
[ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
|
39
|
+
)
|
40
|
+
|
41
|
+
opts.each do |opt, arg|
|
42
|
+
case opt
|
43
|
+
when '--id'
|
44
|
+
server_id = arg
|
45
|
+
when '--api'
|
46
|
+
api_version = arg
|
47
|
+
when '--help'
|
48
|
+
show_help = true
|
49
|
+
when '--verbose'
|
50
|
+
verbose = true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
help if show_help
|
55
|
+
usage_exit unless server_id
|
56
|
+
|
57
|
+
require 'rubygems'
|
58
|
+
require 'json'
|
59
|
+
require 'rest_connection'
|
60
|
+
|
61
|
+
# get server
|
62
|
+
puts "Fetching server with ID, #{server_id}."
|
63
|
+
if api_version.to_s == '1.5'
|
64
|
+
server = McServer.find(server_id.to_i)
|
65
|
+
server_settings = server.settings
|
66
|
+
puts server_settings.to_yaml if verbose
|
67
|
+
template_href = server_settings['current_instance']['links'].select { |link| link['rel'] == 'server_template' }.first['href']
|
68
|
+
puts "ServerTemplate HREF: #{template_href}" if verbose
|
69
|
+
else
|
70
|
+
server = Server.find(server_id.to_i)
|
71
|
+
server_settings = server.settings
|
72
|
+
template_href = server_settings['server_template_href']
|
73
|
+
puts server_settings.to_yaml if verbose
|
74
|
+
end
|
75
|
+
|
76
|
+
# get template
|
77
|
+
template_id = template_href.match("[^/]+$")[0]
|
78
|
+
puts "Fetching ServerTemplate with ID, #{template_id}."
|
79
|
+
template = ServerTemplate.find(template_id.to_i)
|
80
|
+
|
81
|
+
# run executables
|
82
|
+
#puts "Executables found:\n#{template.executables.to_yaml}" if debug (todo)
|
83
|
+
puts 'Running executables.'
|
84
|
+
template.executables.each { |executable|
|
85
|
+
unless executable['apply'] != 'boot'
|
86
|
+
if executable['recipe']
|
87
|
+
puts "#{executable['position']}. #{executable['recipe']}"
|
88
|
+
elsif executable['right_script']
|
89
|
+
puts "#{executable['position']}. #{executable['right_script']['name']}"
|
90
|
+
end
|
91
|
+
server.run_executable(executable)
|
92
|
+
#state.wait_for_completed (todo)
|
93
|
+
end
|
94
|
+
}
|
@@ -0,0 +1,98 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# rs-run-rightscript
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'getoptlong'
|
7
|
+
|
8
|
+
def usage
|
9
|
+
puts("usage: rs-run-rightscript [--name <right_script_name> | --id <right_script_id>]")
|
10
|
+
puts(" [--server-name <server_name> | --server-id <server_id>]")
|
11
|
+
puts(" [[--verbose]]")
|
12
|
+
end
|
13
|
+
|
14
|
+
def usage_exit
|
15
|
+
usage; exit
|
16
|
+
end
|
17
|
+
|
18
|
+
def help
|
19
|
+
usage
|
20
|
+
puts ''
|
21
|
+
puts 'Run a RightScript on a RightScale server.'
|
22
|
+
puts ''
|
23
|
+
puts "examples: rs-run-rightscript --name 'Hello World' --server-name 'Holly'"
|
24
|
+
puts " rs-run-rightscript --id 1337 --server-id 10111101"
|
25
|
+
puts ''
|
26
|
+
exit
|
27
|
+
end
|
28
|
+
|
29
|
+
opts = GetoptLong.new(
|
30
|
+
[ '--name', '-n', GetoptLong::OPTIONAL_ARGUMENT ],
|
31
|
+
[ '--id', '-i', GetoptLong::OPTIONAL_ARGUMENT ],
|
32
|
+
[ '--server-name', '-s', GetoptLong::OPTIONAL_ARGUMENT ],
|
33
|
+
[ '--server-id', '-S', GetoptLong::OPTIONAL_ARGUMENT ],
|
34
|
+
[ '--xml', '-x', GetoptLong::OPTIONAL_ARGUMENT ],
|
35
|
+
[ '--json', '-j', GetoptLong::OPTIONAL_ARGUMENT ],
|
36
|
+
[ '--help', '-h', GetoptLong::OPTIONAL_ARGUMENT ],
|
37
|
+
[ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
|
38
|
+
)
|
39
|
+
|
40
|
+
script_name = false
|
41
|
+
script_id = false
|
42
|
+
server_name = false
|
43
|
+
server_id = false
|
44
|
+
show_help = false
|
45
|
+
verbose = false
|
46
|
+
|
47
|
+
opts.each do |opt, arg|
|
48
|
+
case opt
|
49
|
+
when '--name'
|
50
|
+
script_name = arg
|
51
|
+
when '--id'
|
52
|
+
script_id = arg
|
53
|
+
when '--server-name'
|
54
|
+
server_name = arg
|
55
|
+
when '--server-id'
|
56
|
+
server_id = arg
|
57
|
+
when '--help'
|
58
|
+
show_help = true
|
59
|
+
when '--verbose'
|
60
|
+
verbose = true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
help if show_help
|
65
|
+
|
66
|
+
require 'json'
|
67
|
+
require 'rest_connection'
|
68
|
+
|
69
|
+
usage_exit if !(script_name || script_id || server_name || server_id)
|
70
|
+
|
71
|
+
# get script
|
72
|
+
if script_name
|
73
|
+
puts "Finding script: '%#{script_name}%'"
|
74
|
+
right_script = RightScript.find(:first) { |s| s.name =~ /#{script_name}/ }
|
75
|
+
puts "Found script, '#{right_script.name}'."
|
76
|
+
puts right_script.to_yaml if verbose
|
77
|
+
elsif script_id
|
78
|
+
right_script = RightScript.find(script_id.to_i)
|
79
|
+
else
|
80
|
+
usage_exit
|
81
|
+
end
|
82
|
+
|
83
|
+
# get server
|
84
|
+
if server_name
|
85
|
+
puts "Finding server: '%#{server_name}%'"
|
86
|
+
server = Server.find(:first) { |s| s.nickname =~ /#{server_name}/ }
|
87
|
+
puts "Found server, '#{server.nickname}'."
|
88
|
+
puts server.to_yaml if verbose
|
89
|
+
elsif server_id
|
90
|
+
server = Server.find(server_id.to_i)
|
91
|
+
else
|
92
|
+
usage_exit
|
93
|
+
end
|
94
|
+
|
95
|
+
# run script on server
|
96
|
+
puts "Running RightScript, '#{right_script.name}' on server, '#{server.nickname}'."
|
97
|
+
state = server.run_executable(right_script)
|
98
|
+
state.wait_for_completed
|
data/bin/rs-search-tags
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# rs-search-tags
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'getoptlong'
|
7
|
+
|
8
|
+
def usage
|
9
|
+
puts("usage: rs-search-tags [options] --resource <taggable_resource> <tag>")
|
10
|
+
end
|
11
|
+
|
12
|
+
def usage_exit
|
13
|
+
usage; exit
|
14
|
+
end
|
15
|
+
|
16
|
+
def help
|
17
|
+
usage
|
18
|
+
puts ''
|
19
|
+
puts 'Searches for machine tags.'
|
20
|
+
puts ''
|
21
|
+
puts "examples: rs-search-tags --resource Ec2Instance \"foo:bar=foobar\""
|
22
|
+
puts ''
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
|
26
|
+
json = false
|
27
|
+
xml = false
|
28
|
+
verbose = false
|
29
|
+
resource = false
|
30
|
+
|
31
|
+
opts = GetoptLong.new(
|
32
|
+
[ '--resource', '-r', GetoptLong::REQUIRED_ARGUMENT ],
|
33
|
+
[ '--xml', '-x', GetoptLong::OPTIONAL_ARGUMENT ],
|
34
|
+
[ '--json', '-j', GetoptLong::OPTIONAL_ARGUMENT ],
|
35
|
+
[ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
|
36
|
+
)
|
37
|
+
|
38
|
+
opts.each do |opt, arg|
|
39
|
+
case opt
|
40
|
+
when '--resource'
|
41
|
+
resource = arg
|
42
|
+
when '--json'
|
43
|
+
json = true
|
44
|
+
when '--xml'
|
45
|
+
xml = true
|
46
|
+
when '--verbose'
|
47
|
+
verbose = true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
tag = ARGV[0] if ARGV[0]
|
52
|
+
usage_exit if !(tag || resource || ARGV[0])
|
53
|
+
|
54
|
+
require 'json'
|
55
|
+
require 'rest_connection'
|
56
|
+
|
57
|
+
tags_search = Array.new
|
58
|
+
tags_search.push(tag)
|
59
|
+
#puts Gem.datadir('rest_connection')
|
60
|
+
|
61
|
+
servers = Tag.search(resource, ["#{tag}"])
|
62
|
+
|
63
|
+
if json
|
64
|
+
puts servers.to_json
|
65
|
+
elsif xml
|
66
|
+
puts JSON.parse(servers.to_json).to_xml(:root => 'servers', :skip_instruct => true)
|
67
|
+
else
|
68
|
+
puts servers.to_yaml
|
69
|
+
end
|