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