foreman_ansible_core 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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'