rig 0.4.5 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -0
- data/conf/accounts/default.yml +3 -3
- data/conf/config.yml +33 -6
- data/conf/plugins/chef.rb +105 -0
- data/conf/plugins/mongo.rb +135 -0
- data/{lib/rig/command/database.rb → conf/plugins/mysql.rb} +12 -8
- data/conf/plugins/scout.rb +81 -0
- data/conf/userdata/chef/userdata.sh.erb +7 -1
- data/lib/rig.rb +11 -1
- data/lib/rig/account.rb +43 -0
- data/lib/rig/command.rb +92 -41
- data/lib/rig/command/abstract.rb +1 -2
- data/lib/rig/command/balancer.rb +102 -0
- data/lib/rig/command/dns.rb +47 -0
- data/lib/rig/command/environment.rb +67 -0
- data/lib/rig/command/keypair.rb +15 -0
- data/lib/rig/command/server.rb +181 -0
- data/lib/rig/config.rb +35 -105
- data/lib/rig/log.rb +66 -0
- data/lib/rig/model/account.rb +1 -1
- data/lib/rig/model/connection.rb +13 -6
- data/lib/rig/model/environment.rb +12 -8
- data/lib/rig/model/instance.rb +3 -8
- data/lib/rig/model/template.rb +1 -1
- data/lib/rig/model/userdata.rb +1 -1
- data/lib/rig/plugin.rb +61 -0
- data/lib/rig/version.rb +2 -2
- metadata +15 -35
- data/lib/rig/chef.rb +0 -59
- data/lib/rig/command/balancer/destroy.rb +0 -16
- data/lib/rig/command/balancer/list.rb +0 -30
- data/lib/rig/command/balancer/listener.rb +0 -31
- data/lib/rig/command/balancer/main.rb +0 -40
- data/lib/rig/command/balancer/view.rb +0 -19
- data/lib/rig/command/dns/create.rb +0 -19
- data/lib/rig/command/dns/destroy.rb +0 -16
- data/lib/rig/command/dns/edit.rb +0 -20
- data/lib/rig/command/dns/list.rb +0 -21
- data/lib/rig/command/dns/main.rb +0 -13
- data/lib/rig/command/environment/create.rb +0 -21
- data/lib/rig/command/environment/destroy.rb +0 -18
- data/lib/rig/command/environment/list.rb +0 -31
- data/lib/rig/command/environment/main.rb +0 -15
- data/lib/rig/command/environment/protect.rb +0 -22
- data/lib/rig/command/instance/create.rb +0 -60
- data/lib/rig/command/instance/destroy.rb +0 -19
- data/lib/rig/command/instance/list.rb +0 -26
- data/lib/rig/command/instance/main.rb +0 -16
- data/lib/rig/command/instance/tag/get.rb +0 -20
- data/lib/rig/command/instance/tag/main.rb +0 -14
- data/lib/rig/command/instance/tag/remove.rb +0 -44
- data/lib/rig/command/instance/tag/set.rb +0 -46
- data/lib/rig/command/instance/view.rb +0 -20
- data/lib/rig/command/keypair/list.rb +0 -14
- data/lib/rig/command/keypair/main.rb +0 -11
- data/lib/rig/command/main.rb +0 -90
- data/lib/rig/model/database.rb +0 -23
- data/lib/rig/model/database/base.rb +0 -11
- data/lib/rig/model/database/mongodb.rb +0 -70
- data/lib/rig/model/database/mysql.rb +0 -12
data/lib/rig/chef.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
|
3
|
-
require 'chef'
|
4
|
-
require 'chef/config'
|
5
|
-
require 'chef/api_client'
|
6
|
-
require 'chef/node'
|
7
|
-
require 'chef/environment'
|
8
|
-
|
9
|
-
module Rig
|
10
|
-
module Chef
|
11
|
-
class << self
|
12
|
-
def configure
|
13
|
-
@chef ||= ::Chef::Config.from_file(File.expand_path(Rig.config[:chef][:knife]))
|
14
|
-
end
|
15
|
-
|
16
|
-
def environment_create(name)
|
17
|
-
configure
|
18
|
-
env = ::Chef::Environment.new
|
19
|
-
env.name(name)
|
20
|
-
env.description("created by Rig")
|
21
|
-
env.save
|
22
|
-
true
|
23
|
-
rescue => e
|
24
|
-
puts "*** chef exception: #{e.message}"
|
25
|
-
false
|
26
|
-
end
|
27
|
-
|
28
|
-
def environment_destroy(name)
|
29
|
-
configure
|
30
|
-
env = ::Chef::Environment.load(name) rescue nil
|
31
|
-
env.destroy if env
|
32
|
-
true
|
33
|
-
rescue => e
|
34
|
-
puts "*** chef exception: #{e.message}"
|
35
|
-
false
|
36
|
-
end
|
37
|
-
|
38
|
-
def client_delete(name)
|
39
|
-
configure
|
40
|
-
# TODO: better error handling
|
41
|
-
client = ::Chef::ApiClient.load(name) rescue nil
|
42
|
-
client.destroy if client
|
43
|
-
end
|
44
|
-
|
45
|
-
def client_list
|
46
|
-
configure
|
47
|
-
# TODO: better error handling
|
48
|
-
::Chef::ApiClient.list
|
49
|
-
end
|
50
|
-
|
51
|
-
def node_delete(name)
|
52
|
-
configure
|
53
|
-
# TODO: better error handling
|
54
|
-
node = ::Chef::Node.load(name) rescue nil
|
55
|
-
node.destroy if node
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
|
3
|
-
module Rig
|
4
|
-
module Command
|
5
|
-
module Balancer
|
6
|
-
class Destroy < Abstract
|
7
|
-
parameter "NAME", "name of load balancer"
|
8
|
-
def execute
|
9
|
-
Rig::Model::Balancer.destroy(name)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
Rig::Command::Balancer::Main.subcommand 'destroy', 'destroy load balancer', Rig::Command::Balancer::Destroy
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
|
3
|
-
module Rig
|
4
|
-
module Command
|
5
|
-
module Balancer
|
6
|
-
class List < Abstract
|
7
|
-
def execute
|
8
|
-
list = Rig::Model::Balancer.all
|
9
|
-
list.each do |lb|
|
10
|
-
puts lb.id
|
11
|
-
puts "- listeners"
|
12
|
-
lb.listeners.each do |l|
|
13
|
-
puts " - #{l.protocol}:#{l.lb_port} => #{l.instance_protocol}:#{l.instance_port}"
|
14
|
-
end
|
15
|
-
puts "- instances"
|
16
|
-
lb.instances.each do |inst|
|
17
|
-
puts " - #{inst}"
|
18
|
-
end
|
19
|
-
puts "- zones"
|
20
|
-
lb.availability_zones.each do |z|
|
21
|
-
puts " - #{z}"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
Rig::Command::Balancer::Main.subcommand 'list', 'list load balancers', Rig::Command::Balancer::List
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Rig
|
2
|
-
module Command
|
3
|
-
module Listener
|
4
|
-
class Main < Abstract
|
5
|
-
subcommand "add", "add a listener to a balancer" do
|
6
|
-
parameter "BALANCER", "balancer name"
|
7
|
-
parameter "LISTENER", "listener data PROTO:PORT/PROTO:PORT"
|
8
|
-
parameter "[CERT]", "arn for server certificate"
|
9
|
-
parameter "[POLICY] ...", "policy names"
|
10
|
-
|
11
|
-
def execute
|
12
|
-
(from, to) = listener.split('/')
|
13
|
-
#newlist = elb.listeners.create()
|
14
|
-
Rig::Model::Balancer.add_listener(balancer, from, to, cert, policy_list)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
subcommand "rm", "remove a listener from a balancer" do
|
19
|
-
parameter "BALANCER", "balancer name"
|
20
|
-
parameter "LISTENER", "listener data PROTO:PORT (just the elb side)"
|
21
|
-
|
22
|
-
def execute
|
23
|
-
Rig::Model::Balancer.destroy_listener(balancer, listener)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
Rig::Command::Balancer::Main.subcommand "listener", "manage balancer listeners (protocols and ports", Rig::Command::Listener::Main
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
require 'rest-client'
|
3
|
-
|
4
|
-
module Rig
|
5
|
-
module Command
|
6
|
-
module Balancer
|
7
|
-
class Main < Abstract
|
8
|
-
self.default_subcommand = 'list'
|
9
|
-
subcommand 'test', 'test a load balancer' do
|
10
|
-
option %w{-c --count}, "COUNT", "number of times to loop", :default => 100
|
11
|
-
option %w{-p --poll}, "POLL", "poll time", :default => 10
|
12
|
-
parameter "NAME", "name of the load balancer to test"
|
13
|
-
|
14
|
-
def execute
|
15
|
-
elb = Rig::Model::Balancer.find(name)
|
16
|
-
raise "elb #{name} not found" unless elb
|
17
|
-
|
18
|
-
dns = elb.dns_name
|
19
|
-
count.times do |i|
|
20
|
-
puts "### loop #{i}"
|
21
|
-
ips = `host #{dns}`.split(/\n/).collect { |e| e.split.last }
|
22
|
-
ips.each do |ip|
|
23
|
-
val = begin
|
24
|
-
RestClient.get("http://#{ip}")
|
25
|
-
rescue => e
|
26
|
-
e.message
|
27
|
-
end
|
28
|
-
print ".. #{ip} - #{val}"
|
29
|
-
puts
|
30
|
-
end
|
31
|
-
sleep poll
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
Rig::Command::Main.subcommand 'balancer', 'view load balancers', Rig::Command::Balancer::Main
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'awesome_print'
|
2
|
-
|
3
|
-
module Rig
|
4
|
-
module Command
|
5
|
-
module Balancer
|
6
|
-
class View < Abstract
|
7
|
-
include Options::ShowAll
|
8
|
-
|
9
|
-
parameter "NAME", "name of instance"
|
10
|
-
|
11
|
-
def execute
|
12
|
-
item = Rig::Model::Balancer.find(name)
|
13
|
-
puts item.attributes.to_yaml
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
Rig::Command::Balancer::Main.subcommand 'view', 'view instances', Rig::Command::Balancer::View
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
require 'ipaddress'
|
3
|
-
|
4
|
-
module Rig
|
5
|
-
module Command
|
6
|
-
module Dns
|
7
|
-
class Create < Abstract
|
8
|
-
parameter 'NAME', 'the name to create'
|
9
|
-
parameter 'VALUE', 'where the name points to'
|
10
|
-
|
11
|
-
def execute
|
12
|
-
Rig::Model::Dns.create(name, value)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
Rig::Command::Dns::Main.subcommand 'create', 'create dns name', Rig::Command::Dns::Create
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
|
3
|
-
module Rig
|
4
|
-
module Command
|
5
|
-
module Dns
|
6
|
-
class Destroy < Abstract
|
7
|
-
parameter "NAME", "name of load balancer"
|
8
|
-
def execute
|
9
|
-
Rig::Model::Dns.destroy(name)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
Rig::Command::Dns::Main.subcommand 'destroy', 'destroy dns record', Rig::Command::Dns::Destroy
|
data/lib/rig/command/dns/edit.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
require 'ipaddress'
|
3
|
-
|
4
|
-
module Rig
|
5
|
-
module Command
|
6
|
-
module Dns
|
7
|
-
class Edit < Abstract
|
8
|
-
parameter 'NAME', 'the name to create'
|
9
|
-
parameter 'VALUE', 'where the name points to'
|
10
|
-
|
11
|
-
def execute
|
12
|
-
Rig::Model::Dns.destroy(name)
|
13
|
-
Rig::Model::Dns.create(name, value)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
Rig::Command::Dns::Main.subcommand 'edit', 'edit dns name', Rig::Command::Dns::Edit
|
data/lib/rig/command/dns/list.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
|
3
|
-
module Rig
|
4
|
-
module Command
|
5
|
-
module Dns
|
6
|
-
class List < Abstract
|
7
|
-
def execute
|
8
|
-
zone = Rig.get_config(:dns_zone)
|
9
|
-
records = Rig::Model::Dns.records("#{zone}")
|
10
|
-
rows = []
|
11
|
-
records.each do |record|
|
12
|
-
rows << [zone, record.type, record.ttl, record.name, [*record.value].join(",")]
|
13
|
-
end
|
14
|
-
print_table(%w{Domain Type TTL Name Value}, rows)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
Rig::Command::Dns::Main.subcommand 'list', 'list dns', Rig::Command::Dns::List
|
data/lib/rig/command/dns/main.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
require 'fog'
|
3
|
-
|
4
|
-
module Rig
|
5
|
-
module Command
|
6
|
-
module Environment
|
7
|
-
class Create < Abstract
|
8
|
-
parameter "NAME", "the name of the environment"
|
9
|
-
parameter "TEMPLATE", "the template to use (solo, multi, etc)", :default => "solo"
|
10
|
-
|
11
|
-
def execute
|
12
|
-
#connection = Rig::Connection.compute
|
13
|
-
env = Rig::Model::Environment.create(name, template.to_sym)
|
14
|
-
#ap env.servers
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
Rig::Command::Environment::Main.subcommand 'create', 'create environment', Rig::Command::Environment::Create
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
require 'fog'
|
3
|
-
|
4
|
-
module Rig
|
5
|
-
module Command
|
6
|
-
module Environment
|
7
|
-
class Destroy < Abstract
|
8
|
-
parameter "NAME", "name of the environment to destroy"
|
9
|
-
|
10
|
-
def execute
|
11
|
-
Rig::Model::Environment.destroy(name)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
Rig::Command::Environment::Main.subcommand 'destroy', 'destroy environment', Rig::Command::Environment::Destroy
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
require 'fog'
|
3
|
-
|
4
|
-
module Rig
|
5
|
-
module Command
|
6
|
-
module Environment
|
7
|
-
class List < Abstract
|
8
|
-
|
9
|
-
option %w{-s --simple}, :flag, "just show list of names"
|
10
|
-
|
11
|
-
def execute
|
12
|
-
envs = Rig::Model::Environment.list
|
13
|
-
|
14
|
-
if simple?
|
15
|
-
print_table(%w{Name}, envs)
|
16
|
-
else
|
17
|
-
rows = []
|
18
|
-
envs.each do |e|
|
19
|
-
env = Rig::Model::Environment.find(e)
|
20
|
-
zones = env.servers.collect {|e| e.availability_zone }
|
21
|
-
rows << [env.name, env.template, env.region, env.servers.count, env.balancers.count, env.protected?, zones]
|
22
|
-
end
|
23
|
-
print_table(%w{Name Template Region Servers# Balancers# Protected? AZs}, rows)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
Rig::Command::Environment::Main.subcommand 'list', 'List environments', Rig::Command::Environment::List
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'clamp'
|
2
|
-
require 'rig'
|
3
|
-
|
4
|
-
module Rig
|
5
|
-
module Command
|
6
|
-
module Environment
|
7
|
-
class Main < Abstract
|
8
|
-
self.default_subcommand = "list"
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
Rig::Command::Main.subcommand 'environment', 'Commands related to environments', Rig::Command::Environment::Main
|
15
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module Rig
|
2
|
-
module Command
|
3
|
-
module Environment
|
4
|
-
class Protect < Abstract
|
5
|
-
option ["-u","--undo"], :flag, "disable protection instead of enabling"
|
6
|
-
parameter "NAME", "the environment to protect"
|
7
|
-
|
8
|
-
def execute
|
9
|
-
env = Rig::Model::Environment.find(name)
|
10
|
-
raise "Environment #{name} not found" if env.nil?
|
11
|
-
connection = Rig::Connection.compute
|
12
|
-
val = undo? ? "false" : "true"
|
13
|
-
|
14
|
-
env.servers.each do |s|
|
15
|
-
connection.create_tags(s.id, "Protected" => val)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
Rig::Command::Environment::Main.subcommand "protect", "[un]set protection on environment, preventing termination", Rig::Command::Environment::Protect
|
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'rig'
|
2
|
-
require 'awesome_print'
|
3
|
-
|
4
|
-
module Rig
|
5
|
-
module Command
|
6
|
-
module Instance
|
7
|
-
class Create < Abstract
|
8
|
-
option %w{-i --image}, "IMAGE", "the image / ami to use, default: your account image"
|
9
|
-
option %w{-f --flavor}, "FLAVOR", "the flavor / size to use"
|
10
|
-
option %w{-k --keypair}, "KEYPAIR", "the key pair / name to use, default: your account keypair"
|
11
|
-
option %w{-g --groups}, "GROUPS", "comma separated list of groups, default: your account groups"
|
12
|
-
option %w{-r --region}, "GROUPS", "the region, default: your account region"
|
13
|
-
option %w{--add}, :flag, "add this to the existing instances of this role and environment"
|
14
|
-
option "--[no-]chef", :flag, "use chef to bootstrap", :default => true
|
15
|
-
|
16
|
-
parameter "ENVIRONMENT", "the environment this instance should belong to"
|
17
|
-
parameter "ROLE", "the instance role", :default => 'solo'
|
18
|
-
|
19
|
-
def execute
|
20
|
-
name = role
|
21
|
-
# figure out if there are others of this role, if there are add a number to name to distinguish.
|
22
|
-
n = "#{name}.#{environment}.env"
|
23
|
-
chef = Rig.config[:chef] ? true : false
|
24
|
-
|
25
|
-
unless flavor
|
26
|
-
raise "must specify flavor"
|
27
|
-
end
|
28
|
-
|
29
|
-
o = {
|
30
|
-
:image_id => image,
|
31
|
-
:flavor_id => flavor,
|
32
|
-
:key_name => keypair,
|
33
|
-
:groups => groups.split(','),
|
34
|
-
:user_data => Rig::Model::Userdata.create(n, role, environment, :chef => chef)
|
35
|
-
}
|
36
|
-
tags = {'Name' => n, 'Environment' => environment, 'Role' => role}
|
37
|
-
server = Rig::Model::Instance.create(o, tags)
|
38
|
-
puts "created: #{server.id}"
|
39
|
-
rescue => e
|
40
|
-
puts "error: #{e.message}"
|
41
|
-
raise Clamp::HelpWanted, self
|
42
|
-
end
|
43
|
-
|
44
|
-
def default_image
|
45
|
-
Rig.account[:image].is_a?(Hash) ? Rig.account[:image].first.last : Rig.account[:image]
|
46
|
-
end
|
47
|
-
|
48
|
-
def default_keypair
|
49
|
-
Rig.account[:keypair]
|
50
|
-
end
|
51
|
-
|
52
|
-
def default_groups
|
53
|
-
Rig.account[:groups].join(",")
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
Rig::Command::Instance::Main.subcommand 'create', 'Create an instance', Rig::Command::Instance::Create
|