欢迎访问宙启技术站
智能推送

在Python中使用ansible.utils.display.Display()函数以易读的格式显示Ansible任务的结果。

发布时间:2023-12-14 02:12:58

在Python中,可以使用ansible.utils.display.Display()函数以易读的格式显示Ansible任务的结果。

首先,确保已安装Ansible和Python的ansible包。然后,导入ansible模块和ansible.utils.display.Display类:

import ansible.constants
from ansible import context
from ansible.utils.display import Display

然后,创建一个Display对象,并设置适当的上下文:

# 创建Display对象
display = Display()

# 设置上下文
context.CLIARGS = ansible.constants.CLIARGS
context.display = display

接下来,运行Ansible任务并捕获结果。可以使用ansible.utils.display task_summary()方法打印任务概要,以及使用ansible.utils.display.display()方法逐步打印任务的详细输出。

# 运行Ansible任务
playbook_path = '/path/to/playbook.yml'
loader = DataLoader()
passwords = {}

inventory = InventoryManager(loader=loader, sources='localhost,')
variable_manager = VariableManager(loader=loader, inventory=inventory)
playbooks = [playbook_path]

playbook_executor = PlaybookExecutor(
    playbooks=playbooks,
    inventory=inventory,
    variable_manager=variable_manager,
    loader=loader,
    passwords=passwords
)

# 执行任务
playbook_executor.run()

# 打印任务概要
display.task_summary(playbook_executor.stats)

# 打印任务详细输出
display.display(playbook_executor.playbook.name)

这将以易读的格式显示Ansible任务的结果。可以根据需要自定义显示格式。另外,还可以使用Display对象的其他方法来显示不同的信息,例如display.banner()display.warning()等。

下面是一个完整的示例代码:

import ansible.constants
from ansible import context
from ansible.utils.display import Display
from ansible.executor.playbook_executor import PlaybookExecutor
from ansible.inventory.manager import InventoryManager
from ansible.parsing.dataloader import DataLoader
from ansible.vars.manager import VariableManager

# 创建Display对象
display = Display()

# 设置上下文
context.CLIARGS = ansible.constants.CLIARGS
context.display = display

# 运行Ansible任务
playbook_path = '/path/to/playbook.yml'
loader = DataLoader()
passwords = {}

inventory = InventoryManager(loader=loader, sources='localhost,')
variable_manager = VariableManager(loader=loader, inventory=inventory)
playbooks = [playbook_path]

playbook_executor = PlaybookExecutor(
    playbooks=playbooks,
    inventory=inventory,
    variable_manager=variable_manager,
    loader=loader,
    passwords=passwords
)

# 执行任务
playbook_executor.run()

# 打印任务概要
display.task_summary(playbook_executor.stats)

# 打印任务详细输出
display.display(playbook_executor.playbook.name)

通过使用ansible.utils.display.Display()函数,可以方便地以易读的方式显示Ansible任务的结果。可以根据具体需求对显示内容进行自定义。