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 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