rig 0.3.1
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/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +67 -0
- data/Rakefile +2 -0
- data/bin/rig +15 -0
- data/lib/rig.rb +2 -0
- data/lib/rig/capistrano.rb +54 -0
- data/lib/rig/chef.rb +53 -0
- data/lib/rig/cloud.rb +4 -0
- data/lib/rig/cloud/balancer.rb +40 -0
- data/lib/rig/cloud/connection.rb +40 -0
- data/lib/rig/cloud/dns.rb +56 -0
- data/lib/rig/cloud/environment.rb +214 -0
- data/lib/rig/cloud/instance.rb +64 -0
- data/lib/rig/cloud/userdata.rb +111 -0
- data/lib/rig/command.rb +42 -0
- data/lib/rig/command/abstract.rb +36 -0
- data/lib/rig/command/balancer/destroy.rb +16 -0
- data/lib/rig/command/balancer/list.rb +21 -0
- data/lib/rig/command/balancer/main.rb +13 -0
- data/lib/rig/command/balancer/view.rb +19 -0
- data/lib/rig/command/dns/create.rb +19 -0
- data/lib/rig/command/dns/destroy.rb +16 -0
- data/lib/rig/command/dns/edit.rb +20 -0
- data/lib/rig/command/dns/list.rb +21 -0
- data/lib/rig/command/dns/main.rb +13 -0
- data/lib/rig/command/environment/create.rb +24 -0
- data/lib/rig/command/environment/destroy.rb +18 -0
- data/lib/rig/command/environment/list.rb +30 -0
- data/lib/rig/command/environment/main.rb +15 -0
- data/lib/rig/command/instance/create.rb +27 -0
- data/lib/rig/command/instance/destroy.rb +20 -0
- data/lib/rig/command/instance/list.rb +25 -0
- data/lib/rig/command/instance/main.rb +16 -0
- data/lib/rig/command/instance/ssh.rb +32 -0
- data/lib/rig/command/instance/tag/get.rb +41 -0
- data/lib/rig/command/instance/tag/main.rb +14 -0
- data/lib/rig/command/instance/tag/remove.rb +44 -0
- data/lib/rig/command/instance/tag/set.rb +47 -0
- data/lib/rig/command/instance/view.rb +20 -0
- data/lib/rig/command/keypair/list.rb +14 -0
- data/lib/rig/command/keypair/main.rb +11 -0
- data/lib/rig/command/main.rb +48 -0
- data/lib/rig/command/options.rb +97 -0
- data/lib/rig/config.rb +68 -0
- data/lib/rig/version.rb +10 -0
- data/rig.gemspec +39 -0
- metadata +196 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'rig'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module Rig
|
5
|
+
module Command
|
6
|
+
module Options
|
7
|
+
|
8
|
+
module Config
|
9
|
+
#def self.included(base)
|
10
|
+
# base.class_eval do
|
11
|
+
# option %w{-c --config}, "CONFIG", "configuration file" do |f|
|
12
|
+
# e = File.expand_path(f)
|
13
|
+
# raise "Config file #{f} (#{e}) does not exist" unless File.exists?(e)
|
14
|
+
# e
|
15
|
+
# end
|
16
|
+
# def default_config
|
17
|
+
# ENV['RIG_CONFIG'] || "~/.rig"
|
18
|
+
# end
|
19
|
+
# end
|
20
|
+
#end
|
21
|
+
end
|
22
|
+
|
23
|
+
module AwsKey
|
24
|
+
def self.included(base)
|
25
|
+
base.class_eval do
|
26
|
+
option %w{-k --key}, "KEY", "aws access key id"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
module AwsSecret
|
32
|
+
def self.included(base)
|
33
|
+
base.class_eval do
|
34
|
+
option %w{-s --secret}, "SECRET", "aws secret access key"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
module AwsAmi
|
40
|
+
def self.included(base)
|
41
|
+
base.class_eval do
|
42
|
+
option %w{--ami}, "AMI", "aws ami id"
|
43
|
+
def default_ami
|
44
|
+
ENV['RIG_AWS_AMI'] || Rig.config.ami || nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
module AwsRegion
|
51
|
+
def self.included(base)
|
52
|
+
base.class_eval do
|
53
|
+
option %w{--region}, "AMI", "aws region"
|
54
|
+
def default_region
|
55
|
+
ENV['RIG_AWS_REGION'] || Rig.config.region || nil
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
module AwsKeypair
|
62
|
+
def self.included(base)
|
63
|
+
base.class_eval do
|
64
|
+
option %w{--keypair}, "KEYPAIR", "aws key pair name"
|
65
|
+
def default_keypair
|
66
|
+
ENV['RIG_AWS_KEYPAIR'] || Rig.config.keypair || nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
module Instance
|
73
|
+
def self.included(base)
|
74
|
+
base.class_eval do
|
75
|
+
option %w{-i --iid}, "IID", "instance id"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
module InstanceName
|
81
|
+
def self.included(base)
|
82
|
+
base.class_eval do
|
83
|
+
option %w{-n --iname}, "INAME", "instance name"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
module ShowAll
|
89
|
+
def self.included(base)
|
90
|
+
base.class_eval do
|
91
|
+
option %w{-a --all}, :flag, "override default filters and show everything", :attribute_name => :showall
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/lib/rig/config.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
|
2
|
+
module Rig
|
3
|
+
class << self
|
4
|
+
def config
|
5
|
+
@configuration ||= begin
|
6
|
+
f = ENV["RIG_CONFIG"] || "~/.rig"
|
7
|
+
file = File.expand_path(f)
|
8
|
+
#puts "loading file: #{f}"
|
9
|
+
raise "Configuration not found: #{f} (#{file})" unless File.exists?(file)
|
10
|
+
yaml = YAML.load_file(file)
|
11
|
+
Rig::Oconfig.new(yaml['rig'])
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class Oconfig
|
17
|
+
def initialize(data={})
|
18
|
+
@data = {}
|
19
|
+
update!(data)
|
20
|
+
end
|
21
|
+
|
22
|
+
def update!(data)
|
23
|
+
data.each do |key, value|
|
24
|
+
self[key] = value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def [](key)
|
29
|
+
@data[key.to_sym]
|
30
|
+
end
|
31
|
+
|
32
|
+
def []=(key, value)
|
33
|
+
if value.kind_of?(Hash)
|
34
|
+
@data[key.to_sym] = Oconfig.new(value)
|
35
|
+
elsif value.kind_of?(Array)
|
36
|
+
@data[key.to_sym] = []
|
37
|
+
value.each do |v|
|
38
|
+
@data[key.to_sym] << Oconfig.new(v)
|
39
|
+
end
|
40
|
+
else
|
41
|
+
@data[key.to_sym] = value
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def method_missing(sym, *args)
|
46
|
+
if sym.to_s =~ /(.+)=$/
|
47
|
+
self[$1] = args.first
|
48
|
+
else
|
49
|
+
self[sym]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def to_hash
|
54
|
+
out = {}
|
55
|
+
@data.each do |k, v|
|
56
|
+
out[k.to_s] = v.kind_of?(Oconfig) ? v.to_hash : v
|
57
|
+
end
|
58
|
+
out
|
59
|
+
end
|
60
|
+
|
61
|
+
if defined?(YAML)
|
62
|
+
def to_yaml
|
63
|
+
to_hash.to_yaml
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
data/lib/rig/version.rb
ADDED
data/rig.gemspec
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/rig/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Shawn Catanzarite"]
|
6
|
+
gem.email = ["xenonsoul@gmail.com"]
|
7
|
+
gem.description = %q{Cloud provisioning tool built on ruby fog}
|
8
|
+
gem.summary = %q{Cloud provisioning tool built on ruby fog}
|
9
|
+
gem.homepage = "https://github.com/shawncatz/rig"
|
10
|
+
|
11
|
+
gem.files = `git ls-files`.split($\)
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
+
gem.name = "rig"
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = Rig::Version::STRING
|
17
|
+
|
18
|
+
# command line
|
19
|
+
gem.add_dependency "clamp"
|
20
|
+
|
21
|
+
# talk to cloud
|
22
|
+
gem.add_dependency "fog"
|
23
|
+
|
24
|
+
# check if parameter is ip address
|
25
|
+
gem.add_dependency "ipaddress"
|
26
|
+
|
27
|
+
# pretty ascii tables
|
28
|
+
# possibly change this to use Formatador?
|
29
|
+
gem.add_dependency "terminal-table"
|
30
|
+
|
31
|
+
# user-data templates
|
32
|
+
gem.add_dependency "erubis"
|
33
|
+
|
34
|
+
# print awesome
|
35
|
+
gem.add_dependency "awesome_print"
|
36
|
+
|
37
|
+
# Ruby Object Notation - easy config objects
|
38
|
+
#gem.add_dependency "ribbon"
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,196 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rig
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 17
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Shawn Catanzarite
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2012-04-23 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: clamp
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: fog
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: ipaddress
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: terminal-table
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
type: :runtime
|
75
|
+
version_requirements: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: erubis
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
type: :runtime
|
89
|
+
version_requirements: *id005
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: awesome_print
|
92
|
+
prerelease: false
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
hash: 3
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
version: "0"
|
102
|
+
type: :runtime
|
103
|
+
version_requirements: *id006
|
104
|
+
description: Cloud provisioning tool built on ruby fog
|
105
|
+
email:
|
106
|
+
- xenonsoul@gmail.com
|
107
|
+
executables:
|
108
|
+
- rig
|
109
|
+
extensions: []
|
110
|
+
|
111
|
+
extra_rdoc_files: []
|
112
|
+
|
113
|
+
files:
|
114
|
+
- .gitignore
|
115
|
+
- Gemfile
|
116
|
+
- LICENSE
|
117
|
+
- README.md
|
118
|
+
- Rakefile
|
119
|
+
- bin/rig
|
120
|
+
- lib/rig.rb
|
121
|
+
- lib/rig/capistrano.rb
|
122
|
+
- lib/rig/chef.rb
|
123
|
+
- lib/rig/cloud.rb
|
124
|
+
- lib/rig/cloud/balancer.rb
|
125
|
+
- lib/rig/cloud/connection.rb
|
126
|
+
- lib/rig/cloud/dns.rb
|
127
|
+
- lib/rig/cloud/environment.rb
|
128
|
+
- lib/rig/cloud/instance.rb
|
129
|
+
- lib/rig/cloud/userdata.rb
|
130
|
+
- lib/rig/command.rb
|
131
|
+
- lib/rig/command/abstract.rb
|
132
|
+
- lib/rig/command/balancer/destroy.rb
|
133
|
+
- lib/rig/command/balancer/list.rb
|
134
|
+
- lib/rig/command/balancer/main.rb
|
135
|
+
- lib/rig/command/balancer/view.rb
|
136
|
+
- lib/rig/command/dns/create.rb
|
137
|
+
- lib/rig/command/dns/destroy.rb
|
138
|
+
- lib/rig/command/dns/edit.rb
|
139
|
+
- lib/rig/command/dns/list.rb
|
140
|
+
- lib/rig/command/dns/main.rb
|
141
|
+
- lib/rig/command/environment/create.rb
|
142
|
+
- lib/rig/command/environment/destroy.rb
|
143
|
+
- lib/rig/command/environment/list.rb
|
144
|
+
- lib/rig/command/environment/main.rb
|
145
|
+
- lib/rig/command/instance/create.rb
|
146
|
+
- lib/rig/command/instance/destroy.rb
|
147
|
+
- lib/rig/command/instance/list.rb
|
148
|
+
- lib/rig/command/instance/main.rb
|
149
|
+
- lib/rig/command/instance/ssh.rb
|
150
|
+
- lib/rig/command/instance/tag/get.rb
|
151
|
+
- lib/rig/command/instance/tag/main.rb
|
152
|
+
- lib/rig/command/instance/tag/remove.rb
|
153
|
+
- lib/rig/command/instance/tag/set.rb
|
154
|
+
- lib/rig/command/instance/view.rb
|
155
|
+
- lib/rig/command/keypair/list.rb
|
156
|
+
- lib/rig/command/keypair/main.rb
|
157
|
+
- lib/rig/command/main.rb
|
158
|
+
- lib/rig/command/options.rb
|
159
|
+
- lib/rig/config.rb
|
160
|
+
- lib/rig/version.rb
|
161
|
+
- rig.gemspec
|
162
|
+
homepage: https://github.com/shawncatz/rig
|
163
|
+
licenses: []
|
164
|
+
|
165
|
+
post_install_message:
|
166
|
+
rdoc_options: []
|
167
|
+
|
168
|
+
require_paths:
|
169
|
+
- lib
|
170
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ">="
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
hash: 3
|
176
|
+
segments:
|
177
|
+
- 0
|
178
|
+
version: "0"
|
179
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
|
+
none: false
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
hash: 3
|
185
|
+
segments:
|
186
|
+
- 0
|
187
|
+
version: "0"
|
188
|
+
requirements: []
|
189
|
+
|
190
|
+
rubyforge_project:
|
191
|
+
rubygems_version: 1.8.21
|
192
|
+
signing_key:
|
193
|
+
specification_version: 3
|
194
|
+
summary: Cloud provisioning tool built on ruby fog
|
195
|
+
test_files: []
|
196
|
+
|