我正在扮演一个角色,可以使用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。如果不适合,则可以写一个。