ecl 1.0.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9dbfb94853aaa48d41c193a65a592b78f3e19fff
4
- data.tar.gz: f4c864a0e4d24fe98f31f3b8d55e8afb7c499753
3
+ metadata.gz: bd0af5acd07853220020290c73b35f7bbc773a1b
4
+ data.tar.gz: 5a4dbfbf94ee66e3f1902eb966b348921fa5c459
5
5
  SHA512:
6
- metadata.gz: 9bf087e07c4040d1e73343356ea050b431cdb04552c07b16d8a71b3a06dca668356868d3346cc90d5c70dbffea1a124ebf7fa16aea1fe013e7803157c2afe198
7
- data.tar.gz: 8295911d2e74b3256364a3d5ed0cff8ff61052f2e4e9c439ca764ea67c104523e810cbd52f24039b5620eceb6c3f861865e8aa0e65669c60b1f32ba1e5bfe16b
6
+ metadata.gz: 924ffb85cc063b48ae5bc179fe4f3e41fe56dc252ca998e85aa8a52c4c2ed03384002b68112c9dbe1cc2dd8e20ac265f9eecab5b24e3a8022258f8b4707d13b0
7
+ data.tar.gz: 547ba1905a506123dc861c61d93ebbd6adff9251878fd5e0776db61bde472313fac60cffeb3a7d11aa27bdb7c18936ed8eb9a5e1d40a2b6e836011a195d2e6c6
data/README.md CHANGED
@@ -5,15 +5,109 @@ Simple ssh helper for Amazon EC2
5
5
  ## Requirements
6
6
 
7
7
  tmux
8
+ ~/.aws/credentials (created by AWS CLI)
8
9
 
9
10
  ## Installation
10
11
 
11
- $ gem install eclair2
12
+ $ gem install ecl
12
13
 
13
14
  ## Usage
14
15
 
15
16
  $ ecl
16
17
 
18
+ First execution will create ~/.eclrc file. Edit this file and run again.
19
+
20
+ ## Configurations
21
+
22
+ ### aws_region
23
+
24
+ AWS region to connect.
25
+
26
+ config.aws_region = "ap-northeast-1"
27
+
28
+ ### columns
29
+
30
+ Max number of columns displayed in eclair.
31
+
32
+ $ config.columns = 4
33
+
34
+ ### ssh_username
35
+
36
+ Function to find username from image.
37
+ Returns username of given image.
38
+ Uses image data from [EC2::Client#describe_images](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html#describe_images-instance_method) API call
39
+
40
+ config.ssh_username = lambda do |image|
41
+ case image.name
42
+ when /ubuntu/
43
+ "ubuntu"
44
+ else
45
+ "ec2-user"
46
+ end
47
+ end
48
+
49
+ ### group_by
50
+
51
+ Function to find group name from instance.
52
+ Returns group name from instance data.
53
+ Uses instance data from [EC2::Client#describe_instances](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html#describe_instances-instance_method) API call.
54
+
55
+ Example)
56
+ Group by security groups.
57
+
58
+ config.group_by = lambda do |instance|
59
+ if instance.security_groups.first
60
+ instance.security_groups.first.group_name
61
+ else
62
+ "no_group"
63
+ end
64
+ end
65
+
66
+ Group by instance name.
67
+
68
+ config.group_by = lambda do |instance|
69
+ nametag = instance.tags.find{|t| t.key == "Name"}
70
+ return "Noname" unless nametag
71
+ case nametag.value
72
+ when /^production/
73
+ "production servers"
74
+ when /^test/
75
+ "test servers"
76
+ end
77
+ end
78
+
79
+ Do not group instances.
80
+
81
+ config.group_by = nil
82
+
83
+
84
+ ### ssh_ports
85
+ Port numbers to try ssh.
86
+
87
+ config.ssh_ports = [1234, 22]
88
+
89
+
90
+ ### ssh_options
91
+ Extra options passed to ssh.
92
+
93
+ config.ssh_options = "-o ConnectTimeout=1 -o StrictHostKeyChecking=no"
94
+
95
+ ### ssh_hostname
96
+ Hostname to use in ssh.
97
+ Choose from :public_dns_name, :public_ip_address, :private_dns_name, :private_ip_address
98
+
99
+ config.ssh_hostname = :public_ip_address
100
+
101
+
102
+ ### ssh_keys
103
+ Hash of EC2 keypair name => key_path in local.
104
+ If your key has been already registered in ssh-agent, you don't have to configure this.
105
+
106
+ config.ssh_keys = {
107
+ "keypair1" => "/path/to/key1",
108
+ "keypair2" => "/path/to/key2",
109
+ }
110
+
17
111
  ## License
18
112
 
19
113
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/lib/eclair/config.rb CHANGED
@@ -21,6 +21,7 @@ module Eclair
21
21
  "ec2-user"
22
22
  end
23
23
  end
24
+ @ssh_keys = {}
24
25
  @ssh_hostname = :public_ip_address
25
26
  @ssh_ports = [22].freeze
26
27
  @ssh_options = "-o ConnectTimeout=1 -o StrictHostKeyChecking=no".freeze
@@ -71,9 +71,17 @@ module Eclair
71
71
  config.ssh_username.call(image(force: true))
72
72
  end
73
73
 
74
+ def key_cmd
75
+ if config.ssh_keys[key_name]
76
+ "-i #{config.ssh_keys[key_name]}"
77
+ else
78
+ ""
79
+ end
80
+ end
81
+
74
82
  def ssh_cmd
75
83
  cmd = config.ssh_ports.map{ |port|
76
- "ssh #{config.ssh_options} -p#{port} #{username}@#{hostname}"
84
+ "ssh #{config.ssh_options} -p#{port} #{key_cmd} #{username}@#{hostname}"
77
85
  }.join(" || ")
78
86
 
79
87
  "echo Attaching to #{name}: #{username}@#{hostname} && (#{cmd})"
@@ -1,3 +1,3 @@
1
1
  module Eclair
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -1,13 +1,13 @@
1
1
  Eclair.configure do |config|
2
- # aws_region - region to connect aws.
2
+ # aws_region - AWS region to connect.
3
3
  # This overrides AWS_REGION environment variable, so you can comment out this line if you set this in environment variable.
4
4
  config.aws_region = "ap-northeast-1"
5
5
 
6
- # columns - Number of columns in eclair.
6
+ # columns - Max number of columns displayed in eclair.
7
7
  config.columns = 4
8
8
 
9
9
  # ssh_username - Function to find username from image
10
- # You can access response data extracted from EC2::Client#describe_images API call
10
+ # You can use image data from EC2::Client#describe_images API call
11
11
  # https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html#describe_images-instance_method
12
12
  config.ssh_username = lambda do |image|
13
13
  case image.name
@@ -18,10 +18,15 @@ Eclair.configure do |config|
18
18
  end
19
19
  end
20
20
 
21
- # group_by - Function to determine group from instance
21
+ # ssh_keys - Hash of key_name => key_path in local.
22
+ # If your key has been already registered in ssh-agent, you don't have to configure this.
23
+ config.ssh_keys = {
24
+ }
25
+
26
+ # group_by - Function to find group name from instance.
22
27
  # Make a function that returns group name from instance data
23
- # You can access response data extracted from EC2::Client#describe_images API call
24
- # https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html#describe_images-instance_method
28
+ # You can access response data extracted from EC2::Client#describe_instances API call
29
+ # https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html#describe_instances-instance_method
25
30
 
26
31
  # If you want to group instances by security group, uncomment example below. (default option)
27
32
  # config.group_by = lambda do |instance|
@@ -51,7 +56,7 @@ Eclair.configure do |config|
51
56
  # Eclair will try to ssh specified ports in order with ConnectTimeout below.
52
57
  config.ssh_ports = [22]
53
58
 
54
- # ssh_options - Options passed to ssh.
59
+ # ssh_options - Extra options passed to ssh.
55
60
  # ConnectTimeout should exist when you want to connect to multiple ports.
56
61
  config.ssh_options = "-o ConnectTimeout=1 -o StrictHostKeyChecking=no"
57
62
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Devsisters
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-14 00:00:00.000000000 Z
11
+ date: 2015-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler