opsicle 0.18.1 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/bin/opsicle +8 -0
- data/lib/opsicle/client.rb +5 -5
- data/lib/opsicle/commands.rb +1 -0
- data/lib/opsicle/commands/legacy_credential_converter.rb +16 -0
- data/lib/opsicle/commands/ssh.rb +1 -2
- data/lib/opsicle/commands/ssh_clean_keys.rb +1 -2
- data/lib/opsicle/config.rb +19 -11
- data/lib/opsicle/credential_converter_helper.rb +35 -0
- data/lib/opsicle/instances.rb +1 -1
- data/lib/opsicle/s3_bucket.rb +9 -9
- data/lib/opsicle/version.rb +1 -1
- data/spec/opsicle/client_spec.rb +9 -5
- data/spec/opsicle/commands/ssh_spec.rb +2 -5
- data/spec/opsicle/config_spec.rb +20 -27
- data/spec/opsicle/s3_bucket_spec.rb +23 -29
- metadata +34 -32
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
M2Q2NDIwZTg5MzhmZTE2OWFjMmU4ZDIwNWZmZWU0ZWUzZjU3NzBkNQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dd852564a1ede7fb04dcaed4294ee7f7b5b019ce
|
4
|
+
data.tar.gz: cf272c9d62ee80a1769266762b518e7e009e954c
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YzZiN2JkNWE2NDY1ODdiNmFmODI4OTJmMWY4ZmZlZWY3ZmM0MzQzZGMwY2Y4
|
11
|
-
ODlmMDU4OGZkOTgyY2NmZmRhMDhmNDQyZjA2NDU2YTAxZGI3OTU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YzIyMTI0OTg3YjE0MDk5Y2UxNjE1NjMyNWYxNDA1ZjlhNDdhMjQwNjA2Yjkx
|
14
|
-
OWQ3NDU0NzQ2YWExNTM0NTc5N2JjNzU4ZTUzNzU0NzZmNDVmM2I1YjczYTM0
|
15
|
-
ZmFlM2I5ZDUxYTE2NjhhMjNhMzY5YWNlNjg5ODEwMjU3MjJhZGU=
|
6
|
+
metadata.gz: 9317e1d2e8c009041833869af3264bfe7cea202bd9a96c0a69684a153a0fb71697a0bdf086da3657008b0fecf1075afc5166adb1a071f14ab41ec301ac51809d
|
7
|
+
data.tar.gz: 3e450fca539213c34991b150c3f7d9440ea6ce3dd6c14ac81ecc017a2e1fb1fb4fa27da7b5864658a47654c0e823338ec6e8e30cbb7f1f0f866f7aee675cccf7
|
data/bin/opsicle
CHANGED
@@ -43,6 +43,14 @@ on_error do |exception|
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
+
desc "Convert the ~/.fog file to a ~/.aws/credentials file"
|
47
|
+
command 'legacy-credential-converter' do |c|
|
48
|
+
c.action do |args|
|
49
|
+
converter = Opsicle::LegacyCredentialConverter.new
|
50
|
+
converter.execute
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
46
54
|
desc "Deploy your current app to the given environment stack"
|
47
55
|
arg_name '<environment>'
|
48
56
|
command :deploy do |c|
|
data/lib/opsicle/client.rb
CHANGED
@@ -7,10 +7,10 @@ module Opsicle
|
|
7
7
|
attr_reader :config
|
8
8
|
|
9
9
|
def initialize(environment)
|
10
|
-
@config = Config.
|
11
|
-
@config.
|
12
|
-
@opsworks =
|
13
|
-
@s3 =
|
10
|
+
@config = Config.instance
|
11
|
+
@config.configure_aws_environment!(environment)
|
12
|
+
@opsworks = Aws::OpsWorks::Client.new(region: 'us-east-1', credentials: @config.aws_credentials)
|
13
|
+
@s3 = Aws::S3::Client.new(region: 'us-east-1', credentials: @config.aws_credentials)
|
14
14
|
end
|
15
15
|
|
16
16
|
def run_command(command, command_args={}, options={})
|
@@ -20,7 +20,7 @@ module Opsicle
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def api_call(command, options={})
|
23
|
-
opsworks.public_send(command, options)
|
23
|
+
opsworks.public_send(command, options).to_h
|
24
24
|
end
|
25
25
|
|
26
26
|
def opsworks_url
|
data/lib/opsicle/commands.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
require "opsicle/credential_converter_helper"
|
2
|
+
|
3
|
+
module Opsicle
|
4
|
+
class LegacyCredentialConverter
|
5
|
+
include CredentialConverterHelper
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
end
|
9
|
+
|
10
|
+
def execute
|
11
|
+
Output.say "Converting your ~/.fog file to a ~/.aws/credentials file..."
|
12
|
+
|
13
|
+
convert_fog_to_aws
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/opsicle/commands/ssh.rb
CHANGED
@@ -29,8 +29,7 @@ module Opsicle
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def instances
|
32
|
-
@instances ||= client.api_call(:describe_instances, { stack_id: client.config.opsworks_config[:stack_id] })
|
33
|
-
.data[:instances]
|
32
|
+
@instances ||= client.api_call(:describe_instances, { stack_id: client.config.opsworks_config[:stack_id] })[:instances]
|
34
33
|
.select { |instance| instance[:status].to_s == 'online'}
|
35
34
|
.sort { |a,b| a[:hostname] <=> b[:hostname] }
|
36
35
|
end
|
@@ -22,8 +22,7 @@ module Opsicle
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def instances
|
25
|
-
client.api_call(:describe_instances, { stack_id: client.config.opsworks_config[:stack_id] })
|
26
|
-
.data[:instances]
|
25
|
+
client.api_call(:describe_instances, { stack_id: client.config.opsworks_config[:stack_id] })[:instances]
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
data/lib/opsicle/config.rb
CHANGED
@@ -9,14 +9,19 @@ module Opsicle
|
|
9
9
|
|
10
10
|
attr_reader :environment
|
11
11
|
|
12
|
-
def
|
13
|
-
@
|
12
|
+
def self.instance
|
13
|
+
@instance ||= new
|
14
|
+
end
|
15
|
+
|
16
|
+
def aws_credentials
|
17
|
+
Aws::Credentials.new(aws_config[:access_key_id], aws_config[:secret_access_key], aws_config[:session_token])
|
14
18
|
end
|
15
19
|
|
16
20
|
def aws_config
|
17
21
|
return @aws_config if @aws_config
|
18
22
|
if fog_config[:mfa_serial_number]
|
19
|
-
|
23
|
+
creds = get_session.credentials
|
24
|
+
@aws_config = { access_key_id: creds.access_key_id, secret_access_key: creds.secret_access_key, session_token: creds.session_token }
|
20
25
|
else
|
21
26
|
@aws_config = { access_key_id: fog_config[:aws_access_key_id], secret_access_key: fog_config[:aws_secret_access_key] }
|
22
27
|
end
|
@@ -31,9 +36,9 @@ module Opsicle
|
|
31
36
|
@opsworks_config ||= load_config(OPSICLE_CONFIG_PATH)
|
32
37
|
end
|
33
38
|
|
34
|
-
def
|
35
|
-
|
36
|
-
|
39
|
+
def configure_aws_environment!(environment)
|
40
|
+
@environment = environment.to_sym
|
41
|
+
end
|
37
42
|
|
38
43
|
def load_config(file)
|
39
44
|
raise MissingConfig, "Missing configuration file: #{file} Run 'opsicle help'" unless File.exist?(file)
|
@@ -44,15 +49,18 @@ module Opsicle
|
|
44
49
|
end
|
45
50
|
|
46
51
|
def get_mfa_token
|
47
|
-
|
52
|
+
return @token if @token
|
53
|
+
@token = Output.ask("Enter MFA token: "){ |q| q.validate = /^\d{6}$/ }
|
48
54
|
end
|
49
55
|
|
50
56
|
def get_session
|
51
57
|
return @session if @session
|
52
|
-
sts =
|
53
|
-
|
54
|
-
|
55
|
-
|
58
|
+
sts = Aws::STS::Client.new(access_key_id: fog_config[:aws_access_key_id],
|
59
|
+
secret_access_key: fog_config[:aws_secret_access_key],
|
60
|
+
region: 'us-east-1')
|
61
|
+
@session = sts.get_session_token(duration_seconds: session_duration,
|
62
|
+
serial_number: fog_config[:mfa_serial_number],
|
63
|
+
token_code: get_mfa_token)
|
56
64
|
end
|
57
65
|
|
58
66
|
def session_duration
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Opsicle
|
4
|
+
module CredentialConverterHelper
|
5
|
+
def convert_fog_to_aws
|
6
|
+
# open/make new credentials file, read, and gather the groups of aws credentials already in file
|
7
|
+
cred_path = File.expand_path("~/.aws/credentials")
|
8
|
+
cred_file = File.open(cred_path, "a+")
|
9
|
+
cred_text = cred_file.read
|
10
|
+
cred_groups = cred_text.scan(/\[([\S]*)\]/).flatten
|
11
|
+
|
12
|
+
# open existing fog file, and load as yaml hash
|
13
|
+
fog_path = File.expand_path("~/.fog")
|
14
|
+
fog_hash = YAML::load_file(fog_path)
|
15
|
+
|
16
|
+
# for each environment in the fog file, go through and if it isn't in credentials file, then put it and data in
|
17
|
+
fog_hash.each do | environment, credentials |
|
18
|
+
if !cred_groups.include?(environment)
|
19
|
+
copy_data(cred_file, environment, credentials)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# close to save
|
24
|
+
cred_file.close
|
25
|
+
end
|
26
|
+
|
27
|
+
def copy_data(cred_file, environment, credentials)
|
28
|
+
cred_file.puts
|
29
|
+
cred_file.puts "[#{environment}]"
|
30
|
+
credentials.each do | key, value |
|
31
|
+
cred_file.puts "#{key} = #{value}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/opsicle/instances.rb
CHANGED
data/lib/opsicle/s3_bucket.rb
CHANGED
@@ -2,17 +2,17 @@ require 'pathname'
|
|
2
2
|
|
3
3
|
module Opsicle
|
4
4
|
class S3Bucket
|
5
|
-
|
5
|
+
attr_reader :bucket
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
def initialize(client, bucket_name)
|
8
|
+
@bucket = Aws::S3::Bucket.new(name: bucket_name, client: client.s3)
|
9
|
+
raise UnknownBucket unless @bucket.exists?
|
10
|
+
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
def update(object)
|
13
|
+
obj = bucket.object(object)
|
14
|
+
obj.upload_file(Pathname.new(object))
|
15
|
+
end
|
16
16
|
end
|
17
17
|
|
18
18
|
UnknownBucket = Class.new(StandardError)
|
data/lib/opsicle/version.rb
CHANGED
data/spec/opsicle/client_spec.rb
CHANGED
@@ -7,16 +7,21 @@ module Opsicle
|
|
7
7
|
let(:aws_client) { double }
|
8
8
|
let(:config) { double }
|
9
9
|
before do
|
10
|
-
|
10
|
+
mock_keys = {access_key_id: 'key', secret_access_key: 'secret'}
|
11
|
+
allow(config).to receive(:aws_credentials).and_return(mock_keys)
|
11
12
|
allow(config).to receive(:opsworks_config).and_return({ stack_id: 'stack', app_id: 'app', something_else: 'true' })
|
12
|
-
allow(ow_stub).to receive(:client).and_return(aws_client)
|
13
13
|
allow(Config).to receive(:new).and_return(config)
|
14
|
-
allow(
|
14
|
+
allow(Config).to receive(:instance).and_return(config)
|
15
|
+
allow(Aws::OpsWorks::Client).to receive(:new).and_return(aws_client)
|
16
|
+
allow(Aws::S3::Client).to receive(:new).and_return(aws_client)
|
17
|
+
allow(config).to receive(:configure_aws_environment!).with("derp")
|
18
|
+
allow(aws_client).to receive(:configure_aws_environment!).with("derp")
|
19
|
+
allow(subject).to receive(:configure_aws_environment!).with("derp")
|
20
|
+
allow(Client).to receive(:configure_aws_environment!).with("derp")
|
15
21
|
end
|
16
22
|
|
17
23
|
context "#run_command" do
|
18
24
|
it "calls out to the aws client with all the config options" do
|
19
|
-
expect(config).to receive(:configure_aws!)
|
20
25
|
expect(aws_client).to receive(:create_deployment).with(
|
21
26
|
hash_including(
|
22
27
|
command: { name: 'deploy', args: {} },
|
@@ -27,7 +32,6 @@ module Opsicle
|
|
27
32
|
subject.run_command('deploy')
|
28
33
|
end
|
29
34
|
it "removes extra options from the opsworks config" do
|
30
|
-
expect(config).to receive(:configure_aws!)
|
31
35
|
expect(aws_client).to receive(:create_deployment).with(hash_excluding(:something_else))
|
32
36
|
subject.run_command('deploy')
|
33
37
|
end
|
@@ -7,7 +7,6 @@ module Opsicle
|
|
7
7
|
let(:client) { double(config: double(opsworks_config: {stack_id: "1234"})) }
|
8
8
|
let(:stack) { double(client: client) }
|
9
9
|
let(:user_profile) { double }
|
10
|
-
let(:api_call) { double }
|
11
10
|
before do
|
12
11
|
allow(Client).to receive(:new).with('derp').and_return(client)
|
13
12
|
allow(Stack).to receive(:new).with(client).and_return(stack)
|
@@ -104,14 +103,12 @@ module Opsicle
|
|
104
103
|
context "#instances" do
|
105
104
|
it "makes a describe_instances API call" do
|
106
105
|
expect(client).to receive(:api_call).with(:describe_instances, {stack_id: "1234"})
|
107
|
-
.and_return(
|
108
|
-
expect(api_call).to receive(:data).and_return(instances: [{:name => :foo, :status => "online"},{:name => :bar, :status => "stopped"}])
|
106
|
+
.and_return(instances: [{:name => :foo, :status => "online"},{:name => :bar, :status => "stopped"}])
|
109
107
|
expect(subject.instances).to eq([{:name => :foo, :status=>"online"}])
|
110
108
|
end
|
111
109
|
it "sorts instances by hostname" do
|
112
110
|
expect(client).to receive(:api_call).with(:describe_instances, {stack_id: "1234"})
|
113
|
-
.and_return(
|
114
|
-
expect(api_call).to receive(:data).and_return(instances: [{:hostname => "taco", :status => "online"},{:hostname => "bar", :status => "online"}])
|
111
|
+
.and_return(instances: [{:hostname => "taco", :status => "online"},{:hostname => "bar", :status => "online"}])
|
115
112
|
expect(subject.instances).to eq([{:hostname => "bar", :status=>"online"}, {:hostname => "taco", :status=>"online"}])
|
116
113
|
end
|
117
114
|
end
|
data/spec/opsicle/config_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require "opsicle"
|
|
3
3
|
|
4
4
|
module Opsicle
|
5
5
|
describe Config do
|
6
|
-
subject { Config.new
|
6
|
+
subject { Config.new }
|
7
7
|
context "with a valid config" do
|
8
8
|
before do
|
9
9
|
allow(File).to receive(:exist?).with(File.expand_path '~/.fog').and_return(true)
|
@@ -11,14 +11,19 @@ module Opsicle
|
|
11
11
|
allow(YAML).to receive(:load_file).with(File.expand_path '~/.fog').and_return({'derp' => { 'aws_access_key_id' => 'key', 'aws_secret_access_key' => 'secret'}})
|
12
12
|
allow(YAML).to receive(:load_file).with('./.opsicle').and_return({'derp' => { 'app_id' => 'app', 'stack_id' => 'stack'}})
|
13
13
|
end
|
14
|
+
before :each do
|
15
|
+
subject.configure_aws_environment!('derp')
|
16
|
+
end
|
14
17
|
|
15
18
|
context "#aws_config" do
|
16
19
|
it "should contain access_key_id" do
|
17
20
|
expect(subject.aws_config).to have_key(:access_key_id)
|
21
|
+
expect(subject.aws_config).to eq({ :access_key_id => 'key', :secret_access_key => 'secret'})
|
18
22
|
end
|
19
23
|
|
20
24
|
it "should contain secret_access_key" do
|
21
25
|
expect(subject.aws_config).to have_key(:secret_access_key)
|
26
|
+
expect(subject.aws_config).to eq({ :access_key_id => 'key', :secret_access_key => 'secret'})
|
22
27
|
end
|
23
28
|
end
|
24
29
|
|
@@ -32,35 +37,17 @@ module Opsicle
|
|
32
37
|
end
|
33
38
|
end
|
34
39
|
|
35
|
-
context "#
|
36
|
-
it "should
|
37
|
-
|
38
|
-
|
40
|
+
context "#aws_credentials" do
|
41
|
+
it "should return aws credentials" do
|
42
|
+
credentials = double
|
43
|
+
allow(Aws::Credentials).to receive(:new).and_return(credentials)
|
44
|
+
expect(subject.aws_credentials).to eq(credentials)
|
39
45
|
end
|
40
46
|
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context "with a valid MFA config" do
|
44
|
-
before do
|
45
|
-
allow(File).to receive(:exist?).with(File.expand_path '~/.fog').and_return(true)
|
46
|
-
mock_fog = { 'derp' => { 'aws_access_key_id' => 'key', 'aws_secret_access_key' => 'secret',
|
47
|
-
'mfa_serial_number' => 'tacos' }}
|
48
|
-
allow(YAML).to receive(:load_file).with(File.expand_path '~/.fog').and_return(mock_fog)
|
49
|
-
|
50
|
-
mock_sts = Class.new
|
51
|
-
mock_session = Class.new
|
52
|
-
mock_credentials = { access_key_id: 'key', secret_access_key: 'secret', session_token: 'cats' }
|
53
|
-
allow(mock_session).to receive(:credentials).and_return(mock_credentials)
|
54
|
-
allow(mock_sts).to receive(:new_session).and_return(mock_session)
|
55
|
-
allow(AWS::STS).to receive(:new).and_return(mock_sts)
|
56
|
-
allow(Output).to receive(:ask).and_return(123456)
|
57
|
-
end
|
58
47
|
|
59
|
-
context "#
|
60
|
-
it "should
|
61
|
-
expect(
|
62
|
-
session_token: 'cats'))
|
63
|
-
subject.configure_aws!
|
48
|
+
context "#configure_aws_environment!" do
|
49
|
+
it "should return the environment as a symbol" do
|
50
|
+
expect(subject.configure_aws_environment!("environment")).to eq(:environment)
|
64
51
|
end
|
65
52
|
end
|
66
53
|
end
|
@@ -89,5 +76,11 @@ module Opsicle
|
|
89
76
|
end
|
90
77
|
end
|
91
78
|
end
|
79
|
+
|
80
|
+
context "singleton support" do
|
81
|
+
it "should return a single instance" do
|
82
|
+
expect(Config.instance).to eq(Config.instance)
|
83
|
+
end
|
84
|
+
end
|
92
85
|
end
|
93
86
|
end
|
@@ -3,48 +3,42 @@ require "opsicle"
|
|
3
3
|
|
4
4
|
module Opsicle
|
5
5
|
describe S3Bucket do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
before do
|
7
|
+
@object = double('object', :upload_file => true)
|
8
|
+
@bucket = double('bucket', :exists? => true, :object => @object)
|
9
|
+
allow(Aws::S3::Bucket).to receive(:new).and_return(@bucket)
|
10
|
+
@bucket_name = 'name'
|
11
|
+
@client = double('client', :s3 => true)
|
12
|
+
allow(Pathname).to receive(:new)
|
13
|
+
end
|
12
14
|
|
13
15
|
context "#new" do
|
14
|
-
|
15
|
-
|
16
|
-
expect(
|
17
|
-
expect(
|
18
|
-
|
19
|
-
subject.new(client, bucket_name)
|
16
|
+
it "find the bucket from s3" do
|
17
|
+
expect(@client).to receive(:s3)
|
18
|
+
expect(@bucket).to receive(:exists?)
|
19
|
+
expect(Aws::S3::Bucket).to receive(:new)
|
20
|
+
S3Bucket.new(@client, @bucket_name)
|
20
21
|
end
|
21
22
|
|
22
23
|
it "throws an error if the bucket can't be found" do
|
23
|
-
allow(bucket).to receive(:exists?).and_return(false)
|
24
|
-
expect(client).to
|
25
|
-
expect(s3).to receive(:buckets).and_return(buckets)
|
26
|
-
expect(buckets).to receive(:"[]").with(bucket_name).and_return(bucket)
|
27
|
-
expect { subject.new(client, bucket_name) }.to raise_error(UnknownBucket)
|
24
|
+
allow(@bucket).to receive(:exists?).and_return(false)
|
25
|
+
expect { S3Bucket.new(@client, @bucket_name) }.to raise_error(UnknownBucket)
|
28
26
|
end
|
29
27
|
end
|
30
28
|
|
31
29
|
context "#update" do
|
32
|
-
let(:object) { double }
|
33
|
-
let(:objects) { double(:"[]" => object) }
|
34
|
-
before do
|
35
|
-
allow(Pathname).to receive(:new)
|
36
|
-
end
|
37
|
-
|
38
30
|
it "finds the object in the s3 bucket" do
|
39
|
-
|
40
|
-
|
41
|
-
|
31
|
+
expect(@bucket).to receive(:object)
|
32
|
+
bucket = S3Bucket.new(@client, @bucket_name)
|
33
|
+
bucket.update("object")
|
42
34
|
end
|
43
35
|
|
44
36
|
it "writes the new object in the s3 bucket" do
|
45
|
-
|
46
|
-
expect(object).to receive(:
|
47
|
-
|
37
|
+
expect(Pathname).to receive(:new).with("object")
|
38
|
+
expect(@object).to receive(:upload_file)
|
39
|
+
allow(@bucket).to receive(:object).and_return(@object)
|
40
|
+
bucket = S3Bucket.new(@client, @bucket_name)
|
41
|
+
bucket.update("object")
|
48
42
|
end
|
49
43
|
end
|
50
44
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opsicle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Fleener
|
@@ -9,174 +9,174 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-07-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ~>
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '2'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - ~>
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '2'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: gli
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - ~>
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '2.9'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - ~>
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '2.9'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: highline
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - ~>
|
46
|
+
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '1.6'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - ~>
|
53
|
+
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '1.6'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: terminal-table
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - ~>
|
60
|
+
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '1.4'
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - ~>
|
67
|
+
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '1.4'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: minitar
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - ~>
|
74
|
+
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0.5'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - ~>
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0.5'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: hashdiff
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - ~>
|
88
|
+
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0.2'
|
91
91
|
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - ~>
|
95
|
+
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0.2'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: curses
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - ~>
|
102
|
+
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '1.0'
|
105
105
|
type: :runtime
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - ~>
|
109
|
+
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '1.0'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: bundler
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - ~>
|
116
|
+
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '1.3'
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - ~>
|
123
|
+
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '1.3'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: rake
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
|
-
- - ~>
|
130
|
+
- - "~>"
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '10.1'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
|
-
- - ~>
|
137
|
+
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '10.1'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: rspec
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- - ~>
|
144
|
+
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: 3.0.0.beta2
|
147
147
|
type: :development
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
|
-
- - ~>
|
151
|
+
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: 3.0.0.beta2
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
155
|
name: guard
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
|
-
- - ~>
|
158
|
+
- - "~>"
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
160
|
+
version: 2.5.0
|
161
161
|
type: :development
|
162
162
|
prerelease: false
|
163
163
|
version_requirements: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
|
-
- - ~>
|
165
|
+
- - "~>"
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version:
|
167
|
+
version: 2.5.0
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: guard-rspec
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
|
-
- - ~>
|
172
|
+
- - "~>"
|
173
173
|
- !ruby/object:Gem::Version
|
174
174
|
version: '4.2'
|
175
175
|
type: :development
|
176
176
|
prerelease: false
|
177
177
|
version_requirements: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
179
|
-
- - ~>
|
179
|
+
- - "~>"
|
180
180
|
- !ruby/object:Gem::Version
|
181
181
|
version: '4.2'
|
182
182
|
description: CLI for the opsworks platform
|
@@ -195,6 +195,7 @@ files:
|
|
195
195
|
- lib/opsicle/commands/chef_update.rb
|
196
196
|
- lib/opsicle/commands/deploy.rb
|
197
197
|
- lib/opsicle/commands/execute_recipes.rb
|
198
|
+
- lib/opsicle/commands/legacy_credential_converter.rb
|
198
199
|
- lib/opsicle/commands/list.rb
|
199
200
|
- lib/opsicle/commands/list_instances.rb
|
200
201
|
- lib/opsicle/commands/ssh.rb
|
@@ -203,6 +204,7 @@ files:
|
|
203
204
|
- lib/opsicle/commands/update.rb
|
204
205
|
- lib/opsicle/commands/user_profile_info.rb
|
205
206
|
- lib/opsicle/config.rb
|
207
|
+
- lib/opsicle/credential_converter_helper.rb
|
206
208
|
- lib/opsicle/deploy_helper.rb
|
207
209
|
- lib/opsicle/deployment.rb
|
208
210
|
- lib/opsicle/deployments.rb
|
@@ -260,12 +262,12 @@ require_paths:
|
|
260
262
|
- lib
|
261
263
|
required_ruby_version: !ruby/object:Gem::Requirement
|
262
264
|
requirements:
|
263
|
-
- -
|
265
|
+
- - ">="
|
264
266
|
- !ruby/object:Gem::Version
|
265
267
|
version: '0'
|
266
268
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
269
|
requirements:
|
268
|
-
- -
|
270
|
+
- - ">="
|
269
271
|
- !ruby/object:Gem::Version
|
270
272
|
version: '0'
|
271
273
|
requirements: []
|