Sha256: 88c67dca40303c89c6a4570eeb59d8ee0ec503472132d7a7052b2d2562323cfb

Contents?: true

Size: 1.57 KB

Versions: 15

Compression:

Stored size: 1.57 KB

Contents

module Kontena::Cli::Nodes
  class SshCommand < Kontena::Command
    include Kontena::Cli::Common
    include Kontena::Cli::GridOptions

    parameter "NODE_ID", "Node id"
    parameter "[COMMANDS] ...", "Run command on host"

    option ["-i", "--identity-file"], "IDENTITY_FILE", "Path to ssh private key"
    option ["-u", "--user"], "USER", "Login as a user", default: "core"
    option "--private-ip", :flag, "Connect to node's private IP address"
    option "--internal-ip", :flag, "Connect to node's internal IP address (requires VPN connection)"

    requires_current_master
    requires_current_grid

    def execute
      node = client.get("nodes/#{current_grid}/#{node_id}")

      provider = Array(node["labels"]).find{ |l| l.start_with?('provider=')}.to_s.split('=').last

      commands_list.insert('--') unless commands_list.empty?

      if provider == 'vagrant'
        unless Kontena::PluginManager.instance.plugins.find { |plugin| plugin.name == 'kontena-plugin-vagrant' }
          exit_with_error 'You need to install vagrant plugin to ssh into this node. Use kontena plugin install vagrant'
        end
        cmd = ['vagrant', 'node', 'ssh', node['name']] + commands_list
        Kontena.run(cmd)
      else
        cmd = ['ssh']
        cmd += ["-i", identity_file] if identity_file
        if internal_ip?
          ip = "10.81.0.#{node['node_number']}"
        elsif private_ip?
          ip = node['private_ip']
        else
          ip = node['public_ip']
        end
        cmd << "#{user}@#{ip}"
        cmd += commands_list
        exec(*cmd)
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
kontena-cli-1.1.6 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.5 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.5.rc3 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.5.rc2 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.5.rc1 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.4 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.3 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.2 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.2.rc2 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.2.rc1 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.1 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.1.rc1 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.0 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.0.rc2 lib/kontena/cli/nodes/ssh_command.rb
kontena-cli-1.1.0.rc1 lib/kontena/cli/nodes/ssh_command.rb