39 lines
813 B
Python
39 lines
813 B
Python
|
import json
|
||
|
import os
|
||
|
import sys
|
||
|
import ansible_runner
|
||
|
|
||
|
|
||
|
PLAYBOOK = '''
|
||
|
- hosts: localhost
|
||
|
gather_facts: False
|
||
|
tasks:
|
||
|
- set_fact:
|
||
|
foo: bar
|
||
|
'''
|
||
|
|
||
|
# the first positional arg should be where the artifacts live
|
||
|
output_dir = sys.argv[1]
|
||
|
|
||
|
invdir = os.path.join(output_dir, 'inventory')
|
||
|
if not os.path.isdir(invdir):
|
||
|
os.makedirs(invdir)
|
||
|
with open(os.path.join(invdir, 'hosts'), 'w') as f:
|
||
|
f.write('localhost\n')
|
||
|
pbfile = os.path.join(output_dir, 'test.yml')
|
||
|
with open(pbfile, 'w') as f:
|
||
|
f.write(PLAYBOOK)
|
||
|
|
||
|
r = ansible_runner.run(private_data_dir=output_dir, playbook='test.yml')
|
||
|
|
||
|
data = {
|
||
|
'rc': r.rc,
|
||
|
'status': r.status,
|
||
|
'events': [x['event'] for x in r.events],
|
||
|
'stats': r.stats
|
||
|
}
|
||
|
|
||
|
# insert this header for the flask controller
|
||
|
print('#STARTJSON')
|
||
|
json.dump(data, sys.stdout)
|