foreman_ansible_core 3.0.4 → 4.1.1
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
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 278c99763d5ca8b32972c482295e69eeb169361d9672676698f8e86b9fd7b280
|
4
|
+
data.tar.gz: 9685147c5aceff5a56228a6a1cb62bd68d3c70f8a86d8abf53c1a5d93c514ada
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff78d8748767c661088e575b1085090e0d6f4c863422dd7facb00c26dc1bbc1b38afc81b3f39a0817a27ee1108db6efde79cd339176d18db18612dc08af3972a
|
7
|
+
data.tar.gz: 639a28fa06bce26cee23f746aed5192d7b909b81680b4186a4180d73f570742424e71bcaefa64e52db3405534604c339df2cf38d3c87fdd60b5eeb848811216c
|
@@ -8,9 +8,12 @@ module ForemanAnsibleCore
|
|
8
8
|
def initialize(input, suspended_action:)
|
9
9
|
super input, :suspended_action => suspended_action
|
10
10
|
@inventory = rebuild_secrets(rebuild_inventory(input), input)
|
11
|
-
|
11
|
+
action_input = input.values.first[:input][:action_input]
|
12
|
+
@playbook = action_input[:script]
|
12
13
|
@root = working_dir
|
13
|
-
@verbosity_level =
|
14
|
+
@verbosity_level = action_input[:verbosity_level]
|
15
|
+
@rex_command = action_input[:remote_execution_command]
|
16
|
+
@check_mode = action_input[:check_mode]
|
14
17
|
end
|
15
18
|
|
16
19
|
def start
|
@@ -38,6 +41,11 @@ module ForemanAnsibleCore
|
|
38
41
|
end
|
39
42
|
end
|
40
43
|
|
44
|
+
def close
|
45
|
+
super
|
46
|
+
FileUtils.remove_entry(@root) if @tmp_working_dir
|
47
|
+
end
|
48
|
+
|
41
49
|
private
|
42
50
|
|
43
51
|
def handle_event_file(event_file)
|
@@ -72,10 +80,16 @@ module ForemanAnsibleCore
|
|
72
80
|
def handle_broadcast_data(event)
|
73
81
|
log_event("broadcast", event)
|
74
82
|
if event['event'] == 'playbook_on_stats'
|
83
|
+
failures = event.dig('event_data', 'failures') || {}
|
75
84
|
header, *rows = event['stdout'].strip.lines.map(&:chomp)
|
76
85
|
@outputs.keys.select { |key| key.is_a? String }.each do |host|
|
77
86
|
line = rows.find { |row| row =~ /#{host}/ }
|
78
87
|
publish_data_for(host, [header, line].join("\n"), 'stdout')
|
88
|
+
|
89
|
+
# If the task has been rescued, it won't consider a failure
|
90
|
+
if @exit_statuses[host].to_i != 0 && failures[host].to_i <= 0
|
91
|
+
publish_exit_status_for(host, 0)
|
92
|
+
end
|
79
93
|
end
|
80
94
|
else
|
81
95
|
broadcast_data(event['stdout'] + "\n", 'stdout')
|
@@ -99,7 +113,10 @@ module ForemanAnsibleCore
|
|
99
113
|
end
|
100
114
|
|
101
115
|
def start_ansible_runner
|
102
|
-
|
116
|
+
env = {}
|
117
|
+
env['FOREMAN_CALLBACK_DISABLE'] = '1' if @rex_command
|
118
|
+
command = [env, 'ansible-runner', 'run', @root, '-p', 'playbook.yml']
|
119
|
+
command << '--cmdline' << '"--check"' if check_mode?
|
103
120
|
command << verbosity if verbose?
|
104
121
|
initialize_command(*command)
|
105
122
|
logger.debug("[foreman_ansible] - Running command '#{command.join(' ')}'")
|
@@ -113,6 +130,10 @@ module ForemanAnsibleCore
|
|
113
130
|
@verbosity_level.to_i.positive?
|
114
131
|
end
|
115
132
|
|
133
|
+
def check_mode?
|
134
|
+
@check_mode == true
|
135
|
+
end
|
136
|
+
|
116
137
|
def prepare_directory_structure
|
117
138
|
inner = %w[inventory project].map { |part| File.join(@root, part) }
|
118
139
|
([@root] + inner).each do |path|
|
@@ -133,7 +154,12 @@ module ForemanAnsibleCore
|
|
133
154
|
action_inputs = input.values.map { |hash| hash[:input][:action_input] }
|
134
155
|
hostnames = action_inputs.map { |hash| hash[:name] }
|
135
156
|
inventories = action_inputs.map { |hash| hash[:ansible_inventory] }
|
136
|
-
host_vars = inventories.map { |i| i['_meta']['hostvars'] }.reduce(
|
157
|
+
host_vars = inventories.map { |i| i['_meta']['hostvars'] }.reduce({}) do |acc, hosts|
|
158
|
+
hosts.reduce(acc) do |inner_acc, (hostname, vars)|
|
159
|
+
vars[:ansible_ssh_private_key_file] ||= ForemanRemoteExecutionCore.settings[:ssh_identity_key_file]
|
160
|
+
inner_acc.merge(hostname => vars)
|
161
|
+
end
|
162
|
+
end
|
137
163
|
|
138
164
|
{ '_meta' => { 'hostvars' => host_vars },
|
139
165
|
'all' => { 'hosts' => hostnames,
|
@@ -157,8 +183,8 @@ module ForemanAnsibleCore
|
|
157
183
|
per_host = secrets['per-host'][host]
|
158
184
|
|
159
185
|
new_secrets = {
|
160
|
-
'
|
161
|
-
'
|
186
|
+
'ansible_password' => inventory['ssh_password'] || per_host['ansible_password'],
|
187
|
+
'ansible_become_password' => inventory['effective_user_password'] || per_host['ansible_become_password']
|
162
188
|
}
|
163
189
|
inventory['_meta']['hostvars'][host].update(new_secrets)
|
164
190
|
end
|
@@ -124,8 +124,8 @@ module ForemanAnsibleCore
|
|
124
124
|
per_host = secrets['per-host'][name]
|
125
125
|
|
126
126
|
new_secrets = {
|
127
|
-
'
|
128
|
-
'
|
127
|
+
'ansible_password' => inventory['ssh_password'] || per_host['ansible_password'],
|
128
|
+
'ansible_become_password' => inventory['effective_user_password'] || per_host['ansible_become_password']
|
129
129
|
}
|
130
130
|
inventory['_meta']['hostvars'][name].update(new_secrets)
|
131
131
|
end
|
@@ -17,6 +17,12 @@ module ForemanAnsibleCore
|
|
17
17
|
Runner::AnsibleRunner
|
18
18
|
end
|
19
19
|
|
20
|
+
# Discard everything apart from hostname to be able to tell the actions
|
21
|
+
# apart when debugging
|
22
|
+
def transform_input(input)
|
23
|
+
{ 'action_input' => input['action_input'].slice('name') }
|
24
|
+
end
|
25
|
+
|
20
26
|
# def self.input_format
|
21
27
|
# {
|
22
28
|
# $UUID => {
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_ansible_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Lobato Garcia
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: foreman_remote_execution_core
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '1.1'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '1.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: foreman-tasks-core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.3.2
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: foreman_remote_execution_core
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.1'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.1'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: net-ssh
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,7 +77,7 @@ homepage: https://github.com/theforeman/foreman_ansible
|
|
91
77
|
licenses:
|
92
78
|
- GPL-3.0
|
93
79
|
metadata: {}
|
94
|
-
post_install_message:
|
80
|
+
post_install_message:
|
95
81
|
rdoc_options: []
|
96
82
|
require_paths:
|
97
83
|
- lib
|
@@ -106,8 +92,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
92
|
- !ruby/object:Gem::Version
|
107
93
|
version: '0'
|
108
94
|
requirements: []
|
109
|
-
rubygems_version: 3.
|
110
|
-
signing_key:
|
95
|
+
rubygems_version: 3.1.2
|
96
|
+
signing_key:
|
111
97
|
specification_version: 4
|
112
98
|
summary: 'Ansible integration with Foreman (theforeman.org): core bits'
|
113
99
|
test_files: []
|