skyed 0.1.7 → 0.1.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3dff20f796f444c5110db4e24ab5fbe30640f2a
4
- data.tar.gz: 4c90c8a4b5d6f667ee8f4d21e3734c1dd9a09146
3
+ metadata.gz: 9135fef3c347f9bd2ffcc03c6a9621aaa8429f5f
4
+ data.tar.gz: ae7793935198775b5bc8afad4378b29cf337495b
5
5
  SHA512:
6
- metadata.gz: b7c950fbf09f8d159da451fcb1cb89c5775de866b224d18396373724f480db5028054cff8a9bc6cf49079fbffbaa91b2e168c2f78efcd63d905da893551ff739
7
- data.tar.gz: dd78e8e85aacf0f4ea3aea195d8450759a245503b14268caffa25a53dbe5204f7b723ea1bc60393ccde03abd0274e4ec235724d6443aef47f28433c2adabe8fc
6
+ metadata.gz: 0219be28bd5d5fd6612e01f6f0b5cd2f55123fe0d6ae141ad3df5fcd16dc09b7bd744f403513c237b0940d72ba5687232c42cf881e726429f90f3520a2737144
7
+ data.tar.gz: d0decb2b5c243ae2059bd753b18282447875a5bc3387d7b484e14120d72f16ac0ceb0df3b031f97b688b148933a31fa2f1e158f09471b0a0606163b2671aa894
@@ -1,4 +1,7 @@
1
+ require 'skyed/list'
2
+ require 'skyed/create'
1
3
  require 'skyed/utils'
4
+ require 'skyed/git'
2
5
  require 'skyed/aws'
3
6
  require 'skyed/destroy'
4
7
  require 'skyed/run'
@@ -38,6 +38,100 @@ module Skyed
38
38
  end
39
39
  end
40
40
 
41
+ # This module encapsulates all the RDS related functions.
42
+ module RDS
43
+ class << self
44
+ def create_instance_from_snapshot(
45
+ instance_name,
46
+ snapshot,
47
+ _options,
48
+ rds = nil)
49
+ rds = login if rds.nil?
50
+ rds.restore_db_instance_from_db_snapshot(
51
+ db_instance_identifier: instance_name,
52
+ db_snapshot_identifier: snapshot)[:db_instance]
53
+ db_instance = wait_for_instance(instance_name, 'available', 0, rds)
54
+ "#{db_instance[:endpoint][:address]}:#{db_instance[:endpoint][:port]}"
55
+ end
56
+
57
+ def list_snapshots(_options, args, rds = nil)
58
+ rds = login if rds.nil?
59
+ request = {}
60
+ request[:db_instance_identifier] = args.first unless args.nil?
61
+ response = rds.describe_db_snapshots(request)
62
+ response.db_snapshots
63
+ end
64
+
65
+ def destroy_instance(instance_name, options, rds = nil)
66
+ rds = login if rds.nil?
67
+ rds.delete_db_instance(
68
+ generate_params(instance_name, options))[:db_instance]
69
+ end
70
+
71
+ def generate_delete_params(instance_name, options)
72
+ snapshot = !options[:final_snapshot_name].empty?
73
+ params = {
74
+ db_instance_identifier: instance_name,
75
+ skip_final_snapshot: !snapshot
76
+ }
77
+ params[
78
+ :final_snapshot_name] = options[:final_snapshot_name] if snapshot
79
+ params
80
+ end
81
+
82
+ def generate_create_params(instance_name, options)
83
+ {
84
+ db_instance_identifier: instance_name,
85
+ allocated_storage: options[:size],
86
+ db_instance_class: "db.#{options[:type]}",
87
+ engine: 'postgres',
88
+ master_username: options[:user],
89
+ master_user_password: options[:password],
90
+ db_security_groups: [options[:db_security_group]],
91
+ db_parameter_group_name: options[:db_parameters_group]
92
+ }
93
+ end
94
+
95
+ def wait_for_instance(instance_name, status, wait = 0, rds = nil)
96
+ rds = login if rds.nil?
97
+ instance = rds.describe_db_instances(
98
+ db_instance_identifier: instance_name)[:db_instances][0]
99
+ while instance[:db_instance_status] != status
100
+ sleep(wait)
101
+ instance = rds.describe_db_instances(
102
+ db_instance_identifier: instance_name)[:db_instances][0]
103
+ end
104
+ instance
105
+ end
106
+
107
+ def generate_params(instance_name, options)
108
+ params = generate_delete_params(
109
+ instance_name, options) if options.key? :final_snapshot_name
110
+ params = generate_create_params(
111
+ instance_name, options) if options.key? :user
112
+ params
113
+ end
114
+
115
+ def create_instance(instance_name, options, rds = nil)
116
+ rds = login if rds.nil?
117
+ rds.create_db_instance(
118
+ generate_params(instance_name, options))[:db_instance]
119
+ db_instance = wait_for_instance(instance_name, 'available', 0, rds)
120
+ "#{db_instance[:endpoint][:address]}:#{db_instance[:endpoint][:port]}"
121
+ end
122
+
123
+ def login(
124
+ access = Skyed::Settings.access_key,
125
+ secret = Skyed::Settings.secret_key,
126
+ region = Skyed::AWS.region)
127
+ Aws::RDS::Client.new(
128
+ access_key_id: access,
129
+ secret_access_key: secret,
130
+ region: region)
131
+ end
132
+ end
133
+ end
134
+
41
135
  # This module encapsulates all the OpsWorks related functions.
42
136
  module OpsWorks
43
137
  STACK = {
@@ -66,6 +160,33 @@ module Skyed
66
160
  }
67
161
 
68
162
  class << self
163
+ def deregister_instance(hostname, opsworks)
164
+ instance = instance_by_name(
165
+ hostname, Skyed::Settings.stack_id, opsworks)
166
+ opsworks.deregister_instance(
167
+ instance_id: instance.instance_id) unless instance.nil?
168
+ wait_for_instance(
169
+ hostname, Skyed::Settings.stack_id, 'terminated', opsworks)
170
+ end
171
+
172
+ def delete_user(opsworks)
173
+ stack = opsworks.describe_stacks(
174
+ stack_ids: [Skyed::Settings.stack_id])[:stacks][0][:name]
175
+ layer = opsworks.describe_layers(
176
+ layer_ids: [Skyed::Settings.layer_id])[:layers][0][:name]
177
+ Skyed::AWS::IAM.delete_user "OpsWorks-#{stack}-#{layer}"
178
+ end
179
+
180
+ def wait_for_instance(instance_name, stack_id, status, opsworks)
181
+ instance = Skyed::AWS::OpsWorks.instance_by_name(
182
+ instance_name, stack_id, opsworks)
183
+ until instance.nil? || instance.status == status
184
+ sleep(0)
185
+ instance = Skyed::AWS::OpsWorks.instance_by_name(
186
+ instance_name, stack_id, opsworks)
187
+ end
188
+ end
189
+
69
190
  def stack(stack_criteria, opsworks)
70
191
  stack_by_name(
71
192
  stack_criteria,
@@ -239,6 +360,7 @@ module Skyed
239
360
 
240
361
  def generate_stack_params(options)
241
362
  params = basic_stack_params
363
+ params[:custom_json] = options[:custom_json] || ''
242
364
  params[:custom_cookbooks_source] = custom_cookbooks_source(
243
365
  STACK[:custom_cookbooks_source])
244
366
  params[:configuration_manager] = configuration_manager(
@@ -2,12 +2,22 @@ desc 'Initialize skyed'
2
2
  long_desc 'Sets up skyed configuration for a repository'
3
3
 
4
4
  command :init do |cmd|
5
- cmd.flag :remote, default_value: nil,
5
+ cmd.flag [:remote], default_value: nil,
6
+ type: String,
7
+ desc: 'Remote to use in OpsWorks'
8
+ cmd.flag [:repo], default_value: '.',
6
9
  type: String,
7
- desc: 'Remote to use in OpsWorks'
8
- cmd.flag :chef_version, default_value: '11.10',
9
- type: String,
10
- desc: 'Chef version to use in OpsWorks'
10
+ desc: 'OpsWorks repository location'
11
+ cmd.flag [:repo_key, 'repo-key'], default_value: nil,
12
+ type: String,
13
+ desc: 'Key to use with repo'
14
+ cmd.flag [:j, :custom_json, 'custom-json'], default_value: '',
15
+ type: String,
16
+ desc: 'Custom JSON to pass to OW'
17
+ desc = 'Chef version to use in OpsWorks'
18
+ cmd.flag [:chef_version, 'chef-version'], default_value: '11.10',
19
+ type: String,
20
+ desc: desc
11
21
  cmd.action do |global_options, options|
12
22
  Skyed::Init.execute(global_options, options)
13
23
  end
@@ -34,12 +44,13 @@ command :run do |cmd|
34
44
  cmd.flag [:l, :layer], default_value: nil,
35
45
  type: String,
36
46
  desc: layer_desc
37
- cmd.flag [:w, :wait_interval], default_value: 30,
38
- type: Integer,
39
- desc: 'Time to wait for AWS responses'
40
- cmd.flag [:j, :custom_json], default_value: '',
41
- type: String,
42
- desc: 'Custom JSON to pass to OW'
47
+ desc = 'Time to wait for AWS responses'
48
+ cmd.flag [:w, :wait_interval, 'wait-interval'], default_value: 30,
49
+ type: Integer,
50
+ desc: desc
51
+ cmd.flag [:j, :custom_json, 'custom-json'], default_value: '',
52
+ type: String,
53
+ desc: 'Custom JSON to pass to OW'
43
54
  cmd.action do |global_options, options, args|
44
55
  Skyed::Run.execute(global_options, options, args)
45
56
  end
@@ -49,7 +60,58 @@ desc 'Destroy instance'
49
60
  long_desc 'Destroy instance'
50
61
 
51
62
  command :destroy do |cmd|
63
+ cmd.switch [:rds], default_value: false,
64
+ desc: 'Destroys RDS instance'
65
+ desc = 'Final snapshot name. Ommit to skip'
66
+ cmd.flag [:final_snapshot_name, 'final-snapshot-name'], default_value: '',
67
+ type: String,
68
+ desc: desc
52
69
  cmd.action do |global_options, options, args|
53
70
  Skyed::Destroy.execute(global_options, options, args)
54
71
  end
55
72
  end
73
+
74
+ desc 'Create instance'
75
+ long_desc 'Create instance'
76
+
77
+ command :create do |cmd|
78
+ cmd.switch [:rds], default_value: false,
79
+ desc: 'Creates RDS instance'
80
+ cmd.flag [:size], default_value: 100,
81
+ type: Integer,
82
+ desc: 'Size of the RDS instance'
83
+ cmd.flag [:type], default_value: 'm1.large',
84
+ type: String,
85
+ desc: 'Type of the RDS instance'
86
+ cmd.flag [:user], default_value: 'root',
87
+ type: String,
88
+ desc: 'Master user of the RDS instance'
89
+ cmd.flag [:password], default_value: 'password',
90
+ type: String,
91
+ desc: 'Master password of the RDS instance'
92
+ defval = 'rds-launch-wizard'
93
+ desc = 'Name of the DB Security Group'
94
+ cmd.flag [:db_security_group, 'db-security-group'], default_value: defval,
95
+ type: String,
96
+ desc: desc
97
+ defval = 'default'
98
+ desc = 'Name of the DB Parameter Group'
99
+ cmd.flag [:db_parameters_group, 'db-parameters-group'], default_value: defval,
100
+ type: String,
101
+ desc: desc
102
+ cmd.action do |global_options, options, args|
103
+ Skyed::Create.execute(global_options, options, args)
104
+ end
105
+ end
106
+
107
+ desc 'List objects'
108
+ long_desc 'List objects'
109
+
110
+ command :list do |cmd|
111
+ cmd.switch [:rds], default_value: false,
112
+ desc: 'Lists RDS objects'
113
+
114
+ cmd.action do |global_options, options, args|
115
+ Skyed::List.execute(global_options, options, args)
116
+ end
117
+ end
@@ -0,0 +1,26 @@
1
+ module Skyed
2
+ # This module encapsulates all the create command steps.
3
+ module Create
4
+ class << self
5
+ def execute(_global_options, options, args)
6
+ Skyed::Init.credentials if Skyed::Settings.empty?
7
+ endpoint = create_new(options, args) if args.length == 1
8
+ endpoint = restore_new(options, args) if args.length == 2
9
+ puts endpoint
10
+ end
11
+
12
+ def restore_new(options, args)
13
+ Skyed::AWS::RDS.create_instance_from_snapshot(
14
+ args[0],
15
+ args[1],
16
+ options.select { |k| k != :rds })
17
+ end
18
+
19
+ def create_new(options, args)
20
+ Skyed::AWS::RDS.create_instance(
21
+ args[0],
22
+ options.select { |k| k != :rds })
23
+ end
24
+ end
25
+ end
26
+ end
@@ -4,6 +4,7 @@ module Skyed
4
4
  class << self
5
5
  def execute(global_options)
6
6
  fail 'Not initialized, please run skyed init' if Skyed::Settings.empty?
7
+ Skyed::Utils.export_credentials
7
8
  push_devel_branch(global_options)
8
9
  output = `cd #{Skyed::Settings.repo} && vagrant up`
9
10
  fail output unless $CHILD_STATUS.success?
@@ -11,7 +12,7 @@ module Skyed
11
12
  end
12
13
 
13
14
  def push_devel_branch(_global_options)
14
- repo = Git.open(Skyed::Settings.repo)
15
+ repo = ::Git.open(Skyed::Settings.repo)
15
16
  repo.push(Skyed::Settings.remote_name, Skyed::Settings.branch)
16
17
  end
17
18
  end
@@ -2,40 +2,19 @@ module Skyed
2
2
  # This module encapsulates all the destroy command steps.
3
3
  module Destroy
4
4
  class << self
5
- def execute(_global_options, _options, _args)
5
+ def execute(global_options, options, args)
6
+ Skyed::Init.credentials if Skyed::Settings.empty?
7
+ destroy_vagrant(global_options, options, args) unless options[:rds]
8
+ Skyed::AWS::RDS.destroy_instance(args[0], options) if options[:rds]
9
+ end
10
+
11
+ def destroy_vagrant(_global_options, _options, _args)
6
12
  repo_path = Skyed::Settings.repo
7
13
  hostname = `cd #{repo_path} && vagrant ssh -c hostname`.strip
8
14
  `cd #{repo_path} && vagrant destroy -f`
9
15
  ow = Skyed::AWS::OpsWorks.login
10
- deregister_instance hostname, ow
11
- delete_user ow
12
- end
13
-
14
- def deregister_instance(hostname, ow)
15
- instance = Skyed::AWS::OpsWorks.instance_by_name(
16
- hostname, Skyed::Settings.stack_id, ow)
17
- ow.deregister_instance(
18
- instance_id: instance.instance_id) unless instance.nil?
19
- wait_for_instance(
20
- hostname, Skyed::Settings.stack_id, ow)
21
- end
22
-
23
- def delete_user(ow)
24
- stack = ow.describe_stacks(
25
- stack_ids: [Skyed::Settings.stack_id])[:stacks][0][:name]
26
- layer = ow.describe_layers(
27
- layer_ids: [Skyed::Settings.layer_id])[:layers][0][:name]
28
- Skyed::AWS::IAM.delete_user "OpsWorks-#{stack}-#{layer}"
29
- end
30
-
31
- def wait_for_instance(hostname, stack_id, opsworks)
32
- instance = Skyed::AWS::OpsWorks.instance_by_name(
33
- hostname, stack_id, opsworks)
34
- until instance.nil? || instance.status == 'terminated'
35
- sleep(0)
36
- instance = Skyed::AWS::OpsWorks.instance_by_name(
37
- hostname, stack_id, opsworks)
38
- end
16
+ Skyed::AWS::OpsWorks.deregister_instance hostname, ow
17
+ Skyed::AWS::OpsWorks.delete_user ow
39
18
  end
40
19
  end
41
20
  end
@@ -0,0 +1,21 @@
1
+ require 'securerandom'
2
+ require 'erb'
3
+
4
+ module Skyed
5
+ # This module encapsulates all the Git features.
6
+ module Git
7
+ class << self
8
+ def clone_stack_remote(stack)
9
+ Skyed::Init.opsworks_git_key unless Skyed::Settings.current_stack?(
10
+ stack[:stack_id])
11
+ ENV['PKEY'] = Skyed::Settings.opsworks_git_key
12
+ Skyed::Utils.create_template('/tmp', 'ssh-git', 'ssh-git.erb')
13
+ File.chmod(0755, '/tmp/ssh-git')
14
+ ENV['GIT_SSH'] = '/tmp/ssh-git'
15
+ path = "/tmp/skyed.#{SecureRandom.hex}"
16
+ ::Git.clone(stack[:custom_cookbooks_source][:url], path)
17
+ path
18
+ end
19
+ end
20
+ end
21
+ end
@@ -12,10 +12,10 @@ module Skyed
12
12
  class << self
13
13
  def execute(global_options, options)
14
14
  fail 'Already initialized' unless Skyed::Settings.empty?
15
- Skyed::Settings.repo = repo_path(get_repo).to_s
15
+ Skyed::Settings.repo = repo_path(get_repo(options[:repo])).to_s
16
16
  branch global_options, options
17
17
  credentials
18
- opsworks_git_key
18
+ opsworks_git_key options
19
19
  opsworks options
20
20
  vagrant
21
21
  Skyed::Settings.save
@@ -44,13 +44,13 @@ module Skyed
44
44
  provisioning_path = File.join(Skyed::Settings.repo, '.provisioning')
45
45
  tasks_path = File.join(provisioning_path, 'tasks')
46
46
  aws_path = File.join(provisioning_path, 'templates', 'aws')
47
- create_template(Skyed::Settings.repo, 'Vagrantfile',
48
- 'templates/Vagrantfile.erb')
49
- create_template(tasks_path, 'ow-on-premise.yml',
50
- 'templates/ow-on-premise.yml.erb')
51
- create_template(aws_path, 'config.j2', 'templates/config.j2.erb')
52
- create_template(aws_path, 'credentials.j2',
53
- 'templates/credentials.j2.erb')
47
+ Skyed::Utils.create_template(Skyed::Settings.repo, 'Vagrantfile',
48
+ 'Vagrantfile.erb')
49
+ Skyed::Utils.create_template(tasks_path, 'ow-on-premise.yml',
50
+ 'ow-on-premise.yml.erb')
51
+ Skyed::Utils.create_template(aws_path, 'config.j2', 'config.j2.erb')
52
+ Skyed::Utils.create_template(aws_path, 'credentials.j2',
53
+ 'credentials.j2.erb')
54
54
  end
55
55
 
56
56
  def vagrant
@@ -61,19 +61,6 @@ module Skyed
61
61
  create_vagrant_files
62
62
  end
63
63
 
64
- def create_template(base, subpath, template_file)
65
- b = binding
66
- folders = subpath.split('/')
67
- template = ERB.new(
68
- File.read(
69
- File.join(
70
- File.dirname(File.dirname(File.dirname(__FILE__))),
71
- template_file)))
72
- File.open(File.join(base, folders), 'w') do |f|
73
- f.write(template.result b)
74
- end
75
- end
76
-
77
64
  def create_directory(base, subpath)
78
65
  folders = subpath.split('/')
79
66
  new_dir = File.join(base, folders)
@@ -129,9 +116,9 @@ module Skyed
129
116
  ask(question + remotes_names.to_s)
130
117
  end
131
118
 
132
- def opsworks_git_key
119
+ def opsworks_git_key(options)
133
120
  question = 'Which ssh key should be used for the git repository? '
134
- Skyed::Settings.opsworks_git_key = ask(question)
121
+ Skyed::Settings.opsworks_git_key = options[:repo_key] || ask(question)
135
122
  end
136
123
 
137
124
  def credentials(
@@ -149,21 +136,19 @@ module Skyed
149
136
  Pathname.new(repo.repo.path).dirname
150
137
  end
151
138
 
152
- def get_repo(path = '.', ask = true)
139
+ def get_repo(path = '.')
153
140
  question = 'Which is your CM repository? '
141
+ force_ask = path == '.'
154
142
  repo = repo?(path)
155
- if !repo
156
- say("ERROR: #{path} is not a repository")
157
- repo = get_repo(ask(question), false)
158
- elsif ask
159
- repo = get_repo(
160
- ask(question) { |q| q.default = repo_path(repo).to_s }, false)
161
- end
143
+ say("ERROR: #{path} is not a repository") unless repo
144
+ repo = get_repo(
145
+ ask(question) { |q| q.default = repo_path(repo).to_s }
146
+ ) if !repo || force_ask
162
147
  repo
163
148
  end
164
149
 
165
150
  def repo?(path)
166
- Git.open(path)
151
+ ::Git.open(path)
167
152
  rescue ArgumentError
168
153
  return false
169
154
  end
@@ -0,0 +1,22 @@
1
+ module Skyed
2
+ # This module encapsulates all the list command steps.
3
+ module List
4
+ class << self
5
+ def execute(global_options, options, args)
6
+ db_snapshots(global_options, options, args[1..args.length])
7
+ end
8
+
9
+ def db_snapshots(_global_options, options, args)
10
+ Skyed::Init.credentials if Skyed::Settings.empty?
11
+ snapshots = Skyed::AWS::RDS.list_snapshots(
12
+ options,
13
+ args)
14
+ snapshots.each do |snapshot|
15
+ msg = "#{snapshot.db_snapshot_identifier}"
16
+ msg += " #{snapshot.db_instance_identifier} #{snapshot.snapshot_type}"
17
+ puts msg
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -3,10 +3,10 @@ module Skyed
3
3
  module Run
4
4
  class << self
5
5
  def execute(global_options, options, args)
6
+ recipes = check_recipes_exist(options, args)
6
7
  if !options.nil? && options.key?(:stack) && !options[:stack].nil?
7
- run(global_options, options, args)
8
+ run(global_options, options, recipes)
8
9
  else
9
- recipes = check_recipes_exist(args)
10
10
  check_vagrant
11
11
  execute_recipes(Skyed::AWS::OpsWorks.login, recipes)
12
12
  end
@@ -67,8 +67,12 @@ module Skyed
67
67
  fail msg unless output =~ /running/
68
68
  end
69
69
 
70
- def check_recipes_exist(args)
71
- recipes = args.select { |recipe| recipe_in_cookbook(recipe) }
70
+ def check_recipes_exist(options, args)
71
+ if !options.nil? && options.key?(:stack) && !options[:stack].nil?
72
+ recipes = args.select { |recipe| recipe_in_remote(options, recipe) }
73
+ else
74
+ recipes = args.select { |recipe| recipe_in_cookbook(recipe) }
75
+ end
72
76
  msg = "Couldn't found #{args - recipes} recipes in repository"
73
77
  fail msg unless recipes == args
74
78
  recipes
@@ -87,16 +91,23 @@ module Skyed
87
91
  fail 'Deployment failed' unless status[0] == 'successful'
88
92
  end
89
93
 
90
- def recipe_in_cookbook(recipe)
94
+ def recipe_in_cookbook(recipe, path = nil)
95
+ path ||= Skyed::Settings.repo
91
96
  cookbook, recipe = recipe.split('::')
92
97
  recipe = 'default' if recipe.nil?
93
98
  File.exist?(
94
99
  File.join(
95
- Skyed::Settings.repo,
100
+ path,
96
101
  cookbook,
97
102
  'recipes',
98
103
  "#{recipe}.rb"))
99
104
  end
105
+
106
+ def recipe_in_remote(options, recipe)
107
+ clone = Skyed::Git.clone_stack_remote(
108
+ Skyed::AWS::OpsWorks.stack(options[:stack], login))
109
+ recipe_in_cookbook(recipe, clone)
110
+ end
100
111
  end
101
112
  end
102
113
  end
@@ -6,6 +6,10 @@ module Skyed
6
6
  attr_accessor :_settings
7
7
 
8
8
  class << self
9
+ def current_stack?(stack_id)
10
+ !Skyed::Settings.empty? && Skyed::Settings.stack_id == stack_id
11
+ end
12
+
9
13
  def load!(filename = CONFIG_FILE)
10
14
  newsets = {}
11
15
  newsets = YAML.load_file(filename) if File.file? filename
@@ -1,7 +1,27 @@
1
+ require 'erb'
2
+
1
3
  module Skyed
2
4
  # This module encapsulates some generic utility functions.
3
5
  module Utils
4
6
  class << self
7
+ def export_credentials
8
+ ENV['AWS_ACCESS_KEY'] = Skyed::Settings.access_key
9
+ ENV['AWS_SECRET_KEY'] = Skyed::Settings.secret_key
10
+ end
11
+
12
+ def create_template(base, subpath, template_file)
13
+ b = binding
14
+ folders = subpath.split('/')
15
+ template = ERB.new(
16
+ File.read(File.join(
17
+ File.dirname(File.dirname(File.dirname(__FILE__))),
18
+ 'templates',
19
+ template_file)))
20
+ File.open(File.join(base, folders), 'w') do |f|
21
+ f.write(template.result b)
22
+ end
23
+ end
24
+
5
25
  def read_key_file(key_file)
6
26
  File.open(key_file, 'rb').read
7
27
  end
@@ -0,0 +1,7 @@
1
+ #!/bin/sh
2
+ if [ -z "$PKEY" ]; then
3
+ # if PKEY is not specified, run ssh using default keyfile
4
+ ssh "$@"
5
+ else
6
+ ssh -i "$PKEY" "$@"
7
+ fi
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skyed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignasi Fosch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-21 00:00:00.000000000 Z
11
+ date: 2015-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git
@@ -77,9 +77,12 @@ files:
77
77
  - lib/skyed.rb
78
78
  - lib/skyed/aws.rb
79
79
  - lib/skyed/commands.rb
80
+ - lib/skyed/create.rb
80
81
  - lib/skyed/deploy.rb
81
82
  - lib/skyed/destroy.rb
83
+ - lib/skyed/git.rb
82
84
  - lib/skyed/init.rb
85
+ - lib/skyed/list.rb
83
86
  - lib/skyed/run.rb
84
87
  - lib/skyed/settings.rb
85
88
  - lib/skyed/utils.rb
@@ -87,6 +90,7 @@ files:
87
90
  - templates/config.j2.erb
88
91
  - templates/credentials.j2.erb
89
92
  - templates/ow-on-premise.yml.erb
93
+ - templates/ssh-git.erb
90
94
  homepage: http://rubygems.org/gems/skyed
91
95
  licenses:
92
96
  - MIT