我正在运行一个角色来做系统硬化使用ansible,这看起来很好,寻找生成一个'CSV‘文件与以下字段- {IP_address,Task_Name,状态( ok或更改)之前执行的剧本。我的想法是在执行之前获得一份报告。
以下是实战手册的示例输出:
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请输入任何内容。
发布于 2019-02-25 16:02:45
ansible-doc -t callback -l列出可用于manage stdout的插件。如果没有合适的选项,可以选择write one。
发布于 2020-05-17 12:50:55
我看到有一个JSON callback for Ansible。它将Ansible设置为以JSON格式显示通常会显示在屏幕上的输出。您可能会摄取JSON数据并轻松地将其转换为CSV。这里有一篇关于how to do the conversion的文章。
以下是帖子中的脚本:
# 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() https://stackoverflow.com/questions/54855755
复制相似问题