foreman_ansible_core 3.0.1 → 3.0.2

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
- SHA256:
3
- metadata.gz: 3a2a8033b0b49e4265b56fa56a0376ca02cde2f293a57c618039c60087014381
4
- data.tar.gz: 98166355302fab2ab9d5624699cd6cfe6d880d6161b304b689f6410a1006c0f1
2
+ SHA1:
3
+ metadata.gz: 3d2701f33f04f30fc268f07f895f402ae8d87b7a
4
+ data.tar.gz: 569411abe75f0ecdb5f5f45df35be14c9e9c3dd9
5
5
  SHA512:
6
- metadata.gz: 4ec94ef02708b8dd9403e630abf2f3f82a65503124dbcef17ee4f3ca9e78e663d9dd8b2ce89ea43d37641ec13c5b81cd2c96d25dbf7bf3b13b8fbad5d189631e
7
- data.tar.gz: 199d21b8a88c256ece9fccc356f580f46d2334fbd87b7310f39043ebdce7560e37d10338ef73b34f4c7af24ed8940b556314faeba74c5206e8fa453a0ce7542c
6
+ metadata.gz: 51ee5269d539e37feedff2df13b82822c0f09ce5be4adba3be8ff63297b71fbe4cf51a6ca93ebfd6390cfd8f1725b1fbedb21f305e94cc3325b8f50c0cac1d98
7
+ data.tar.gz: 4b6c461a3883d4b7ece4072dc537d42c0a367063185778baae53bf1fa2687d4a794f909aca604b84ceddd7cf4a28dd621b856405e9343551245ff085d6ef4d55
@@ -5,7 +5,7 @@ module ForemanAnsibleCore
5
5
 
6
6
  def initialize(input, suspended_action:)
7
7
  super input, :suspended_action => suspended_action
8
- @inventory = rebuild_inventory(input)
8
+ @inventory = rebuild_secrets(rebuild_inventory(input), input)
9
9
  @playbook = input.values.first[:input][:action_input][:script]
10
10
  @root = working_dir
11
11
  end
@@ -41,7 +41,7 @@ module ForemanAnsibleCore
41
41
  logger.debug("[foreman_ansible] - parsing event file #{event_file}")
42
42
  begin
43
43
  event = JSON.parse(File.read(event_file))
44
- if (hostname = event['event_data']['host'])
44
+ if (hostname = event.dig('event_data', 'host'))
45
45
  handle_host_event(hostname, event)
46
46
  else
47
47
  handle_broadcast_data(event)
@@ -62,7 +62,7 @@ module ForemanAnsibleCore
62
62
  when 'runner_on_unreachable'
63
63
  publish_exit_status_for(hostname, 1)
64
64
  when 'runner_on_failed'
65
- publish_exit_status_for(hostname, 2) if event['ignore_errors'].nil?
65
+ publish_exit_status_for(hostname, 2) if event.dig('event_data', 'ignore_errors').nil?
66
66
  end
67
67
  end
68
68
 
@@ -120,7 +120,7 @@ module ForemanAnsibleCore
120
120
  def rebuild_inventory(input)
121
121
  action_inputs = input.values.map { |hash| hash[:input][:action_input] }
122
122
  hostnames = action_inputs.map { |hash| hash[:name] }
123
- inventories = action_inputs.map { |hash| JSON.parse(hash[:ansible_inventory]) }
123
+ inventories = action_inputs.map { |hash| hash[:ansible_inventory] }
124
124
  host_vars = inventories.map { |i| i['_meta']['hostvars'] }.reduce(&:merge)
125
125
 
126
126
  { '_meta' => { 'hostvars' => host_vars },
@@ -138,6 +138,21 @@ module ForemanAnsibleCore
138
138
  Dir.mktmpdir(nil, File.expand_path(dir))
139
139
  end
140
140
  end
141
+
142
+ def rebuild_secrets(inventory, input)
143
+ input.each do |host, host_input|
144
+ secrets = host_input['input']['action_input']['secrets']
145
+ per_host = secrets['per-host'][host]
146
+
147
+ new_secrets = {
148
+ 'ansible_ssh_pass' => inventory['ssh_password'] || per_host['ansible_ssh_pass'],
149
+ 'ansible_sudo_pass' => inventory['sudo_password'] || per_host['ansible_sudo_pass']
150
+ }
151
+ inventory['_meta']['hostvars'][host].update(new_secrets)
152
+ end
153
+
154
+ inventory
155
+ end
141
156
  end
142
157
  end
143
158
  end
@@ -14,7 +14,7 @@ module ForemanAnsibleCore
14
14
 
15
15
  def initialize(inventory, playbook, options = {}, suspended_action:)
16
16
  super :suspended_action => suspended_action
17
- @inventory = inventory
17
+ @inventory = rebuild_secrets(inventory, options[:secrets])
18
18
  unknown_hosts.each do |host|
19
19
  add_to_known_hosts(host)
20
20
  end
@@ -52,7 +52,7 @@ module ForemanAnsibleCore
52
52
 
53
53
  def write_inventory
54
54
  ensure_directory(File.dirname(inventory_file))
55
- File.write(inventory_file, @inventory)
55
+ File.write(inventory_file, JSON.dump(@inventory))
56
56
  end
57
57
 
58
58
  def write_playbook
@@ -103,7 +103,7 @@ module ForemanAnsibleCore
103
103
  end
104
104
 
105
105
  def unknown_hosts
106
- JSON.parse(@inventory)['all']['hosts'].select do |host|
106
+ @inventory['all']['hosts'].select do |host|
107
107
  Net::SSH::KnownHosts.search_for(host).empty?
108
108
  end
109
109
  end
@@ -118,6 +118,20 @@ module ForemanAnsibleCore
118
118
  logger.error('[foreman_ansible] - Failed to save host key for '\
119
119
  "#{host}: #{e}")
120
120
  end
121
+
122
+ def rebuild_secrets(inventory, secrets)
123
+ inventory['all']['hosts'].each do |name|
124
+ per_host = secrets['per-host'][name]
125
+
126
+ new_secrets = {
127
+ 'ansible_ssh_pass' => inventory['ssh_password'] || per_host['ansible_ssh_pass'],
128
+ 'ansible_sudo_pass' => inventory['sudo_password'] || per_host['ansible_sudo_pass']
129
+ }
130
+ inventory['_meta']['hostvars'][name].update(new_secrets)
131
+ end
132
+
133
+ inventory
134
+ end
121
135
  end
122
136
  end
123
137
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ForemanAnsibleCore
4
- VERSION = '3.0.1'
4
+ VERSION = '3.0.2'
5
5
  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: 3.0.1
4
+ version: 3.0.2
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: 2019-09-06 00:00:00.000000000 Z
11
+ date: 2019-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -106,7 +106,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
108
  requirements: []
109
- rubygems_version: 3.0.3
109
+ rubyforge_project:
110
+ rubygems_version: 2.6.14
110
111
  signing_key:
111
112
  specification_version: 4
112
113
  summary: 'Ansible integration with Foreman (theforeman.org): core bits'