需要从检查模式执行的Ansible Playbook输出(干式运行)中生成CSV文件报告



我正在扮演一个角色,可以使用Ansible进行系统硬化,看起来不错,希望生成一个带有以下字段的'csv'文件 - {ip_address-)在执行剧本之前。想法是在执行前获取报告。

以下是剧本的样本输出:

TASK [system_hardening : Include OS Specific Variables] ************************
ok: [192.168.10.10]
TASK [system_hardening : Configure NTP - Install Package] **********************
ok: [192.168.10.10]
TASK [system_hardening : Disable chronyd services] *****************************
ok: [192.168.10.10]
TASK [system_hardening : Set some kernel parameters] ***************************
changed: [192.168.10.10] => (item={u'regexp': u'server 0.rhel.pool.ntp.org iburst', u'line': u'server google.com iburst'})
changed: [192.168.10.10] => (item={u'regexp': u'server 1.rhel.pool.ntp.org iburst', u'line': u'server  google.com iburst'})
changed: [192.168.10.10] => (item={u'regexp': u'server 2.rhel.pool.ntp.org iburst', u'line': u'server  google.com iburst'})
changed: [192.168.10.10] => (item={u'regexp': u'server 3.rhel.pool.ntp.org iburst', u'line': u'server  google.com iburst'})
TASK [system_hardening : restart ntp services] *********************************
changed: [192.168.10.10]
TASK [system_hardening : Set Password Requirement Parameters Using pam_cracklib (Install)] ***
ok: [192.168.10.10]
TASK [system_hardening : Ensure password reuse is limited (/etc/pam.d/system-auth)] ***
changed: [192.168.10.10]
TASK [system_hardening : Ensure password reuse is limited (/etc/pam.d/password-auth)] ***
changed: [192.168.10.10]

必需的CSV是

IP_Address,Task_Name, Status
192.168.10.10 ,SSH_Checks ,ok
192.168.10.11, SSH_Checks,changed

请提供任何输入。

我看到Ansible有一个JSON回调。它设置了一个可换句话说以显示通常以JSON格式进入屏幕的输出。您可能会摄入JSON数据并轻松将其转换为CSV。这是一篇帖子,显示了如何进行转换。

这是帖子中的脚本:

# Python program to convert 
# JSON file to CSV 

import json 
import csv 

# Opening JSON file and loading the data 
# into the variable data 
with open('data.json') as json_file: 
    data = json.load(json_file) 
employee_data = data['emp_details'] 
# now we will open a file for writing 
data_file = open('data_file.csv', 'w') 
# create the csv writer object 
csv_writer = csv.writer(data_file) 
# Counter variable used for writing 
# headers to the CSV file 
count = 0
for emp in employee_data: 
    if count == 0: 
        # Writing headers of CSV file 
        header = emp.keys() 
        csv_writer.writerow(header) 
        count += 1
    # Writing data of CSV file 
    csv_writer.writerow(emp.values()) 
data_file.close() 
ansible-doc -t callback -l

列出可用的插件来管理Stdout。如果不适合,则可以写一个。

最新更新