cloudstrap-azure 0.5.16.pre → 0.6.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/cloudstrap-azure.gemspec +1 -0
- data/command/internal/cloudstrap-azure.deploy +31 -12
- metadata +21 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68168c24623af3d2facaeb6e71c805d65bff9db1f1140a024fdfac5b83116122
|
4
|
+
data.tar.gz: 1b7fcc5ace60f05312e7aa299d2c897aea06d220f39529f5cf2ba6ed33422de3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1343e22493831dc1d971a0c0c1de9abde85351421787525ec180b3d8faeece61374e933748e6eb5146f46f1cc87993708bacd2505efba43970e21b9b126333eb
|
7
|
+
data.tar.gz: dac991af23d63ea284a7162e07054e5be64113ed7d3636b88646f3c4e7badde8ec6ff32de4ca24ddc93bc091250f46b8802df9afd5e29cd2a78ebcc917016633
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/cloudstrap-azure.gemspec
CHANGED
@@ -31,6 +31,7 @@ Gem::Specification.new do |gem|
|
|
31
31
|
gem.add_runtime_dependency 'chronic', '~> 0.10', '>= 0.10.0'
|
32
32
|
gem.add_runtime_dependency 'concurrent-ruby', '~> 1.0', '>= 1.0.5'
|
33
33
|
gem.add_runtime_dependency 'facets', '~> 3.1', '>= 3.1.0'
|
34
|
+
gem.add_runtime_dependency 'net-scp', '~> 1.2', '>= 1.2.0'
|
34
35
|
gem.add_runtime_dependency 'pastel', '~> 0.7', '>= 0.7.0'
|
35
36
|
gem.add_runtime_dependency 'sshkey', '~> 1.9', '>= 1.9.0'
|
36
37
|
gem.add_runtime_dependency 'tty-prompt', '~> 0.16', '>= 0.16.0'
|
@@ -11,8 +11,9 @@ require 'azure_mgmt_container_service' # MIT License
|
|
11
11
|
require 'azure_mgmt_network' # MIT License
|
12
12
|
require 'azure_mgmt_resources' # MIT License
|
13
13
|
require 'chamber' # MIT License
|
14
|
-
require 'facets/string/snakecase' # BSD-2-Clause License
|
15
14
|
require 'concurrent' # MIT License
|
15
|
+
require 'facets/string/snakecase' # BSD-2-Clause License
|
16
|
+
require 'net/scp' # MIT License
|
16
17
|
require 'pastel' # MIT License
|
17
18
|
require 'sshkey' # MIT License
|
18
19
|
require 'tty-prompt' # MIT License
|
@@ -41,21 +42,29 @@ ARBITRARY_DELAY = (Chamber.env[:arbitrary_delay] || 10).to_i
|
|
41
42
|
ENABLE_SWAP_ACCOUNTING = %q{sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT=\"console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300\"/GRUB_CMDLINE_LINUX_DEFAULT=\"console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300 swapaccount=1\"/g' /etc/default/grub.d/50-cloudimg-settings.cfg}
|
42
43
|
UPDATE_GRUB = %q{sudo update-grub}
|
43
44
|
|
45
|
+
SSH_CONFIG = {
|
46
|
+
encryption: 'aes256-ctr',
|
47
|
+
hmac: 'hmac-sha2-512',
|
48
|
+
kex: 'ecdh-sha2-nistp521',
|
49
|
+
key_data: Chamber.env.ssh_private_key,
|
50
|
+
keys: [],
|
51
|
+
}
|
52
|
+
|
44
53
|
####################
|
45
54
|
# Helper Functions #
|
46
55
|
####################
|
47
56
|
|
48
|
-
Nothing = ->(*) { nil }
|
49
|
-
StateEnabled = ->(object) { 'Enabled' == object.state }
|
50
|
-
FirstIfOnly = ->(list) { list.first if (1 == list.size) }
|
51
|
-
Properties = ->(*properties) { ->(object) { properties.map(&Property).map { |ƒ| ƒ.(object) } } }
|
52
|
-
SelectFromMenu = ->(title, choices) { TTY::Prompt.new.select(title, filter: true) { |menu| choices.each { |choice| menu.choice(*choice) }}}
|
53
|
-
Property = ->(property, object) { object.public_send(property) if object.respond_to?(property) }.curry
|
54
|
-
RespondsTo = ->(method, object) { object.respond_to?(method) }.curry
|
55
|
-
SendTo = ->(object, *args) { object.public_send(*args) }.curry(2)
|
56
|
-
Bind = ->(name, value, object) { object.tap { SendTo.(object, "#{name}=", value) } }.curry
|
57
|
-
Bindable = ->(name, object) { RespondsTo.("#{name}=", object) }.curry
|
58
|
-
BindConstant = ->(namespace, name, value) { namespace.const_set name, value }.curry
|
57
|
+
Nothing = ->(*) { nil } # DONE - Nothing
|
58
|
+
StateEnabled = ->(object) { 'Enabled' == object.state } # HACK
|
59
|
+
FirstIfOnly = ->(list) { list.first if (1 == list.size) } # DONE - IfOnly
|
60
|
+
Properties = ->(*properties) { ->(object) { properties.map(&Property).map { |ƒ| ƒ.(object) } } } # HACK
|
61
|
+
SelectFromMenu = ->(title, choices) { TTY::Prompt.new.select(title, filter: true) { |menu| choices.each { |choice| menu.choice(*choice) }}} # DONE - SelectOne
|
62
|
+
Property = ->(property, object) { object.public_send(property) if object.respond_to?(property) }.curry # HACK
|
63
|
+
RespondsTo = ->(method, object) { object.respond_to?(method) }.curry # DONE - RespondTo
|
64
|
+
SendTo = ->(object, *args) { object.public_send(*args) }.curry(2) # DONE - SendTo
|
65
|
+
Bind = ->(name, value, object) { object.tap { SendTo.(object, "#{name}=", value) } }.curry # TODO
|
66
|
+
Bindable = ->(name, object) { RespondsTo.("#{name}=", object) }.curry # TODO
|
67
|
+
BindConstant = ->(namespace, name, value) { namespace.const_set name, value }.curry # DONE - SetConstantOf
|
59
68
|
BindConstants = ->(namespace, interfaces) { interfaces.map { |constant, function| BindConstant.(namespace, constant, function) } }.curry
|
60
69
|
Itself = ->(object) { object.itself }
|
61
70
|
If = ->(predicate, consequent, alternative = Nothing) {
|
@@ -496,6 +505,14 @@ AssociatePublicIP = ->(resource_group, network_interface, public_ip_address) {
|
|
496
505
|
network_interface.tap {
|
497
506
|
network_interface.ip_configurations[0].public_ipaddress = public_ip_address})}}
|
498
507
|
|
508
|
+
DownloadKubeConfig = ->(container_service, filename) {
|
509
|
+
WhileSpinning.('Download .kube/config') do
|
510
|
+
Net::SCP.start(container_service.master_profile.fqdn, Chamber.env.admin_username, SSH_CONFIG) do |session|
|
511
|
+
session.download! "/home/#{Chamber.env.admin_username}/.kube/config", filename
|
512
|
+
end
|
513
|
+
end
|
514
|
+
}
|
515
|
+
|
499
516
|
Purge = -> {
|
500
517
|
if resource_group = FindResourceGroup.(Chamber.env.identifier)
|
501
518
|
WhileSpinning.('Purge Resources') {
|
@@ -554,6 +571,8 @@ KubernetesAgents
|
|
554
571
|
.each(&EnableSwapAccounting.(resource_group))
|
555
572
|
.each(&RebootOnce.(resource_group))
|
556
573
|
|
574
|
+
DownloadKubeConfig.(container_service, File.join(Dir.pwd, 'kubeconfig.yml'))
|
575
|
+
|
557
576
|
def api(*args)
|
558
577
|
AzureAPI.call(*args)
|
559
578
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudstrap-azure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Olstrom
|
@@ -262,6 +262,26 @@ dependencies:
|
|
262
262
|
- - ">="
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: 3.1.0
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: net-scp
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - "~>"
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '1.2'
|
272
|
+
- - ">="
|
273
|
+
- !ruby/object:Gem::Version
|
274
|
+
version: 1.2.0
|
275
|
+
type: :runtime
|
276
|
+
prerelease: false
|
277
|
+
version_requirements: !ruby/object:Gem::Requirement
|
278
|
+
requirements:
|
279
|
+
- - "~>"
|
280
|
+
- !ruby/object:Gem::Version
|
281
|
+
version: '1.2'
|
282
|
+
- - ">="
|
283
|
+
- !ruby/object:Gem::Version
|
284
|
+
version: 1.2.0
|
265
285
|
- !ruby/object:Gem::Dependency
|
266
286
|
name: pastel
|
267
287
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
Binary file
|