在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())
上面的代码中,首先创建了DataLoader、InventoryManager和VariableManager对象用于加载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任务结果的示例代码。可以根据实际需求进行调整和修改。
