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 |