cloudstrap-azure 0.5.16.pre → 0.6.0.pre

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: 5082e2b94aef57bc209806ff26690a2b7b0d06b9140418761d44be4609d8f9bf
4
- data.tar.gz: 07da70935055e256b9d646fa4266ca7a0cda0f3399408a17a22cc96c783ebcd5
3
+ metadata.gz: 68168c24623af3d2facaeb6e71c805d65bff9db1f1140a024fdfac5b83116122
4
+ data.tar.gz: 1b7fcc5ace60f05312e7aa299d2c897aea06d220f39529f5cf2ba6ed33422de3
5
5
  SHA512:
6
- metadata.gz: 6b9a5b1dcc4c037b1fc03366006466b943efb57f5ddf9661f347a27bc63b891f71903709d12735031776866fdee1c976f2ce8ef13fce3d20fa63f281bd67737c
7
- data.tar.gz: 693fe04c68439d544b08739fdabd1046ea380a14c6a6f777b7d7a8d8d7f3b98679c027daa28d664ea6db22205b917849623c47b7ef409515b4ae29887939be65
6
+ metadata.gz: 1343e22493831dc1d971a0c0c1de9abde85351421787525ec180b3d8faeece61374e933748e6eb5146f46f1cc87993708bacd2505efba43970e21b9b126333eb
7
+ data.tar.gz: dac991af23d63ea284a7162e07054e5be64113ed7d3636b88646f3c4e7badde8ec6ff32de4ca24ddc93bc091250f46b8802df9afd5e29cd2a78ebcc917016633
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -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.5.16.pre
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