Class: Kontena::Callbacks::AuthenticateAfterDeploy
- Inherits:
-
Kontena::Callback
- Object
- Kontena::Callback
- Kontena::Callbacks::AuthenticateAfterDeploy
- Defined in:
- lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb
Instance Attribute Summary
Attributes inherited from Kontena::Callback
Instance Method Summary collapse
Methods inherited from Kontena::Callback
callbacks, #initialize, matches_commands, run_callbacks
Constructor Details
This class inherits a constructor from Kontena::Callback
Instance Method Details
#after ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb', line 7 def after extend Kontena::Cli::Common require 'securerandom' extend Kontena::Cli::Common logger.debug { "Command result: #{command.result.inspect}" } logger.debug { "Command exit code: #{command.exit_code.inspect}" } return unless command.exit_code == 0 return unless command.result.kind_of?(Hash) return unless command.result.has_key?(:public_ip) return unless command.result.has_key?(:code) return unless command.result.has_key?(:name) # If plugins generate self-signed cert, most of the upcoming callbacks will # fail without this. This can be made bit more clever once all the plugins # return the generated self-signed certificate. ENV['SSL_IGNORE_ERRORS'] = 'true' # In case there already is a server with the same name add random characters to name if config.find_server(command.result[:name]) command.result[:name] = "#{command.result[:name]}-#{SecureRandom.hex(2)}" end new_master = Kontena::Cli::Config::Server.new( url: "https://#{command.result[:public_ip]}", name: command.result[:name] ) retried = false # Figure out if HTTPS works, if not, try HTTP begin logger.debug { "Trying to request / from #{new_master.url}" } client = Kontena::Client.new(new_master.url, nil, ignore_ssl_errors: true) client.get('/') rescue => ex logger.debug { "HTTPS test failed: #{ex.class.name} #{ex.}" } unless retried new_master.url = "http://#{command.result[:public_ip]}" retried = true retry end return end require 'shellwords' cmd = [ 'master', 'login', '--no-login-info' ,'--skip-grid-auto-select', '--verbose', '--name', command.result[:name], '--code', command.result[:code], new_master.url ] Retriable.retriable do logger.debug { "Running: #{cmd}" } Kontena.run!(cmd) end end |