capistrano-hivequeen 7.6.0 → 7.7.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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72b660b02784362a5c9a2f8a96a3355a3fd18fb399b57d138942488f89b16b10
|
4
|
+
data.tar.gz: da9503dc5137e661476abba23820112d59bd4033d0775dbd015e449a0ee889f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96e6bb88e860b84984b32501ac7be9135364b4ad16a4a644540e8b3cb9f30e655f20f829b5bdcf085e4fc8ba4ddc54d18cc1f36a9a59bef356de48af5f37080a
|
7
|
+
data.tar.gz: ca952a870f3db6dafbc36701dcb6708a2902d611fd1abf57783be5607bd3fc0b62523f81ebfd2e7c8f19b45741a549ab7704d79b548c56220185392069bcb6ed
|
@@ -38,6 +38,8 @@ Gem::Specification.new do |s|
|
|
38
38
|
|
39
39
|
## List your runtime dependencies here. Runtime dependencies are those
|
40
40
|
## that are needed for an end user to actually USE your code.
|
41
|
+
s.add_dependency('aws-sdk-ec2', '~> 1.0')
|
42
|
+
s.add_dependency('aws-sdk-ec2instanceconnect', '~> 1.0')
|
41
43
|
s.add_dependency('capistrano', '>= 2.11.0')
|
42
44
|
s.add_dependency('activesupport', '>= 3.0.0')
|
43
45
|
s.add_dependency('json')
|
@@ -97,14 +97,18 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
97
97
|
command_format = "ssh -t -A -l %s %s"
|
98
98
|
env['roles'].keys.each do |role_name|
|
99
99
|
task role_name do
|
100
|
-
|
100
|
+
server = roles[role_name.to_sym].servers.sample
|
101
|
+
HiveQueen.ec2_instance_connect(server.host)
|
102
|
+
cmd = command_format % [user, server]
|
101
103
|
puts "Executing #{cmd}"
|
102
104
|
exec cmd
|
103
105
|
end
|
104
106
|
end
|
105
107
|
|
106
108
|
task :default do
|
107
|
-
|
109
|
+
server = roles.values.sample.servers.sample
|
110
|
+
HiveQueen.ec2_instance_connect(server.host)
|
111
|
+
cmd = command_format % [user, server]
|
108
112
|
puts "Executing #{cmd}"
|
109
113
|
exec cmd
|
110
114
|
end
|
@@ -114,14 +118,18 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
114
118
|
command_format = "ssh -t -A -l %s %s 'source /etc/profile; cd /apps/#{HiveQueen.project}/current && bundle exec rails console'"
|
115
119
|
env['roles'].keys.each do |role_name|
|
116
120
|
task role_name do
|
121
|
+
server = roles[role_name.to_sym].servers.sample
|
122
|
+
HiveQueen.ec2_instance_connect(server.host)
|
117
123
|
puts "Opening console"
|
118
|
-
exec command_format % [user,
|
124
|
+
exec command_format % [user, server]
|
119
125
|
end
|
120
126
|
end
|
121
127
|
|
122
128
|
task :default do
|
129
|
+
server = roles.values.sample.servers.sample
|
130
|
+
HiveQueen.ec2_instance_connect(server.host)
|
123
131
|
puts "Opening console"
|
124
|
-
exec command_format % [user,
|
132
|
+
exec command_format % [user, server]
|
125
133
|
end
|
126
134
|
end
|
127
135
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class HiveQueen
|
2
|
+
def self.ec2_client
|
3
|
+
@ec2_client ||= Aws::EC2::Client.new
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.ec2_instance_connect_client
|
7
|
+
@ec2_instance_connect_client ||= Aws::EC2InstanceConnect::Client.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.ec2_instance_connect(*private_dns)
|
11
|
+
# EC2 Instance Connect
|
12
|
+
ssh_public_key = File.read(File.expand_path('~/.ssh/ksr_ed25519.pub'))
|
13
|
+
ec2_params = {
|
14
|
+
filters: [{
|
15
|
+
name: 'network-interface.private-dns-name',
|
16
|
+
values: private_dns
|
17
|
+
}]
|
18
|
+
}
|
19
|
+
logger.trace("ec2:DescribeInstances #{ec2_params.to_json}")
|
20
|
+
instances = ec2_client.describe_instances(**ec2_params).reservations.map(&:instances).flatten
|
21
|
+
threads = instances.map do |instance|
|
22
|
+
Thread.new do
|
23
|
+
ec2ic_params = {
|
24
|
+
availability_zone: instance.placement.availability_zone,
|
25
|
+
instance_id: instance.instance_id,
|
26
|
+
instance_os_user: 'ksr',
|
27
|
+
ssh_public_key: ssh_public_key,
|
28
|
+
}
|
29
|
+
logger.trace("ec2-instance-connect:SendSSHPublicKey #{ec2ic_params.to_json}")
|
30
|
+
ec2_instance_connect_client.send_ssh_public_key(**ec2ic_params)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
threads.each(&:join)
|
35
|
+
end
|
36
|
+
end
|
data/lib/capistrano/hivequeen.rb
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
# HTTP Client for Hive Queen environment configuration
|
2
|
+
require 'base64'
|
3
|
+
require 'fileutils'
|
2
4
|
require 'json'
|
5
|
+
|
3
6
|
require 'active_support'
|
4
7
|
require 'active_support/core_ext'
|
5
|
-
require '
|
8
|
+
require 'aws-sdk-ec2'
|
9
|
+
require 'aws-sdk-ec2instanceconnect'
|
6
10
|
require 'excon'
|
7
|
-
|
11
|
+
|
8
12
|
require 'capistrano/hivequeen/version'
|
9
13
|
require 'capistrano/hivequeen/multiio'
|
14
|
+
require 'capistrano/hivequeen/ec2_instance_connect'
|
10
15
|
|
11
16
|
# Special cases:
|
12
17
|
# - environment not found
|
@@ -135,4 +140,3 @@ class HiveQueen
|
|
135
140
|
end
|
136
141
|
|
137
142
|
require "capistrano/hivequeen/capistrano_configuration"
|
138
|
-
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-hivequeen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Suggs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aws-sdk-ec2
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: aws-sdk-ec2instanceconnect
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: capistrano
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,6 +121,7 @@ files:
|
|
93
121
|
- lib/capistrano/hivequeen.rb
|
94
122
|
- lib/capistrano/hivequeen/capistrano_configuration.rb
|
95
123
|
- lib/capistrano/hivequeen/deploy.rb
|
124
|
+
- lib/capistrano/hivequeen/ec2_instance_connect.rb
|
96
125
|
- lib/capistrano/hivequeen/multiio.rb
|
97
126
|
- lib/capistrano/hivequeen/setup.rb
|
98
127
|
- lib/capistrano/hivequeen/version.rb
|
@@ -116,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
145
|
- !ruby/object:Gem::Version
|
117
146
|
version: '0'
|
118
147
|
requirements: []
|
119
|
-
rubygems_version: 3.
|
148
|
+
rubygems_version: 3.3.7
|
120
149
|
signing_key:
|
121
150
|
specification_version: 2
|
122
151
|
summary: Capistrano extensions for interacting with HiveQueen
|