foreman_ansible_core 2.0.2 → 2.1.0

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
- SHA1:
3
- metadata.gz: 12eefd8c004fc5fab3ba89e55d6f55a012fd5a8d
4
- data.tar.gz: 0f6c6dc40d70761dd0ae7febfbc7e30b19115d07
2
+ SHA256:
3
+ metadata.gz: 61eb151e42e1f8d309d82914c001d3ea533255702176c5be70c1d465577aff15
4
+ data.tar.gz: 9001d911f362e894629d10721fa916287a6305576c81c3b8dd22894fffe9b71d
5
5
  SHA512:
6
- metadata.gz: 283cbd551dba171fccfb7d3dd992a4e4f6c86dbd18f3cd2b1078eba877562c2af3d16457d33808cc4f90a8d4a5ffd95fd47edbff2ac09f3a6c2432e273d8d3f0
7
- data.tar.gz: d04b049df94c5e507446998d6bb68c6667b3711574276e4544a3dbb27478d0ba1ee4f060f77d317cd61e4e852db96d68d1f716455aeea18a8112bb43eae59a23
6
+ metadata.gz: 5b212d6da9a5d72dca9d83a2c14fed8e65fdd51dbeadd36578ce8a2a266510fb785469def88d0d00e018fbffab8d08069fce49628cf6426fcb1d4489b78c8705
7
+ data.tar.gz: ee82571d20690e764506ccf82a06563ddd7287c4c56dbd065fb6c635a6cb7bec9e0ebd3f9c3a4033c990ea871aa16af280f5940836b7f4a374758560703a12c8
@@ -1,28 +1,39 @@
1
- require 'foreman_tasks_core'
2
- require 'foreman_remote_execution_core'
1
+ begin
2
+ require 'foreman_tasks_core'
3
+ require 'foreman_remote_execution_core'
4
+ # rubocop:disable Lint/HandleExceptions
5
+ rescue LoadError
6
+ # These gems are not available in a proxy SCLed context
7
+ # puts 'Running Foreman Ansible Core in non-SCL context'
8
+ end
9
+ # rubocop:enable Lint/HandleExceptions
3
10
 
4
11
  # Core actions for Foreman Ansible, used by both Foreman and Foreman proxy
5
12
  # This comprises running playbooks for the moment
6
13
  module ForemanAnsibleCore
7
- extend ForemanTasksCore::SettingsLoader
8
- register_settings(:ansible, :ansible_dir => '/etc/ansible',
9
- :working_dir => nil)
10
14
  require 'foreman_ansible_core/exception'
15
+ require 'foreman_ansible_core/roles_reader'
16
+ require 'foreman_ansible_core/version'
11
17
 
12
- if ForemanTasksCore.dynflow_present?
13
- require 'foreman_tasks_core/runner'
14
- require 'foreman_ansible_core/playbook_runner'
15
- require 'foreman_ansible_core/actions'
16
- end
18
+ if defined? ForemanTasksCore
19
+ extend ForemanTasksCore::SettingsLoader
20
+ register_settings(:ansible, :ansible_dir => Dir.home,
21
+ :working_dir => nil)
17
22
 
18
- require 'foreman_remote_execution_core/actions'
19
- require 'foreman_ansible_core/remote_execution_core/ansible_runner'
20
- require 'foreman_ansible_core/remote_execution_core/settings_override'
21
- ForemanRemoteExecutionCore::Actions::RunScript.send(
22
- :prepend,
23
- ForemanAnsibleCore::RemoteExecutionCore::SettingsOverride
24
- )
23
+ if ForemanTasksCore.dynflow_present?
24
+ require 'foreman_tasks_core/runner'
25
+ require 'foreman_ansible_core/playbook_runner'
26
+ require 'foreman_ansible_core/actions'
27
+ end
28
+ end
25
29
 
26
- require 'foreman_ansible_core/roles_reader'
27
- require 'foreman_ansible_core/version'
30
+ if defined? ForemanTasksCore
31
+ require 'foreman_remote_execution_core/actions'
32
+ require 'foreman_ansible_core/remote_execution_core/ansible_runner'
33
+ require 'foreman_ansible_core/remote_execution_core/settings_override'
34
+ ForemanRemoteExecutionCore::Actions::RunScript.send(
35
+ :prepend,
36
+ ForemanAnsibleCore::RemoteExecutionCore::SettingsOverride
37
+ )
38
+ end
28
39
  end
@@ -1,6 +1,7 @@
1
1
  require 'foreman_tasks_core/runner/command_runner'
2
2
  require_relative 'command_creator'
3
3
  require 'tmpdir'
4
+ require 'net/ssh'
4
5
 
5
6
  module ForemanAnsibleCore
6
7
  # Implements ForemanTasksCore::Runner::Base interface for running
@@ -11,6 +12,9 @@ module ForemanAnsibleCore
11
12
  def initialize(inventory, playbook, options = {})
12
13
  super
13
14
  @inventory = inventory
15
+ unknown_hosts.each do |host|
16
+ add_to_known_hosts(host)
17
+ end
14
18
  @playbook = playbook
15
19
  @options = options
16
20
  initialize_dirs
@@ -94,5 +98,22 @@ module ForemanAnsibleCore
94
98
  !ansible_dir.nil? && File.exist?(ansible_dir)
95
99
  @ansible_dir = ansible_dir
96
100
  end
101
+
102
+ def unknown_hosts
103
+ JSON.parse(@inventory)['all']['hosts'].select do |host|
104
+ Net::SSH::KnownHosts.search_for(host).empty?
105
+ end
106
+ end
107
+
108
+ def add_to_known_hosts(host)
109
+ logger.warn("[foreman_ansible] - Host #{host} not found in known_hosts")
110
+ Net::SSH::Transport::Session.new(host).host_keys.each do |host_key|
111
+ Net::SSH::KnownHosts.add(host, host_key)
112
+ end
113
+ logger.warn("[foreman_ansible] - Added host key #{host} to known_hosts")
114
+ rescue StandardError => e
115
+ logger.error('[foreman_ansible] - Failed to save host key for '\
116
+ "#{host}: #{e}")
117
+ end
97
118
  end
98
119
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanAnsibleCore
2
- VERSION = '2.0.2'.freeze
2
+ VERSION = '2.1.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_ansible_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Lobato Garcia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-01 00:00:00.000000000 Z
11
+ date: 2018-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: net-ssh
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.0'
55
69
  description: |2
56
70
  Ansible integration with Foreman - core parts for dealing with Ansible concepts,
57
71
  usable by foreman_ansible or smart_proxy_ansible to delegate the execution.
@@ -92,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
106
  version: '0'
93
107
  requirements: []
94
108
  rubyforge_project:
95
- rubygems_version: 2.6.14
109
+ rubygems_version: 2.7.3
96
110
  signing_key:
97
111
  specification_version: 4
98
112
  summary: 'Ansible integration with Foreman (theforeman.org): core bits'