Project

General

Profile

Download (698 Bytes) Statistics
| Branch: | Tag: | Revision:

foreman_pipeline / app / lib / actions / foreman_pipeline / jenkins_instance / keyscan.rb @ be52ca64

1 424ba52f Ondrej Prazak
module Actions
2 be52ca64 Ondrej Prazak
  module ForemanPipeline
3 424ba52f Ondrej Prazak
    module JenkinsInstance
4 ac38d88a Ondrej Prazak
      class Keyscan < AbstractJenkinsInstanceAction
5
        def run
6
          output[:status] = do_keyscan(parse_jenkins_hostname)
7 b785cf3f Ondrej Prazak
          output[:command] = command
8 ac38d88a Ondrej Prazak
        end
9
10
        def do_keyscan(host)
11
          ip = Socket::getaddrinfo(host, 'www', nil, Socket::SOCK_STREAM)[0][3]
12
          status = nil
13
14
          Net::SSH.start(ip, 'root', :keys => [input.fetch(:cert_path)]) do |ssh|
15 b785cf3f Ondrej Prazak
            status = ssh_exec!(ssh, command)
16 ac38d88a Ondrej Prazak
          end
17
          status
18
        end
19 b785cf3f Ondrej Prazak
20
        def command
21
          "ssh-keyscan #{input[:host_ip]} >> #{input[:jenkins_home]}/.ssh/known_hosts"
22
        end
23 424ba52f Ondrej Prazak
      end
24
    end
25
  end
26
end