skyed 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
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