Ansible库存导出为CSV文件

时间:2018-02-27 13:12:57

标签: csv ansible export

我正在尝试将Ansible下的服务器清单从静态列表转换为类似CSV的文件,我们在其中选择以逗号分隔的字段列表。我们可以轻松地将某些内容导入Excel以用于整合库存,其中我们有不同的Ansible实例正在运行。我们有不同的实例,因为我们拥有的不同网络无法相互通信。最终,我们希望生成一个.XLSX文件,我们可以将其自动邮寄给管理层。但也许我现在正在做梦......

1 个答案:

答案 0 :(得分:2)

您可以使用Ansible API运行setup模块。

在API documentation中,您可以看到如何运行模块,因此setup模块调用的相关部分可能如下所示:

play_source =  dict(
        name = "Ansible Play",
        hosts = 'all',
        gather_facts = 'yes',
        tasks = [{"action":{"module":"setup"}}]
    )

要解析结果,您将使用回调处理返回的数据并将其保存为CSV格式:

import csv

class ResultCallback(CallbackBase):
    def v2_runner_on_ok(self, result, **kwargs):
        host = result._host
        data = result._result
        # parse/process data
        # ....
        with open('output.csv', 'wb') as csvfile:
            csv_writer = csv.writer(csvfile, delimiter=';')
            csv_writer.writerows(parsed_data)

希望这有点帮助。