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

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

发布时间:2023-12-14 02:11:46

在Python中,可以使用ansible.utils.display.Display()函数来显示Ansible任务的结果。Display()函数是Ansible中的一个显示类,用于在CLI、API或脚本中输出结果。

下面是一个示例代码,演示如何使用ansible.utils.display.Display()来显示Ansible任务的结果:

import ansible.constants as C
from ansible.parsing.dataloader import DataLoader
from ansible.inventory.manager import InventoryManager
from ansible.vars.manager import VariableManager
from ansible.playbook.play import Play
from ansible.playbook import Playbook
from ansible.executor.task_queue_manager import TaskQueueManager
from ansible.utils.display import Display

# 创建DataLoader、InventoryManager和VariableManager对象
loader = DataLoader()
inventory = InventoryManager(loader=loader, sources='/path/to/ansible/inventory')
variable_manager = VariableManager(loader=loader, inventory=inventory)

# 创建主机组和主机列表
group = inventory.get_group('your_group_name')
hosts = group.get_hosts()

# 创建Ansible Play对象
play = Play().load({
    'hosts': 'your_group_name',
    'gather_facts': 'no',  # 禁用收集事实
    'tasks': [
        {
            'name': 'Hello World',
            'debug': {
                'msg': 'Hello World!'
            }
        }
    ]
}, variable_manager=variable_manager, loader=loader)

# 创建Display对象
display = Display()

# 创建任务队列管理器
tqm = None
try:
    tqm = TaskQueueManager(
        inventory=inventory,
        variable_manager=variable_manager,
        loader=loader,
        stdout_callback=display
    )
    tqm.run(play)
finally:
    if tqm is not None:
        tqm.cleanup()

# 打印任务结果
display.display('Final result')
display.display(display._display.get_cached_results())

上面的代码中,首先创建了DataLoaderInventoryManagerVariableManager对象用于加载Ansible配置文件、主机清单和变量。然后,从主机组获取主机列表。

接下来,创建了一个简单的Ansible Play对象,其中包含一个debug任务用于打印“Hello World!”消息。注意,通过将stdout_callback参数设置为display对象,可以将任务结果传递给display对象进行显示。

最后,使用TaskQueueManager运行Play,并在任务运行结束后,通过display._display.get_cached_results()获取任务结果,并使用display.display()函数进行显示。

以上就是使用ansible.utils.display.Display()函数在Python中显示Ansible任务结果的示例代码。可以根据实际需求进行调整和修改。