Skip to content
This repository has been archived by the owner on Apr 9, 2024. It is now read-only.

Commit

Permalink
Merge pull request #12 from kickstarter/ec2-instance-connect
Browse files Browse the repository at this point in the history
EC2 instance connect pt 2
  • Loading branch information
amancevice authored Aug 1, 2022
2 parents 9d8b587 + e771a65 commit 9a3fc8a
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 10 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.gem
.ruby-version
2 changes: 1 addition & 1 deletion capistrano-hivequeen.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Gem::Specification.new do |s|
## that are needed for an end user to actually USE your code.
s.add_dependency('aws-sdk-ec2', '~> 1.0')
s.add_dependency('aws-sdk-ec2instanceconnect', '~> 1.0')
s.add_dependency('capistrano', '>= 2.11.0')
s.add_dependency('capistrano', '~> 2.11')
s.add_dependency('activesupport', '>= 3.0.0')
s.add_dependency('json')
s.add_dependency('egads', '>= 3.0.0')
Expand Down
21 changes: 13 additions & 8 deletions lib/capistrano/hivequeen/ec2_instance_connect.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,21 @@ def self.ec2_instance_connect_client
end

def self.ec2_instance_connect(*private_dns)
# EC2 Instance Connect
# Get SSH public key contents
ssh_public_key = File.read(File.expand_path('~/.ssh/ksr_ed25519.pub'))
ec2_params = {
filters: [{
name: 'network-interface.private-dns-name',
values: private_dns
}]
}

# Get SSH bastion instance(s) from Name tag
ssh_params = { filters: [{ name: 'tag:Name', values: %w[ssh-bastion] }] }
logger.trace("ec2:DescribeInstances #{ssh_params.to_json}")
bastions = ec2_client.describe_instances(**ssh_params).reservations.map(&:instances).flatten

# Get EC2 instances from private DNS name
ec2_params = { filters: [{ name: 'network-interface.private-dns-name', values: private_dns }] }
logger.trace("ec2:DescribeInstances #{ec2_params.to_json}")
instances = ec2_client.describe_instances(**ec2_params).reservations.map(&:instances).flatten
threads = instances.map do |instance|

# Collect EC2 Instance Connect request threads
threads = (bastions + instances).map do |instance|
Thread.new do
ec2ic_params = {
availability_zone: instance.placement.availability_zone,
Expand All @@ -31,6 +35,7 @@ def self.ec2_instance_connect(*private_dns)
end
end

# Execute EC2 Instance Connect request threads
threads.each(&:join)
end
end
2 changes: 1 addition & 1 deletion lib/capistrano/hivequeen/version.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
class HiveQueen
class Version
@@version = '7.7.0'
@@version = '7.7.1'

def self.to_s
@@version
Expand Down

0 comments on commit 9a3fc8a

Please sign in to comment.